计算化学公社

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

[CP2K] 利用cmake编译和安装CP2K

[复制链接 Copy URL]

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 UW_0728. 于 2026-2-11 18:10 编辑

从版本2026.1开始,CP2K的编译将全面转为cmake,彻底放弃原有的GNU makefile和相应的arch文件集。个人感觉在cmake下编译比传统的编译模式报错概率更低一点。然而,目前toolchain尚未实现针对自定义的配置设计合适的cmake指令,因此只能自己根据CMakeLists.txt里面的选项逐个添加与既有toolchain配置相对应的到命令行中,比较麻烦,且开发者貌似并不打算解决这一点;另外,目前无法通过cmake同时编译ssmp和psmp(检测出MPI就只编译psmp,否则只编译ssmp),且编译成的程序没有相应的符号链接sopt和popt,不过这不算什么大问题,毕竟psmp同时支持MPI和OpenMP并行,只要设置OMP_NUM_THREADS为物理核心数且不用mpirun指令就相当于运行ssmp,只要export OMP_NUM_THREADS=1 并利用mpirun -np N (N为并行核数)运行就相当于运行popt了;此外,我发现CP2K对sopt/popt版本中相应设置的实现是通过Fortran主代码中的几行完成的,因此实际上你完全可以在二进制文件目录下自己创建这样的符号链接。(补充:目前开发分支已经在cmake的install一步加回了popt和sopt符号链接的创建命令)

接下来讲一讲从cmake编译CP2K可执行文件的基本步骤:(假设为root用户,使用2026.1版本;更早版本用传统模式编译更省事一点)

1. 按照社长的文章(http://sobereva.com/586)正常完成toolchain工具链安装步骤,然后执行source /root/CP2K/src/cp2k-2026.1/tools/toolchain/install/setup

2. 切到cp2k源码目录,执行mkdir build && cd build,进入构建和编译专用目录。

3. 运行构建指令。如上所述,这里需要手动输入构建选项。假如完全按照社长文章里的选项配置好toolchain,那么你所需要的cmake命令为:
cmake .. -DCMAKE_INSTALL_PREFIX=../install -DCP2K_USE_MPI=ON -DCP2K_USE_FFTW3=ON -DCP2K_USE_LIBINT2=ON -DCP2K_USE_LIBXC=ON -DCP2K_USE_SPGLIB=ON -DCP2K_USE_VORI=ON -DCP2K_USE_COSMA=ON -DCP2K_USE_ELPA=ON -DCP2K_USE_LIBXSMM=ON -DCP2K_USE_PLUMED=ON -DCP2K_USE_SIRIUS=ON -DCP2K_USE_TBLITE=ON -DCP2K_DATA_DIR=/root/CP2K/src/cp2k-2026.1/data

这里包括toolchain默认安装的,以及根据自己的设置选择多安装或不安装的包。命令中的-DCMAKE_INSTALL_PREFIX 设置到自己想安装到的路径(可以使用相对路径;为省事我直接设置在了父目录下的一个新文件夹;如果不设置,默认将为/usr/local)。由于OpenBLAS是强制性的、Scalapack在有MPI的情况下是强制性的,因此无论如何它们都会被检查,这里无需写出。之所以特别设置-DCP2K_DATA_DIR=/root/CP2K/src/cp2k-2026.1/data是因为cmake构建系统安装好后默认读取基组的位置是${CMAKE_INSTALL_PREFIX}/shared/cp2k/data,会导致编译时生成与/root/CP2K/src/cp2k-2026.1/data内容完全重复的/root/CP2K/src/cp2k-2026.1/install/shared/cp2k/data目录,加上这一设置可以避免这一问题(但注意这里不能使用相对路径)

2026-01-26补充:根据
https://github.com/cp2k/cp2k/commit/9513a73f5c67e4b564ec780b7019669123e3b5ce目前的CP2K开发分支已经能够在toolchain安装结束时给出与toolchain设置相匹配的CMake配置选项,预计下一个版本2026.2中会包含。大家可以直接看那里面的文件修改详情(generate_cmake_options.sh在后来也有些细节上的修补),然后把经修改和添加的文件直接复制粘贴到自己下载好的源代码包相应位置,就可以正常用了;此时toolchain安装结束后会在最后输出推荐的cmake选项,可以直接将整个命令复制粘贴使用。

4. 构建完成后,运行
make install -jN,N是并行核数。

5. 写入以下三行至~/.bashrc中以添加环境变量:
export PATH=$PATH:/root/CP2K/src/cp2k-2026.1/install/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/CP2K/src/cp2k-2026.1/install/lib64
source /root/CP2K/src/cp2k-2026.1/tools/toolchain/install/setup


6. 如果硬盘有点吃紧,可以
删除该build文件夹(或者不删除但在build目录内执行make clean)以腾出部分空间。

评分 Rate

参与人数
Participants 3
eV +10 收起 理由
Reason
北大-陶豫 + 5
牧生 + 2 终于装上2025.2了
LittlePupil + 3 谢谢分享

查看全部评分 View all ratings

63

帖子

0

威望

780

eV
积分
843

Level 4 (黑子)

47#
发表于 Post on 2026-2-21 23:00:21 | 只看该作者 Only view this author
UW_0728. 发表于 2026-2-21 18:21
先看:
在网上求助计算化学问题的时候必须把问题描述得详细、具体、准确、清楚
http://sobereva.com/62 ...

已经搞定了,我把自己的cmake、openmpi、fftw、mkl之类的bashrc全注释掉才行。虽然我的版本跟cp2k要求的基本一样,但是就是不行。报错基本与cmake、gfortran有关,高了半天没搞定,哎,注释完以后,一点问题都没有,一遍过

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

46#
 楼主 Author| 发表于 Post on 2026-2-21 18:21:33 | 只看该作者 Only view this author
HNUST 发表于 2026-2-21 18:12
elpa,HDF5总是出错,哎真是服了,关闭以后,cmake的时候又跳出来报错。我甚至把系统带的cmake都删了,全都 ...

先看:
在网上求助计算化学问题的时候必须把问题描述得详细、具体、准确、清楚
http://sobereva.com/620http://bbs.keinsci.com/thread-25787-1-1.html

1. ELPA和HDF5在安装时报错的原因是什么?最好仔细查看并附上相应的日志文件。
2. 你的cmake指令是什么?

63

帖子

0

威望

780

eV
积分
843

Level 4 (黑子)

45#
发表于 Post on 2026-2-21 18:12:10 | 只看该作者 Only view this author
elpa,HDF5总是出错,哎真是服了,关闭以后,cmake的时候又跳出来报错。我甚至把系统带的cmake都删了,全都让脚本来安装,但是elpa跟hdf5就是报错

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

44#
 楼主 Author| 发表于 Post on 2026-1-26 21:12:08 | 只看该作者 Only view this author
https://github.com/cp2k/cp2k/com ... 80b7019669123e3b5ce

CP2K目前的开发分支已经实现在toolchain结束时自动生成相应的cmake选项了,因此在原文中补充了这一点。

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

43#
 楼主 Author| 发表于 Post on 2026-1-22 16:50:47 | 只看该作者 Only view this author
kogareru1z 发表于 2026-1-22 16:49
太奇怪了,我重启电脑又在另一个目录进行测试,发现当我添加LEVEL_SHIFT 0.5关键词后,计算耗时就大幅 ...

应该是编译问题,能级移动设置不应该显著影响SCF计算速度

14

帖子

0

威望

141

eV
积分
155

Level 3 能力者

42#
发表于 Post on 2026-1-22 16:49:24 | 只看该作者 Only view this author
UW_0728. 发表于 2026-1-22 15:48
我简单试了下,没有这样的问题:(我看到你发的另一个帖子里面带的输出显示了)
怀疑是你编译或者编译环 ...


太奇怪了,我重启电脑又在另一个目录进行测试,发现当我添加LEVEL_SHIFT 0.5关键词后,计算耗时就大幅增加,很诡异

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

41#
 楼主 Author| 发表于 Post on 2026-1-22 15:48:31 | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-1-22 15:51 编辑

我简单试了下,没有这样的问题:(我看到你发的另一个帖子里面带的输出显示了)
  1. SCF WAVEFUNCTION OPTIMIZATION

  2.   Step     Update method      Time    Convergence         Total energy    Change
  3.   ------------------------------------------------------------------------------
  4.      1 NoMix/Diag. 0.40E+00   32.6     0.70457347    -38566.0388841912 -3.86E+04
  5.      2 Broy./Diag. 0.40E+00   38.6     1.56786457    -38770.3746255539 -2.04E+02
  6.      3 Broy./Diag. 0.40E+00   38.2     1.34567754    -38569.9193082223  2.00E+02
复制代码
怀疑是你编译或者编译环境的问题

14

帖子

0

威望

141

eV
积分
155

Level 3 能力者

40#
发表于 Post on 2026-1-22 13:25:44 | 只看该作者 Only view this author
UW_0728. 发表于 2026-1-22 12:43
没遇到。输入文件发来我再测一测

这是输入文件

opt_bri.inp

21.74 KB, 下载次数 Times of downloads: 2

输入文件

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

39#
 楼主 Author| 发表于 Post on 2026-1-22 12:43:30 | 只看该作者 Only view this author
kogareru1z 发表于 2026-1-22 10:25
请问各位有遇到cp2k2026.1版的性能问题吗?我发现对于同一个任务同样的设置,最新版的scf从第二步开始的耗 ...

没遇到。输入文件发来我再测一测

14

帖子

0

威望

141

eV
积分
155

Level 3 能力者

38#
发表于 Post on 2026-1-22 10:25:47 | 只看该作者 Only view this author
请问各位有遇到cp2k2026.1版的性能问题吗?我发现对于同一个任务同样的设置,最新版的scf从第二步开始的耗时是2025.2版的4倍以上,参考的是sob老师的教程且我自己也编译了mkl版,结果都是一样,很不解

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

37#
 楼主 Author| 发表于 Post on 2026-1-21 17:01:06 | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-1-21 17:12 编辑
乐平 发表于 2026-1-21 16:08
并不是 “而非编译后未安装时的路径”

cmake --build build -j 32

"cmake --build build -j N"后其实还有一步"cmake --install build",执行了这一步带"--install"的指令才会安装到${CMAKE_INSTALL_PREFIX}所指的地方,只是这个指令CP2K手册里没有提及而已(附:cmake --install指令无法也无需带-j)。多做一步install是为了编译和安装后(如果硬盘空间吃紧)可以直接把build目录删除掉(或者不删掉但执行make clean),能节省出1GB左右的空间。
另外注意cmake执行后build目录里是生成了Makefile的(但是显然不是之前的GNU Makefile的格式),因此make指令完全可以用,切到build目录下(cd build)就可以用了;在此情况下,"make -j N"等价于"cmake --build . -j N";"make install -j N"等价于"cmake --build . -j N && cmake --install ."。

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
hebrewsnabla + 1 我很赞同

查看全部评分 View all ratings

1156

帖子

0

威望

4486

eV
积分
5642

Level 6 (一方通行)

36#
发表于 Post on 2026-1-21 16:08:20 | 只看该作者 Only view this author
本帖最后由 乐平 于 2026-1-21 16:30 编辑
UW_0728. 发表于 2026-1-21 16:02
这里指的是install之后的路径,而非编译后未安装时的路径。

我没加那些OFF的选项,但也没出任何问题

并不是 “而非编译后未安装时的路径”

cmake --build build -j 32

之后,在 ~/cp2k-2026.01/build/bin 目录下就是

  1. cp2k.psmp              dbt_unittest.psmp          graph.psmp          gx_ac_unittest.psmp             nequip_unittest.psmp
  2. dbm_miniapp.psmp       dumpdcd.psmp               grid_miniapp.psmp   libcp2k_unittest.psmp           parallel_rng_types_unittest.psmp
  3. dbt_tas_unittest.psmp  gemm_square_unittest.psmp  grid_unittest.psmp  memory_utilities_unittest.psmp  xyz2dcd.psmp
复制代码



另外,我发现您最后编译用的是 make install -jN, 而不是您标题里说的 cmake


而 CP2K-2026.01 推荐的 cmake 是
  1. ========================== usage =========================
  2. Done!
  3. To use the installed tools and libraries and cp2k version
  4. compiled with it you will first need to execute at the prompt:
  5.   source /public/apps/cp2k/202601/tools/toolchain/install/setup

  6. If you invoked the toolchain with --install-all then you can proceed to build cp2k like this:
  7.   cd cp2k/
  8.   cmake -S . -B build -DCP2K_USE_EVERYTHING=ON -DCP2K_USE_DLAF=OFF -DCP2K_USE_PEXSI=OFF
  9.   cmake --build build -j 32

  10. If you installed only some packages then you'll have to assemble the matching cmake command yourself.
  11. For available build options see: https://manual.cp2k.org/trunk/getting-started/build-from-source.html
复制代码


您最终稿的编译跟您前面写的一大段完全背道而驰了……

139

帖子

1

威望

542

eV
积分
701

Level 4 (黑子)

35#
 楼主 Author| 发表于 Post on 2026-1-21 16:02:28 | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-1-21 16:03 编辑
乐平 发表于 2026-1-21 12:07
谢谢讨论
感觉 CP2K 用来 cmake 之后把编译弄得更复杂了。
从 issue 里反馈的信息来看,需要根据报错把 ...
另外,我没有指定 -DCMAKE_INSTALL_PREFIX= 参数,编译之后 CP2K 可执行程序放在 ~/cp2k-2026.01/build/bin 目录下了。而不是您说的 /usr/local 目录下。
这里指的是install之后的路径,而非编译后未安装时的路径。

将所有没有在 toolchain 里预先安装的库都需要 OFF 掉。
我没加那些OFF的选项,但也没出任何问题

1156

帖子

0

威望

4486

eV
积分
5642

Level 6 (一方通行)

34#
发表于 Post on 2026-1-21 12:07:25 | 只看该作者 Only view this author
本帖最后由 乐平 于 2026-1-21 12:18 编辑
UW_0728. 发表于 2026-1-20 11:26
那个Issue有回复了
顺带一提,如果cmake环节出错而重新构建时,cmake默认会在考虑新构建选项的同时从失 ...

谢谢讨论
感觉 CP2K 用来 cmake 之后把编译弄得更复杂了。
从 issue 里反馈的信息来看,需要根据报错把该补上的参数都补上,而参数均来自下面的链接里各个库
https://manual.cp2k.org/trunk/technologies/libraries.html

根据上面的链接,将所有没有在 toolchain 里预先安装的库都需要 OFF 掉。

我预先编译的库有
  1. ./install_cp2k_toolchain.sh --with-mkl=system --with-gcc=system --with-openmpi=install --with-plumed=install --with-tblite=install --with-hdf5=install
复制代码



我的 cmake 命令是
  1. cmake -S . -B build -DCP2K_USE_MPI=ON -DCP2K_USE_FFTW3=ON -DCP2K_USE_LIBINT2=ON -DCP2K_USE_LIBXC=ON -DCP2K_USE_SPGLIB=ON -DCP2K_USE_VORI=ON -DCP2K_USE_COSMA=ON -DCP2K_USE_ELPA=ON -DCP2K_USE_LIBXSMM=ON -DCP2K_USE_PLUMED=ON -DCP2K_USE_SIRIUS=ON -DCP2K_USE_LIBVDWXC=ON -DCP2K_USE_SIRIUS_DFTD4=ON -DCP2K_USE_DFTD4=ON -DCP2K_USE_TBLITE=ON -DCP2K_USE_HDF5=ON -DCP2K_USE_LIBSMEAGOL=OFF -DCP2K_USE_DEEPMD=OFF -DCP2K_USE_ACE=OFF -DCP2K_USE_LIBTORCH=OFF -DCP2K_USE_MIMIC=OFF -DCP2K_USE_TREXIO=OFF -DCP2K_USE_GREENX=OFF
复制代码



也就是说,需要把没有预先安装的 libsmeagol, DeePMD, ACE, LibTorch, MIMIC,TREXIO, GreenX 这些库都 OFF (命令中最后 7 个)
  1. -DCP2K_USE_LIBSMEAGOL=OFF -DCP2K_USE_DEEPMD=OFF -DCP2K_USE_ACE=OFF -DCP2K_USE_LIBTORCH=OFF -DCP2K_USE_MIMIC=OFF -DCP2K_USE_TREXIO=OFF -DCP2K_USE_GREENX=OFF
复制代码


另外,我没有指定 -DCMAKE_INSTALL_PREFIX= 参数,编译之后 CP2K 可执行程序放在 ~/cp2k-2026.01/build/bin 目录下了。而不是您说的 /usr/local 目录下。


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

GMT+8, 2026-3-10 08:50 , Processed in 0.196557 second(s), 25 queries , Gzip On.

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