41集群上安装rocm版本的nwchem

1.编译openblas库和lapack库

参考在apps上编译nwchem的指南—> 网址

2.编译nwchem
  1. ga源文件的准备
    正常情况下开始make之后,如果检测到没有ga的源文件也没有已经编译安装好的ga的时候,会自动从git_hub上下载源文件并且编译,但是集群因为不能联网,所以要手动下载下来ga的源文件,我的办法是在有网的环境下运行nwchem/src/tools/get-tools-github文件来获取他需要的ga源文件,再上传到nwchem/src/tools/这个位置,就可以了

  2. 开始编译
    pccompile文件的书写

#!/bin/bash
#module unload compiler/rocm/2.9
#module load compiler/rocm/3.0
#export HCC_HOME=/public/software/compiler/rocm/3.0/hcc
#export CC=gcc
export NWCHEM_TOP=/public/home/mayj/jinrf/Quantum_Soft/nwchem-hip-2.9/
export NWCHEM_TARGET=LINUX64
export ARMCI_NETWORK=MPI-PR
export USE_MPI=yes
export USE_MPIF=yes
export USE_MPIF4=yes
export TCE_HIP=yes
export NWCHEM_MODULES=all
export BLASOPT="-L/public/home/mayj/jinrf/tool/openblas/lib -lnwclapack -lopenblas -L/opt/rocm/hip/lib -lhip_hcc"      export LD_LIBRARY_PATH=/opt/rocm/lib:/opt/hpc/software/mpi/openmpi/4.0.2/gcc-7.3.1/lib/:$LD_LIBRARY_PATH
export LIBRARY_PATH=/opt/rocm/lib:$LIBRARY_PATH
export LIBS="-lhip_hcc"
#export PATH=$PATH:/home/jrf/tools/ompi-gcc8.3.0/bin/
export HIP_INCLUDE="-I/opt/rocm/include"
export LAPACK_LIB="-L/public/home/mayj/jinrf/tool/lapack-3.9.0"

编译命令(在看完3编译事项注意之后再来开始编译)

. pccompile
make nwchem_config
make

3.编译事项注意

  1. 使用默认的rocm2.9来编译
  2. 使用hipcc -v查看AMDGPU target,在nwchem/src/config/makefile.h文件中修改HIPCC的编译命令,在对应位置添加上-amdgpu-target=gfx906,修改为如下的命令。
    $(HIP) -c -amdgpu-target=gfx906  -DTCE_HIP -fno-gpu-rdc -o $% $<
    
  3. 要修改几个.c文件的过时mpi函数,这是由于openmpi版本新造成的,具体可以看片头说的指南。

4.出现的各种问题:

这是编译过程中走的各种弯路遇到的各种错误,留作纪念,不一定会遇到

  1. ga-config: Command not found
make: /public/home/mayj/jinrf/nwchem-hip/src/tools/guess-mpidefs: Command not found
make: /public/home/mayj/jinrf/nwchem-hip/src/tools/guess-mpidefs: Command not found
make: /public/home/mayj/jinrf/nwchem-hip/src/tools/install/bin/ga-config: Command not found
make: /public/home/mayj/jinrf/nwchem-hip/src/tools/install/bin/ga-config: Command not found

这不是个问题,找不到就该去编译,这只是测试有没有ga,没有就去编译安装

  1. 在编译ga的时候找不到很多的库
configure:
configure:4893: cc    -L/public/home/mayj/jinrf/Quantum_Soft/nwchem/lib/LINUX64 -L/public/home/mayj/jinrf/Quantum_Soft/nwchem/src/tools/install/lib  conftest.c -lccsd -lmcscf -lselci -lmp2 -lmoints -lstepper -ldriver -loptim -lnwdft -lgradients -lcphf -lesp -lddscf -ldangchang -lguess -lhessian -lvib -lnwcutil -lrimp2 -lproperty -lsolvation -lnwints -lprepar -lnwmd -lnwpw -lofpw -lpaw -lpspw -lband -lnwpwlib -lcafe -lspace -lanalyze -lqhop -lpfft -ldplot -ldrdy -lvscf -lqmmm -lqmd -letrans -lpspw -ltce -lbq -lmm -lcons -lperfm -ldntmc -lccca -ldimqm -lnwcutil -lga -larmci -lpeigs -lperfm -lcons -lbq -lnwcutil    -L/public/home/mayj/jinrf/tool/lib -llapack -lopenblas -L/opt/rocm/hip/lib -lhip_hcc  -L/public/home/mayj/jinrf/tool/lapack-3.9.0 -lnwcblas   -L/opt/hpc/software/mpi/openmpi/4.0.2/gcc-7.3.1/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi     -lcomex -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi -lblas -lrt -lpthread -lm -lhip_hcc -lpthread  -lstdc++   >&5
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lccsd
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lmcscf
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lselci
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lmp2
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lmoints
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lstepper
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -ldriver
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -loptim
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lnwdft
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lgradients
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lcphf
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lesp
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lddscf
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -ldangchang
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lguess
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lhessian
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lvib

解决办法:
       这是在编译ga的时候出现的问题,ga需要临时下载下来编译安装,这一切都是在Makefile里面写好的,但是出现了这个问题。
       出错信息中所找不到的库都是nwchwm各个模块编译好后形成的库,本应该是在最后链接可执行程序nwchem的时候再链接的,此时链接明显是编译选项出了问题,查看configure:4893这个地方是怎么加上这些编译选型的。

eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""

这里可以看出,是ac_try_echo包含着运行的命令,往上翻看这个变量是怎么被定义的,最终找到是下面这句话里面的LIBS变量包含着这么一大堆函数库的链接要求。

ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'

但是实际上ga的编译是不需要这些函数库的,那就把这个变量置为空好了,在编译ga时候使用的configure文件中修改这个变量不会影响其他模块的编译以及最后可执行程序的链接。在nwchem-hip-2.9/src/tools/ga-5.7.1/configure中最上面加上

###jinrf has change the LIBS environment
LIBS=" "

问题解决。

  1. -amdgpu-target argument ‘gfx000’ is not recognized;
 hipcc -c -DTCE_HIP -fno-gpu-rdc -o memory.o memory.hip.cpp
clang-10: error: ROCm agent detector could not identify any valid targets; please specify the target explicitly by passing a valid value to -amdgpu-target
clang-10: warning: -amdgpu-target argument 'gfx000' is not recognized; using gfx803 instead [-Winvalid-command-line-argument]

使用hipcc -v来查看应当使用什么选项,其中有一句

AMDGPU target array: gfx906

所以要在编译hpp文件的时候加上这一句。这里所有模块的编译命令都是使用的nwchem/src/config/makefile.h文件中的,每一个子目录的makefile 都使用include命令来将这个文件包含进来提供编译选项,其中,在这个makefile.h文件中关于hipcc的编译命令部分如下

ifndef HIP
  HIP = hipcc
endif
ifdef TCE_HIP
  DEFINES += -DTCE_HIP $(shell hipconfig --cpp_config)
  CORE_LIBS += $(HIP_LIBS)
  EXTRA_LIBS += -lstdc++
endif

以及

ifdef TCE_HIP
(%.o):  %.hip.cpp
        $(HIP) -c   -DTCE_HIP -fno-gpu-rdc -o $% $<
endif

下面这部分就是makefile中写具体命令的地方,可以在这里修改编译选项,改为

ifdef TCE_HIP
(%.o):  %.hip.cpp
        $(HIP) -c -amdgpu-target=gfx906  -DTCE_HIP -fno-gpu-rdc -o $% $<
endif

加上了-amdgpu-target=gfx906
问题解决。

  1. HCC_HOME设置错误
HIP (/public/software/compiler/rocm/3.0/hip) was built using hcc 3.0.19493-75ea952e-40756364719e, but you are using /opt/rocm/hcc/hcc with version 2.9.19392-75835c32-fa40706d8b-b7f876231af from hipcc. Please rebuild HIP including cmake or update HCC_HOME variable.
Died at /public/software/compiler/rocm/3.0/bin/hipcc line 919.

解决办法:
按照提示的对环境变量HCC_HOME修改,改为rocm3.0所在的目录

  export HCC_HOME=/public/software/compiler/rocm/3.0/hcc

把这一句加到pccompile中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值