计算化学公社

标题: molcas intel编译器安装踏坑记 [打印本页]

作者
Author:
abdoman    时间: 2022-9-14 09:08
标题: molcas intel编译器安装踏坑记
本帖最后由 abdoman 于 2022-9-16 13:47 编辑

近日需要学习激发态高阶的计算,正所谓理论与应用未动,软件安装先行。
废话不多说,安装选定在openmolcas;
1.软件下载,直接从gitlab 拉下来,当前最新 v22.06-85-g4b62d07
http://bbs.keinsci.com/thread-6618-1-1.html

2.1 安装系统介绍

2.2 安装选择的库
2.2.1 hdf5-1.10.4 (系统已有)
这个是个大坑,因为默认 --enable-CXX是no,导致后面NEVPT2编译无法通过,
而且 hdf5 不能安装并行版,因为ALPS不推荐。


CMake Warning at alps/CMakeLists.txt:49 (MESSAGE):
  parallel(MPI) hdf5 is detected.  We will compile but ALPS does not use
  parallel HDF5.  The standard version is preferred.


最后重新编译安装hdf5 才得以成功。
安装的参数:
./configure --prefix=/public/software/hdf5-1.10.4 --enable-cxx  --enable-fortran --enable-shared --with-pic CC=icc FC=ifort CXX=icpc  CFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" FCFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" CXXFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align"

安装完成后,变量声明可追加到~/.bashrc 里面:
例如:
export HDF5_DIR=/public/software/hdf5-1.10.4
export PATH=/public/software/hdf5-1.10.4/bin:$PATH
export HDF5_LIBRARIES=/public/software/hdf5-1.10.4/lib:$HDF5_LIBRARIES
export HDF5_INCLUDE_DIRS=/public/software/hdf5-1.10.4/include:$DF5_INCLUDE_DIRS

安装参考:
https://community.intel.com/t5/I ... ompiler/m-p/1357014

2.2.2 Global Arrays
下载的是最新的ga-5.8.1,必须要scalapack,不然后面过不去
./configure MPICXX=mpiicpc MPIF77=mpiifort MPICC=mpiicc --prefix=/public/software/ga-5.8.1 --enable-i8 --with-sockets --with-blas8="-L$MKLROOT/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm" --with-scalapack8="-L$MKLROOT/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_ilp64 -liomp5 -lpthread -lm" --enable-cxx -with-mpi


安装完成后,变量声明可追加到~/.bashrc 里面:
例如:
export GAROOT=/public/software/ga-5.8.1
export PATH=/public/software/ga-5.8.1/bin:$PATH

GA安装参考:
https://blog.csdn.net/jslove1997/article/details/116721572
https://zhuanlan.zhihu.com/p/926 ... urce=wechat_session


2.2.3 molcas 安装
首先conda activate ,切换到python3 的环境下,
然后export GA 和HDF5 的环境变量,(这里也有一个坑,我的conda 里面是有hdf5,所以要先切换到python3下,再source hdf5的环境变量)
按照说明书,mkdir build && cd build

cmake -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_C_COMPILER=icc -DGA=ON -DLINALG=MKL -DCMAKE_INSTALL_PREFIX=/public/software/OpenMolcas_v22.06  ../OpenMolcas
make -j8

进行到98%的时候,竟然出错。
In function `f2c_getarg_': farg.F:(.text+0x55): undefined reference to `_gfortran_getarg_i8

貌似是需要调用gfortran 的库文件,可能是由于我的ifort的原因,cmake竟然连gfortran的库都找不到。(应该是默认的lib64,为啥找不到?)
最后看了CMakeCache.txt里面有link的FLAGS可以设置,
删除当前CMakeCache.txt,

顺利编译完成,
然后 make install

2.2.4 DMRG 和NEVPT2 的支持
a. Boost 安装
Boost >= 1.56 is required for QCMaquis
当前版本为1.55,因此也安装boost-1.57
./configure MPICC=mpiicc CC=mpiicc F77=mpiifort MPIF77=mpiifort prefix=/public/software/ga-5.8.1 --with-mpi-pr --enable-i8 --with-blas CXX=mpiicpc MPICXX=mpiicpc
安装参考:
参考:https://cloud.tencent.com/developer/article/1794304


b. 离线安装DMRG和NEVPT2
DMRG好不容易编译好,但是
NEVPT2 对intel不太友好,还是放弃了。

转为gnu编译器,由于系统gcc-4.8.5,不太友好,编译DMRG的时候regex.h 有bug,https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61059


c. 离线安装DMRG和NEVPT2  GCC-7 编译
通过yum 安装scl,再安装gcc-7
首先下载阿里云的镜像yum源 。 wget -O /etc/yum.repos.d/CentOS-Base-aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo
安装yum install devtoolset-7-gcc*  (7系gcc)
scl enable devtoolset-7 bash  

cmake -DCMAKE_C_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/cc -DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++ -DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++ -DCMAKE_C_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/cc -DCMAKE_Fortran_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/gfortran -DGA=ON -DLINALG=MKL -DCMAKE_INSTALL_PREFIX=/public/software/OpenMolcas_GNU -DNEVPT2=ON -DDMRG=ON -DOPENMP=ON ../OpenMolcas

make
make install

















作者
Author:
Santz    时间: 2023-12-13 17:24
In function `f2c_getarg_': farg.F:(.text+0x55): undefined reference to `_gfortran_getarg_i8
你好,关于此错误的处理能否提供一个详细的参考?我用IntelMPI始终提示这个错误。
作者
Author:
zjxitcc    时间: 2023-12-13 18:27
Santz 发表于 2023-12-13 17:24
In function `f2c_getarg_': farg.F:(.text+0x55): undefined reference to `_gfortran_getarg_i8
你好, ...

建议阅读《离线安装OpenMolcas-v22.06》,《编译MPI并行版OpenMolcas

作者
Author:
Santz    时间: 2023-12-13 18:44
zjxitcc 发表于 2023-12-13 18:27
建议阅读《离线安装OpenMolcas-v22.06》,《编译MPI并行版OpenMolcas》

多谢,已解决IntelMPI的问题,再尝试你的OpenMPI版本。
作者
Author:
fwz3888    时间: 2024-9-17 16:58
zjxitcc 发表于 2023-12-13 18:27
建议阅读《离线安装OpenMolcas-v22.06》,《编译MPI并行版OpenMolcas》

老师您好,按照您离线安装OPENMOLCAS v22.06的流程安装OpenMolcas v24.06,在编译openmolcas时报错error: could not find git for clone of Libxc。我尝试安装了libxc6.2.2后重新编译openmolcas,没能解决问题。请问应当如何处理该问题?
作者
Author:
zjxitcc    时间: 2024-9-17 18:14
本帖最后由 zjxitcc 于 2024-9-17 18:16 编辑
fwz3888 发表于 2024-9-17 16:58
老师您好,按照您离线安装OPENMOLCAS v22.06的流程安装OpenMolcas v24.06,在编译openmolcas时报错error: ...

你没有正确处理Libxc的位置,仔细阅读安装教程中“接着我们把Libxc放到相应目录下,让OpenMolcas自动识别并编译它。。。”。如果你实在试不出来,可以安装OpenMolcas-v24.02,我就是按我自己写的教程编译的v24.02。
作者
Author:
wanlichuan    时间: 2024-9-25 17:35
fwz3888 发表于 2024-9-17 16:58
老师您好,按照您离线安装OPENMOLCAS v22.06的流程安装OpenMolcas v24.06,在编译openmolcas时报错error: ...

请问层主解决这个问题了吗?我在安装OpenMolcas v24.06时也遇到了同样的问题。如果已经解决,麻烦告知一下如何?谢谢。
作者
Author:
wanlichuan    时间: 2024-9-25 19:08
zjxitcc 发表于 2024-9-17 18:14
你没有正确处理Libxc的位置,仔细阅读安装教程中“接着我们把Libxc放到相应目录下,让OpenMolcas自动识别 ...

邹老师,我试过了安装OpenMolcas-v24.02,Libxc也试了5.2.2到6.2.2的多个版本,都是出现同样的错误(error: could not find git for clone of Libxc)。从上下文的逻辑顺序来看,Libxc应该是在$HOME/software/OpenMolcas-v22.10/build/External/目录下吧?还是我理解错了,应该在别的“相应目录”下?唯恐程序找不到Libxc,我甚至把解压并改名后的Libxc同时放在了好多目录下,也不行。
作者
Author:
zjxitcc    时间: 2024-9-25 19:14
wanlichuan 发表于 2024-9-25 19:08
邹老师,我试过了安装OpenMolcas-v24.02,Libxc也试了5.2.2到6.2.2的多个版本,都是出现同样的错误(erro ...

摘自我写的安装教程《离线安装OpenMolcas-v22.06
"接着我们把Libxc放到相应目录下,让OpenMolcas自动识别并编译它。依次执行"
  1. cd External/Libxc/tmp
  2. rm -f Libxc-gitclone.cmake Libxc-gitupdate.cmake
  3. touch Libxc-gitclone.cmake Libxc-gitupdate.cmake
  4. cd ../src
  5. cp ~/software/libxc-5.2.2.tar.gz .
  6. tar -zxf libxc-5.2.2.tar.gz
  7. rm -rf Libxc libxc-5.2.2.tar.gz
  8. mv libxc-5.2.2 Libxc
  9. cd ../../../
复制代码
可以看出,libxc-5.2.2.tar.gz压缩包需要放在OpenMolcas-v22.06/build/External/Libxc/src/目录下。

作者
Author:
wanlichuan    时间: 2024-9-25 19:22
本帖最后由 wanlichuan 于 2024-9-25 19:26 编辑
zjxitcc 发表于 2024-9-25 19:14
摘自我写的安装教程《离线安装OpenMolcas-v22.06》
"接着我们把Libxc放到相应目录下,让OpenMolcas自动 ...

是的,邹老师,最终应该是这样的目录结构:$HOME/software/OpenMolcas-v22.10/build/External/Libxc/src/Libxc。
另外请教一下,这个Libxc不需要安装吧?只是解压、改名即可吧?

还有不太明白的一点:
touch Libxc-gitclone.cmake Libxc-gitupdate.cmake
这一条指令有什么用呢?

作者
Author:
zjxitcc    时间: 2024-9-25 19:30
wanlichuan 发表于 2024-9-25 19:22
是的,邹老师,最终应该是这样的目录结构:$HOME/software/OpenMolcas-v22.10/build/External/Libxc/src/ ...

不需要安装,只需要解压和改名。touch那条命令是创建两个空文件,因为上一步把它删了。
作者
Author:
wanlichuan    时间: 2024-9-26 00:17
zjxitcc 发表于 2024-9-25 19:30
不需要安装,只需要解压和改名。touch那条命令是创建两个空文件,因为上一步把它删了。

好的,谢谢邹老师。
我仔细核对了很多遍,除了编译器没用intel的之外,其他步骤都是一样的。麻烦邹老师帮忙看看,用GNU编译器的话,把下面的指令:
CC=icc CXX=icpc F77=ifort FC=ifort MPICC=mpicc MPICXX=mpicxx \
cmake -DLINALG=MKL -DMPI=ON -DGA=ON \
-DMPIEXEC_EXECUTABLE=/opt/openmpi-4.1.1/bin/mpiexec \
-DCMAKE_INSTALL_PREFIX=$HOME/software/OpenMolcas-v22.10 ..
改为下面的指令:
CC=gcc CXX=g++ F77=gfortran FC=gfortran MPICC=mpicc MPICXX=mpicxx cmake -DLINALG=MKL -DMPI=ON -DGA=ON  -DMPIEXEC_EXECUTABLE=$HOME/openmpi416/bin/mpiexec  -DCMAKE_INSTALL_PREFIX=$HOME/software/OpenMolcas2402 ..
有没有错误?
前面在编译HDF5和ga-5.8.2的时候,我也是用的GNU编译器,没错。
另外,还有一点小的差异,我用的是openmpi4.1.6,您的教程中用的是4.1.1,应该影响不大吧。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3