赛题要求编译AMD GPU版本的cp2k版本,试了多种方法,实在编译不出来。我放弃了,这里把我之前编译的经验分享给需要的人。
我已经成功编译了带DBCSR的版本,但加速效果不明显;
也编译了AMD GPU的版本,但是运行报段错误,且一直无法解决;
当前想到的一个办法是,在grid里面直接make一个带HIP的子程序,然后make总的程序。
如下图所示,明明编译的时候没有报错,并成功生成了cp2k.psmp,但是运行报错。
可以关注这个:编译HIP版本的最新进展
编译DBCSR
使用rocm3.9.1(我用的版本,低于它的版本我没有编译成功)
先使用toolchain编译cpu版本成功,然后运行下面的指令。
注意:需要根据自己的路径修改
//***********************编译dbcsr库 start*******************
cd ~/cp2ksource/exts/dbcsr/build
//第三步:设置环境变量(CXX compiler ABI info - failed 设置环境变量)
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/public/home/godeye2021/cp2ksource/tools/toolchain/install/libxsmm-1.16.1/lib"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/public/home/godeye2021/cp2ksource/tools/toolchain/install/scalapack-2.1.0/lib"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/public/software/mpi/hpcx/v2.4.1/intel-2017.5.239/lib"
export ROCM_PATH=/public/software/compiler/rocm/rocm-3.9.1
export HIP_PATH=${ROCM_PATH/hip}
export LLVM_PATH=${ROCM_PATH}/llvm
export HIP_DEVICE_LIB_PATH=${ROCM_PATH}/amdgcn/bitcode
export FYPP_EXECUTABLE=/public/home/godeye2021/pypp/fypp-3.1/bin/fypp
第三步:去除加载模块anaconda3/5.2.0
module purge
module add compiler/devtoolset/7.3.1 mpi/hpcx/2.4.1/gcc-7.3.1 compiler/rocm/3.9.1 mathlib/fftw/3.3.8/single/gnu compiler/intel/2017.5.239
第四步:更改fypp的路径
cmake文件夹下fypp-sources.cmake的第5行fypp改为/public/home/godeye2021/pypp/fypp-3.1/bin/fypp
第五步:编译文件
/public/home/godeye2021/cmake/bin/cmake .. -DUSE_MPI=ON -DCMAKE_Fortran_COMPILER=mpifort -DCMAKE_CXX_COMPILER=hipcc -DUSE_OPENMP=OFF -DUSE_SMM=libxsmm -DUSE_ACCEL=hip -DWITH_CUDA_PROFILING=OFF -DWITH_C_API=ON -DWITH_EXAMPLES=ON -DWITH_GPU=Mi50 -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DTEST_MPI_RANKS=1 -DTEST_OMP_THREADS=1 -DCMAKE_INSTALL_PREFIX=/public/home/godeye2021/cp2ksource/exts/dbcsr-install
第六步:编译文件
make
第7步:安装
//修改exts/dbcsr/build/cmake_install.cmake
将第5行CMAKE_INSTALL_PREFIX的值设为~/cp2kfile2/cp2k-8.1/exts/dbcsr-install
make install
//***********************编译dbcsr库 end*******************
编译GPU版本
先下载develop版本(git:b5a86d8)
可以官方下载,也可以联系我下载。因为是编译后的,所以文件有点大,2.4G左右。
编译cp2k-develop最新
//第一步:进入计算节点
salloc -N 1 -n 32 --gres=dcu:4 -p PilotCup
ssh a06r4n04(类似的名称)
//第二步:进入toolchain,准备编译第三方库
cd ~/cp2kdevelop/tools/toolchain
//第三步:加载模块,准备编译环境
module purge
module add compiler/devtoolset/7.3.1 mpi/hpcx/2.4.1/gcc-7.3.1 compiler/rocm/4.0.1 apps/anaconda3/5.2.0
//第四步:编译第三方库,生成HIP版本的分支arch
./install_cp2k_toolchain.sh --with-cmake=~/cmake --with-libint=install --with-libxc=install --with-scalapack=install --with-libxsmm=install --with-fftw=install --math-mode=mkl --with-mkl=/public/software/compiler/intel/intel-compiler-2017.5.239/mkl --enable-hip=yes --gpu-ver=Mi50 --with-elpa=no
//第五步:拷贝编译安装后的第三方库到cp2k目录下的arch文件夹内
cp /public/home/godeye2021/cp2kdevelop/tools/toolchain/install/arch/* /public/home/godeye2021/cp2kdevelop/arch/
source /public/home/godeye2021/cp2kdevelop/tools/toolchain/install/setup
//第六步:到cp2k主目录,开始编译hip版本
cd ~/cp2kdevelop
make -j 32 ARCH=local_hip VERSION="psmp"
//第七步:测试生成的cp2k程序
~/cp2kdevelop/exe/local_hip/cp2k.psmp -h
这一步大概率会报错:段错误。剩下的靠你自己的了,可以关注错误#1583
https://github.com/cp2k/cp2k/issues/1583
//一个可能的思路,进入src/grid路径下,单独make,根据#1583错误进行修改grid里面的makefile
cd ~/cp2kdevelop/src/grid/
make
但我运行下来,报了两个错误,不想解决了