Commit 8633301e authored by one's avatar one
Browse files

Update rocHPL inputs and patches for BW1000

parent 073fee70
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
0 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
90624 Ns
1 # of NBs
512 NBs
1 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
1 Ps
1 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
32 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
1 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
0 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
0 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
360448 Ns
1 # of NBs
512 NBs
1 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
8 Ps
2 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
32 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
1 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
0 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
0 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
128000 Ns
1 # of NBs
512 NBs
1 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
2 Ps
1 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
32 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
1 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
0 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
0 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
180224 Ns
1 # of NBs
512 NBs
1 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
4 Ps
1 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
32 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
1 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
0 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
0 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
254976 Ns
1 # of NBs
512 NBs
1 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
4 Ps
2 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
32 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
2 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
5 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
1 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
0 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)
#!/bin/bash
export HSA_FORCE_FINE_GRAIN_PCIE=1
BIN_PATH=./build/mpirun_rochpl
# rochpl-bw1000-16r.patch is required
# $BIN_PATH -P 8 -Q 2 --it 6 -i HPL-16.dat
# rochpl-bw.patch is required
$BIN_PATH -P 4 -Q 2 --it 6 -i HPL-8.dat # N=512*498
$BIN_PATH -P 4 -Q 1 --it 6 -i HPL-4.dat
$BIN_PATH -P 2 -Q 1 --it 6 -i HPL-2.dat
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6b80b24..563122a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -83,7 +83,7 @@ foreach(i ${rochpl_device_source})
endforeach()
# HIP flags workaround while target_compile_options does not work
-list(APPEND HIP_HIPCC_FLAGS "-Wno-unused-command-line-argument -Wno-deprecated-declarations -fPIE -fopenmp")
+list(APPEND HIP_HIPCC_FLAGS "-Wno-unused-command-line-argument -Wno-deprecated-declarations -fPIE -fopenmp --gpu-max-threads-per-block=1024")
list(APPEND CMAKE_HOST_FLAGS "-Wno-deprecated-declarations")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -94,25 +94,51 @@ else()
list(APPEND CMAKE_HOST_FLAGS "-O3;-march=native")
endif()
-# GPU arch targets
-set(TARGETS "gfx900;gfx906")
-if(HIP_VERSION VERSION_GREATER_EQUAL "3.7")
- set(TARGETS "${TARGETS};gfx908")
-endif()
-if(HIP_VERSION VERSION_GREATER_EQUAL "4.3")
- set(TARGETS "${TARGETS};gfx90a")
-endif()
-if (HIP_VERSION VERSION_GREATER_EQUAL "5.7")
- set(TARGETS "${TARGETS};gfx942")
-endif()
-if (HIP_VERSION VERSION_GREATER_EQUAL "6.5")
- set(TARGETS "${TARGETS};gfx950;gfx1100")
+set(ARCHS "") # use plural to indicate list
+if(DEFINED HPL_BUILD_ARCH AND NOT HPL_BUILD_ARCH STREQUAL "")
+ string(REPLACE "," ";" ARCHS "${HPL_BUILD_ARCH}")
+ list(TRANSFORM ARCHS STRIP)
+ list(REMOVE_DUPLICATES ARCHS)
+ message(STATUS "Using manually specified GPU targets: ${ARCHS}")
+else()
+ message(STATUS "Detecting available architecture")
+ ############ Find using rocminfo #####################
+ find_program(ROCMINFO_EXECUTABLE rocminfo)
+ if(ROCMINFO_EXECUTABLE)
+ execute_process(
+ COMMAND ${ROCMINFO_EXECUTABLE}
+ OUTPUT_VARIABLE ROCMINFO_OUTPUT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ # 1) Only match lines where the token follows "Name:"
+ string(REGEX MATCHALL "Name:[ \t]+gfx[0-9a-z]+" ARCH_MATCHES "${ROCMINFO_OUTPUT}")
+
+ # 2) Strip the leading "Name: " to keep just gfx tokens
+ string(REGEX REPLACE "Name:[ \t]+" "" ARCHS "${ARCH_MATCHES}")
+
+ # 3) Remove duplicates
+ list(REMOVE_DUPLICATES ARCHS)
+
+ foreach(match ${ARCHS})
+ string(REGEX REPLACE "Name:\\s+" "" arch "${match}")
+ list(APPEND ARCH "${arch}")
+ endforeach()
+ endif()
endif()
if (HIP_VERSION VERSION_GREATER_EQUAL "7.0")
set(TARGETS "${TARGETS};gfx1201")
endif()
-foreach(target ${TARGETS})
+if(ARCHS STREQUAL "")
+ message(FATAL_ERROR "No GPU architectures detected via rocminfo and no BUILD_ARCH specified. Use ./install.sh --arch=gfxXXX")
+endif()
+
+message(STATUS "Building for GPU architecture: ${ARCHS}")
+
+# Generate HIP_HIPCC_FLAGS
+foreach(target ${ARCHS})
list(APPEND HIP_HIPCC_FLAGS "--offload-arch=${target}")
endforeach()
diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
index 6d6be5d..468420e 100644
--- a/cmake/Dependencies.cmake
+++ b/cmake/Dependencies.cmake
@@ -101,7 +101,8 @@ if(NOT ROCM_FOUND)
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${PROJECT_EXTERN_DIR}/rocm-cmake-${rocm_cmake_tag}.zip
WORKING_DIRECTORY ${PROJECT_EXTERN_DIR})
- find_package(ROCmCMakeBuildTools REQUIRED CONFIG PATHS ${PROJECT_EXTERN_DIR}/rocm-cmake-${rocm_cmake_tag})
+ # find_package(ROCmCMakeBuildTools REQUIRED CONFIG PATHS ${PROJECT_EXTERN_DIR}/rocm-cmake-${rocm_cmake_tag})
+ set(CMAKE_MODULE_PATH "${PROJECT_EXTERN_DIR}/rocm-cmake-${rocm_cmake_tag}/share/rocm/cmake;${CMAKE_MODULE_PATH}")
endif()
include(ROCMSetupVersion)
diff --git a/install.sh b/install.sh
index b30a3fb..245341e 100755
--- a/install.sh
+++ b/install.sh
@@ -17,6 +17,7 @@ function display_help()
echo " [--with-rocm=<dir>] Path to ROCm install (Default: /opt/rocm)"
echo " [--with-rocblas=<dir>] Path to rocBLAS library (Default: /opt/rocm/rocblas)"
echo " [--with-mpi=<dir>] Path to external MPI install (Default: clone+build OpenMPI)"
+ echo " [--arch] Specify comma separated architecture list to build (Default: detect from rocm_agent_enumerator)"
echo " [--with-mpi-gtl=<dir>] Path to external MPI-GTL install (Optional: defaults to no gtl support)"
echo " [--verbose-print] Verbose output during HPL setup (Default: true)"
echo " [--progress-report] Print progress report to terminal during HPL run (Default: true)"
@@ -33,7 +34,7 @@ supported_distro( )
fi
case "${ID}" in
- debian|linuxmint|ubuntu|centos|rhel|fedora|sles|tencentos)
+ debian|linuxmint|ubuntu|centos|rhel|fedora|sles|tencentos|kylin|rocky)
true
;;
*) printf "This script is currently supported on Debian, Linuxmint, Ubuntu, CentOS, RHEL, Fedora and SLES\n"
@@ -68,11 +69,11 @@ exit_with_error( )
printf "sudo apt install -y ${library_dependencies_ubuntu[*]}\n"
;;
- centos|rhel|tencentos)
+ centos|rhel|tencentos|kylin)
printf "sudo yum -y --nogpgcheck install ${library_dependencies_centos[*]}\n"
;;
- fedora)
+ fedora|rocky)
printf "sudo dnf install -y ${library_dependencies_fedora[*]}\n"
;;
@@ -152,6 +153,11 @@ install_openmpi( )
exit 3
fi
+ UCX_ROOT="$(pwd)/tpl/ucx"
+ export LD_LIBRARY_PATH="${UCX_ROOT}/lib:${UCX_ROOT}/lib64:${LD_LIBRARY_PATH}"
+ export LIBRARY_PATH="${UCX_ROOT}/lib:${UCX_ROOT}/lib64:${LIBRARY_PATH}"
+ export CPATH="${UCX_ROOT}/include:${CPATH}"
+
if [ ! -d "./tpl/openmpi" ]; then
mkdir -p tpl && cd tpl
git clone --branch v5.0.7 --recursive https://github.com/open-mpi/ompi.git openmpi
@@ -184,6 +190,12 @@ install_openmpi( )
echo "Error: OpenMPI install unsuccessful."
exit_with_error 2
fi
+
+ OPENMPI_ROOT="$(pwd)/tpl/openmpi"
+ export LD_LIBRARY_PATH="${OPENMPI_ROOT}/lib:${LD_LIBRARY_PATH}"
+ export LIBRARY_PATH="${OPENMPI_ROOT}/lib:${LIBRARY_PATH}"
+ export CPATH="${OPENMPI_ROOT}/include:${CPATH}"
+ export OPAL_PREFIX=${OPENMPI_ROOT}
}
# #################################################
@@ -232,7 +244,7 @@ enable_tracing=false
# check if we have a modern version of getopt that can handle whitespace and long parameters
getopt -T
if [[ $? -eq 4 ]]; then
- GETOPT_PARSE=$(getopt --name "${0}" --longoptions help,debug,prefix:,with-rocm:,with-mpi:,with-mpi-gtl:,with-rocblas:,verbose-print:,progress-report:,detailed-timing:,enable-tracing: --options hg -- "$@")
+ GETOPT_PARSE=$(getopt --name "${0}" --longoptions help,debug,prefix:,with-rocm:,with-mpi:,with-mpi-gtl:,with-rocblas:,verbose-print:,arch:,progress-report:,detailed-timing:,enable-tracing: --options hg -- "$@")
else
echo "Need a new version of getopt"
exit_with_error 1
@@ -263,6 +275,9 @@ while true; do
--with-mpi)
with_mpi=${2}
shift 2 ;;
+ --arch)
+ arch=${2}
+ shift 2 ;;
--with-mpi-gtl)
with_mpi_gtl=${2}
shift 2 ;;
@@ -347,6 +362,9 @@ pushd .
if [[ "${enable_tracing}" == on || "${enable_tracing}" == true || "${enable_tracing}" == 1 || "${enable_tracing}" == enabled ]]; then
cmake_common_options="${cmake_common_options} -DHPL_TRACING=ON"
fi
+ if [[ -n "${arch}" ]]; then
+ cmake_common_options="${cmake_common_options} -DHPL_BUILD_ARCH=${arch}"
+ fi
shopt -u nocasematch
# Build library with AMD toolchain because of existence of device kernels
diff --git a/scripts/mpirun_rochpl.in b/scripts/mpirun_rochpl.in diff --git a/scripts/mpirun_rochpl.in b/scripts/mpirun_rochpl.in
index 155f502..3227f7d 100755 index 155f502..3984e62 100755
--- a/scripts/mpirun_rochpl.in --- a/scripts/mpirun_rochpl.in
+++ b/scripts/mpirun_rochpl.in +++ b/scripts/mpirun_rochpl.in
@@ -46,7 +46,7 @@ supported_distro( ) @@ -46,7 +46,7 @@ supported_distro( )
...@@ -231,13 +49,14 @@ index 155f502..3227f7d 100755 ...@@ -231,13 +49,14 @@ index 155f502..3227f7d 100755
exit 0 exit 0
;; ;;
-P) -P)
@@ -218,5 +226,24 @@ if [ ! -z "${devices}" ]; then @@ -218,5 +226,25 @@ if [ ! -z "${devices}" ]; then
rochpl_args+=" --devices=${devices}" rochpl_args+=" --devices=${devices}"
fi fi
+echo "Copying files..." +echo "Copying files..."
+scp -P 3333 $0 node02:/workspace/build/ +scp -P 3333 $0 node02:/workspace/build/
+scp -P 3333 $(dirname $(readlink -f "$0"))/run_rochpl node02:/workspace/build/ +scp -P 3333 ./build/run_rochpl node02:/workspace/build/
+scp -P 3333 ./${filename} node02:/workspace/
+ +
#run #run
-${mpi_bin} -np ${np} ${mpi_args} ${rochpl_runscript} ${rochpl_args} -${mpi_bin} -np ${np} ${mpi_args} ${rochpl_runscript} ${rochpl_args}
...@@ -258,7 +77,7 @@ index 155f502..3227f7d 100755 ...@@ -258,7 +77,7 @@ index 155f502..3227f7d 100755
+ -H node01:8,node02:8 \ + -H node01:8,node02:8 \
+ ${rochpl_runscript} ${rochpl_args} + ${rochpl_runscript} ${rochpl_args}
diff --git a/scripts/run_rochpl.in b/scripts/run_rochpl.in diff --git a/scripts/run_rochpl.in b/scripts/run_rochpl.in
index 1522e5d..75aca98 100755 index 1522e5d..81fed8a 100755
--- a/scripts/run_rochpl.in --- a/scripts/run_rochpl.in
+++ b/scripts/run_rochpl.in +++ b/scripts/run_rochpl.in
@@ -46,7 +46,7 @@ supported_distro( ) @@ -46,7 +46,7 @@ supported_distro( )
...@@ -296,14 +115,14 @@ index 1522e5d..75aca98 100755 ...@@ -296,14 +115,14 @@ index 1522e5d..75aca98 100755
+# Hard-coded IB mapping for now +# Hard-coded IB mapping for now
+declare -a IB_MAP=( +declare -a IB_MAP=(
+ "mlx5_1:1" # GPU 0 -> IB on NUMA 3 + "mlx5_1:1" # GPU 0 -> NUMA 3
+ "mlx5_2:1" # GPU 1 -> IB on NUMA 3 + "mlx5_2:1" # GPU 1 -> NUMA 3
+ "mlx5_3:1" # GPU 2 -> IB on NUMA 0 + "mlx5_3:1" # GPU 2 -> NUMA 0
+ "mlx5_4:1" # GPU 3 -> IB on NUMA 0 + "mlx5_4:1" # GPU 3 -> NUMA 0
+ "mlx5_7:1" # GPU 4 -> IB on NUMA 7 + "mlx5_7:1" # GPU 4 -> NUMA 7
+ "mlx5_8:1" # GPU 5 -> IB on NUMA 7 + "mlx5_8:1" # GPU 5 -> NUMA 7
+ "mlx5_9:1" # GPU 6 -> IB on NUMA 4 + "mlx5_9:1" # GPU 6 -> NUMA 4
+ "mlx5_10:1" # GPU 7 -> IB on NUMA 4 + "mlx5_10:1" # GPU 7 -> NUMA 4
+) +)
+ +
+myib=${IB_MAP[$rank]} +myib=${IB_MAP[$rank]}
...@@ -323,29 +142,3 @@ index 1522e5d..75aca98 100755 ...@@ -323,29 +142,3 @@ index 1522e5d..75aca98 100755
-${rochpl_bin} ${rochpl_args} -${rochpl_bin} ${rochpl_args}
+#${rochpl_bin} ${rochpl_args} +#${rochpl_bin} ${rochpl_args}
+numactl -N ${mynuma} -m ${mynuma} ${rochpl_bin} ${rochpl_args} +numactl -N ${mynuma} -m ${mynuma} ${rochpl_bin} ${rochpl_args}
diff --git a/src/HPL_pdtest.cpp b/src/HPL_pdtest.cpp
index 94a0d3f..3135763 100644
--- a/src/HPL_pdtest.cpp
+++ b/src/HPL_pdtest.cpp
@@ -212,7 +212,7 @@ void HPL_pdtest(HPL_T_test* TEST,
ctime(&current_time_end));
}
#ifdef HPL_PROGRESS_REPORT
- printf("Final Score: %7.4e GFLOPS \n", Gflops);
+ printf("Final Score: %7.9e GFLOPS \n", Gflops);
#endif
}
#ifdef HPL_DETAILED_TIMING
diff --git a/src/pgesv/HPL_pdgesv.cpp b/src/pgesv/HPL_pdgesv.cpp
index d6c99c3..280a9a5 100644
--- a/src/pgesv/HPL_pdgesv.cpp
+++ b/src/pgesv/HPL_pdgesv.cpp
@@ -336,7 +336,7 @@ void HPL_pdgesv(HPL_T_grid* GRID, HPL_T_palg* ALGO, HPL_T_pmat* A) {
printf(" %9.3e |", step_gflops);
#endif
- printf(" %9.3e \n", gflops);
+ printf(" %9.9e \n", gflops);
}
#endif
...@@ -131,7 +131,7 @@ index 6d6be5d..d11c01a 100644 ...@@ -131,7 +131,7 @@ index 6d6be5d..d11c01a 100644
include(ROCMSetupVersion) include(ROCMSetupVersion)
diff --git a/install.sh b/install.sh diff --git a/install.sh b/install.sh
index b30a3fb..4d3284b 100755 index b30a3fb..52bb5d9 100755
--- a/install.sh --- a/install.sh
+++ b/install.sh +++ b/install.sh
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
...@@ -174,7 +174,7 @@ index b30a3fb..4d3284b 100755 ...@@ -174,7 +174,7 @@ index b30a3fb..4d3284b 100755
printf "sudo dnf install -y ${library_dependencies_fedora[*]}\n" printf "sudo dnf install -y ${library_dependencies_fedora[*]}\n"
;; ;;
@@ -105,42 +106,63 @@ check_exit_code( ) @@ -105,42 +106,62 @@ check_exit_code( )
# Clone and build OpenMPI+UCX in rochpl/tpl # Clone and build OpenMPI+UCX in rochpl/tpl
install_openmpi( ) install_openmpi( )
{ {
...@@ -260,11 +260,10 @@ index b30a3fb..4d3284b 100755 ...@@ -260,11 +260,10 @@ index b30a3fb..4d3284b 100755
make install make install
check_exit_code 2 check_exit_code 2
- cd ../../.. - cd ../../..
+ cd ${install_dir}/..
fi fi
# Check for successful build # Check for successful build
@@ -152,31 +174,26 @@ install_openmpi( ) @@ -152,31 +173,25 @@ install_openmpi( )
exit 3 exit 3
fi fi
...@@ -307,11 +306,10 @@ index b30a3fb..4d3284b 100755 ...@@ -307,11 +306,10 @@ index b30a3fb..4d3284b 100755
make install make install
check_exit_code 2 check_exit_code 2
- cd ../../.. - cd ../../..
+ cd ${install_dir}/..
fi fi
# Check for successful build # Check for successful build
@@ -184,6 +201,11 @@ install_openmpi( ) @@ -184,6 +199,13 @@ install_openmpi( )
echo "Error: OpenMPI install unsuccessful." echo "Error: OpenMPI install unsuccessful."
exit_with_error 2 exit_with_error 2
fi fi
...@@ -320,6 +318,8 @@ index b30a3fb..4d3284b 100755 ...@@ -320,6 +318,8 @@ index b30a3fb..4d3284b 100755
+ export LIBRARY_PATH="${ompi_lib_folder}:${LIBRARY_PATH}" + export LIBRARY_PATH="${ompi_lib_folder}:${LIBRARY_PATH}"
+ export CPATH="${ompi_prefix}/include:${CPATH}" + export CPATH="${ompi_prefix}/include:${CPATH}"
+ export OPAL_PREFIX=${ompi_prefix} + export OPAL_PREFIX=${ompi_prefix}
+
+ cd ${install_dir}/..
} }
# ################################################# # #################################################
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment