计算化学公社

 找回密码 Forget password
 注册 Register
Views: 804|回复 Reply: 6
打印 Print 上一主题 Last thread 下一主题 Next thread

[CP2K] 求助CP2K toolchain安装库出错

[复制链接 Copy URL]

35

帖子

0

威望

661

eV
积分
696

Level 4 (黑子)

在学校服务器上安装,跟着586文安装并提前下好了build离线安装

已解决)问题一:以下为编译时运行的代码,没有调用GCC而调用了英特尔编译器
  1. ./install_cp2k_toolchain.sh --with-sirius=no --with-openmpi=system --with-plumed=install -j 16
  2. MPI is detected and it appears to be Intel MPI
  3. Compiling with 16 processes for target native.
  4. Step gcc took 0.00 seconds.
  5. ==================== Finding Intel compiler from system paths ====================
  6. ERROR: (./scripts/stage0/install_intel.sh) Cannot find icx, please check if the package intel is installed or in system search path
复制代码
添加--with-gcc=system --with-intel=no后成功解决
注意添加--with-gcc --with-intel=no写法错误,会尝试下载GCC并安装

未解决)问题二:服务器里已经有Intel MPI,写了--with-openmpi=system,但提示找不到mpic++,应该怎么解决
  1. ./install_cp2k_toolchain.sh --with-sirius=no --with-openmpi=system --with-plumed=install --with-gcc=system --with-intel=no -j 16
  2. MPI is detected and it appears to be Intel MPI
  3. xxxxxxx---xxxxxxx
  4. Step cmake took 2.00 seconds.
  5. ==================== Finding OpenMPI from system paths ====================
  6. path to mpiexec is /home/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/mpiexec
  7. path to mpicc is /home/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/mpicc
  8. ERROR: (./scripts/stage1/install_openmpi.sh) Cannot find mpic++, please check if the package openmpi is installed or in system search path
复制代码

改成--with-openmpi=no,就提示The use of Intel MPI is only supported with the Intel compiler,是否必须用英特尔编译器来编译?




系统为CentOS release 6.6 (Final)
gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
GNU Fortran (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)





3806

帖子

4

威望

7996

eV
积分
11882

Level 6 (一方通行)

MOKIT开发者

2#
发表于 Post on 2024-4-3 12:30:32 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2024-4-3 12:42 编辑

这里面有两个问题:
(1)GNU/Intel编译器,这是指gcc/g++/gfortran与icc/icpc/ifort两类之间的选择。
(2)MPI编译器或者说MPI库,可以用诸如mpich, openmpi, Intel MPI中的任何一种,它们的可执行程序往往是mpicc, mpif90之类的MPI编译器。

这是两个不同的问题,不能混为一谈。比如我可以使用GNU编译openmpi,也可以使用Intel编译器 编译openmpi,取决于我的目的和兴趣爱好。假设我现在编译MPI并行版CP2K,我要么用GNU编译器+GNU编译的openmpi,要么用Intel编译器+Intel编译的openmpi,要么用Intel编译器+Intel MPI,但我不会去用GNU编译器+Intel编译的openmpi(这大概率会造成不少报错,即使能编译 程序可能也无法正确运行)。

了解了上述内容,现在说说你的问题。由于你没有指定Intel编译器,所以用的是GNU编译器,且“没有调用GCC而调用了英特尔编译器”、“是否必须用英特尔编译器来编译”这些说法都是不对的,存在错误指代。“MPI is detected and it appears to be Intel MPI”这个信息不是GNU/Intel编译器之争,而是openmpi没识别到,识别成了Intel MPI。

由于你写了--with-openmpi=system,你要解决的不是“找不到mpic++”,而是要确保机器上有openmpi,且openmpi是由GNU编译器 编译的,不可以是Intel编译器 编译的。如果机器上已经有openmpi,可以运行这四个命令检查路径是否正确
which mpirun
which mpif90
which mpicc
which mpicxx
如果连openmpi都没有,可以自己安装,也可以用集群上管理员安装好的(假设是在一个良好的集群上)。而要查看它们是由什么编译器编译的,需要进入上述目录,执行ldd mpirun查看其依赖库是GNU的还是Intel的。啰嗦了一堆,希望读者们能理清这里面的关系。

如果你觉得上述文字太长难以理解,直接看这两篇截然不同的编译教程,便可体会到差别
离线安装CP2K-2022.2_Intel编译器版
《给老爷机离线安装CP2K-2022.2的笔记》http://bbs.keinsci.com/thread-33603-1-1.html
自动做多参考态计算的程序MOKIT

92

帖子

1

威望

817

eV
积分
929

Level 4 (黑子)

3#
发表于 Post on 2024-4-3 13:11:49 | 只看该作者 Only view this author
楼上正解,你可用--with-openmpi=install 。

35

帖子

0

威望

661

eV
积分
696

Level 4 (黑子)

4#
 楼主 Author| 发表于 Post on 2024-4-3 13:16:42 | 只看该作者 Only view this author
zjxitcc 发表于 2024-4-3 12:30
这里面有两个问题:
(1)GNU/Intel编译器,这是指gcc/g++/gfortran与icc/icpc/ifort两类之间的选择。
( ...

老师您好,非常感谢您的解答,通过which命令检查后,四个程序都在以下目录home/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/
执行ldd mpirun后提示not a dynamic executable,没有显示依赖GNU还是Intel

35

帖子

0

威望

661

eV
积分
696

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2024-4-3 13:19:09 | 只看该作者 Only view this author
logzzz 发表于 2024-4-3 13:11
楼上正解,你可用--with-openmpi=install 。

感谢您的回答,我这里是服务器里有很多个node然后已经有用mpi算vasp,我怕--with-openmpi=instal后会和已经有的mpi发生冲突后果承担不起

92

帖子

1

威望

817

eV
积分
929

Level 4 (黑子)

6#
发表于 Post on 2024-4-3 13:23:05 | 只看该作者 Only view this author
本帖最后由 logzzz 于 2024-4-3 13:24 编辑
orangesea 发表于 2024-4-3 13:19
感谢您的回答,我这里是服务器里有很多个node然后已经有用mpi算vasp,我怕--with-openmpi=instal后会和已 ...

不会冲突。你这个主要问题是你在用GCC编译器编译这些。而不是intel。这个没有冲不冲突的问题。只是在于你运行程序调用哪个。另外,看起来,你只是在你自己账户下安装,跟不用担心会影响到其他人。。没有开root就不怕。

3806

帖子

4

威望

7996

eV
积分
11882

Level 6 (一方通行)

MOKIT开发者

7#
发表于 Post on 2024-4-3 15:32:42 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2024-4-3 15:34 编辑
orangesea 发表于 2024-4-3 13:16
老师您好,非常感谢您的解答,通过which命令检查后,四个程序都在以下目录home/apps/intel/compilers_and ...

这从路径就可以看出当前环境下MPI是Intel MPI,而非openmpi,压根用不着ldd查询。你有以下选择:
(1)保留--with-openmpi=system,用openmpi,自己用GNU(gcc/g++/gfortran)编译器编译一个openmpi,教程很多,我也写过《安装Open-MPI》。
(2)保留--with-openmpi=system,用openmpi,问问管理员有没有装好的你可以直接加载,注意gcc版本要匹配。
(3)放弃--with-openmpi=system,改用--with-openmpi=install,让工具链给你安装一个openmpi。
(4)放弃--with-openmpi=system,改用--with-intelmpi,这不推荐,因为你选择了用GNU(gcc/g++/gfortran)编译CP2K。


自动做多参考态计算的程序MOKIT

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-24 23:36 , Processed in 0.157238 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list