计算化学公社

 找回密码 Forget password
 注册 Register
楼主 Author: UW_0728.
打印 Print 上一主题 Last thread 下一主题 Next thread

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

[复制链接 Copy URL]

74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

31#
 楼主 Author| 发表于 Post on 4 day ago | 只看该作者 Only view this author
dahai7719 发表于 2026-1-19 07:54
因为用tootchain安装后(--with-dftd4=install),到了Cmake的时候会出现同样的出错问题,找不到dftd4的安 ...

加--with-dftd4和--with-dftd4=install没有区别。有可能你toolchain一步没弄成功就急着编译CP2K了,注意运行toolchain脚本安装依赖过程中的提示

1150

帖子

0

威望

4374

eV
积分
5524

Level 6 (一方通行)

32#
发表于 Post on 4 day ago | 只看该作者 Only view this author
UW_0728. 发表于 2026-1-19 19:35
我没出过这样的问题
手册里那个应该是带GPU加速的,对我来说没意义
带个-G Ninja也不知道用处在哪儿

跟 GPU 没有任何关系……

如果你在 cp2k 的路径下进入 cmake 目录,里面有 cmake_cp2k.sh 文件,打开它就能看到
  1. elif [[ "${PROFILE}" == "toolchain" ]] && [[ "${VERSION}" == "psmp" ]]; then
  2.   # TODO Re-enable SIRIUS once performance regression of COSMA is fixed:
  3.   # https://github.com/cp2k/cp2k/issues/4663
  4.   cmake \
  5.     -GNinja \
  6.     -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
  7.     -DCP2K_USE_EVERYTHING=ON \
  8.     -DCP2K_USE_DLAF=OFF \
  9.     -DCP2K_USE_PEXSI=OFF \
  10.     -DCP2K_USE_SIRIUS=OFF \
  11.     -Werror=dev \
  12.     .. |& tee ./cmake.log
  13.   CMAKE_EXIT_CODE=$?
复制代码

74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

33#
 楼主 Author| 发表于 Post on 3 day ago | 只看该作者 Only view this author
本帖最后由 UW_0728. 于 2026-1-20 11:33 编辑
乐平 发表于 2026-1-19 22:20
跟 GPU 没有任何关系……

如果你在 cp2k 的路径下进入 cmake 目录,里面有 cmake_cp2k.sh 文件,打开 ...

那个Issue有回复了
顺带一提,如果cmake环节出错而重新构建时,cmake默认会在考虑新构建选项的同时从失败的地方继续(类似于新的选项在一定程度上是叠加而非完全覆盖?),因此为保险起见一定要先清空build目录下产生的所有文件(rm -rf *)再执行cmake,以免和残留的缓存文件起冲突;我根据那个回复合理怀疑你没有删旧的缓存文件直接重新cmake导致的出错

1150

帖子

0

威望

4374

eV
积分
5524

Level 6 (一方通行)

34#
发表于 Post on 前天 12:07 | 只看该作者 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 目录下。


74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

35#
 楼主 Author| 发表于 Post on 前天 16:02 | 只看该作者 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的选项,但也没出任何问题

1150

帖子

0

威望

4374

eV
积分
5524

Level 6 (一方通行)

36#
发表于 Post on 前天 16:08 | 只看该作者 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
复制代码


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

74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

37#
 楼主 Author| 发表于 Post on 前天 17:01 | 只看该作者 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

14

帖子

0

威望

127

eV
积分
141

Level 2 能力者

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

74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

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

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

14

帖子

0

威望

127

eV
积分
141

Level 2 能力者

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

这是输入文件

opt_bri.inp

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

输入文件

74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

41#
 楼主 Author| 发表于 Post on yesterday 15:48 | 只看该作者 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

威望

127

eV
积分
141

Level 2 能力者

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


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

74

帖子

0

威望

414

eV
积分
488

Level 3 能力者

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

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

本版积分规则 Credits rule

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

GMT+8, 2026-1-23 11:30 , Processed in 2.461872 second(s), 23 queries , Gzip On.

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