计算化学公社

标题: 相同编译环境,相同编译命令在不同集群编译 CP2K 2023.01 得到的可执行程序大小不同 [打印本页]

作者
Author:
乐平    时间: 2023-4-23 22:16
标题: 相同编译环境,相同编译命令在不同集群编译 CP2K 2023.01 得到的可执行程序大小不同
本帖最后由 乐平 于 2023-4-23 22:24 编辑

很是诡异,用相同的编译环境 (gcc-9.3, 调用 intel oneAPI 2022.02 的 MKL)

相同的编译命令
  1. ./install_cp2k_toolchain.sh --math-mode=mkl --with-gcc=install --with-openmpi=install --with-ptscotch=install --with-superlu=install  --with-pexsi=install  --with-quip=install --with-plumed=install
复制代码



只不过一个集群是 PBS 作业调度系统(我们称它为集群 1),另一个集群是 Slurm 作业调度系统(我们称它为集群 2)。当然,在 open mpi 编译的时候稍稍不同,跳过了 slurm,见 在有 slurm 的集群中编译 CP2K 报错 - 第一性原理 (First Principle) - 计算化学公社 (keinsci.com) 里的讨论,但是按理说应该是一样的编译环境,只是注释掉--enable-mpi1-compatibility 额外的兼容性。

最终得到的只编译 cp2k.psmp 版,即 make -j xx ARCH=local VERSION=psmp (xx 是 CPU 核心数,两个集群的核心数不同,这里用 xx 代替)。

有趣的事情来了!

集群 1 的编译结果:
  1. total 1.2G
  2. -rwxrwxr-x 1 huan huan 2.1M Apr 23 12:32 graph.psmp
  3. -rwxrwxr-x 1 huan huan 112K Apr 23 12:32 memory_utilities_unittest.psmp
  4. -rwxrwxr-x 1 huan huan 3.5M Apr 23 12:32 parallel_rng_types_unittest.psmp
  5. -rwxrwxr-x 1 huan huan 1.1M Apr 23 12:32 dbm_miniapp.psmp
  6. -rwxrwxr-x 1 huan huan 8.9M Apr 23 12:32 dbt_tas_unittest.psmp
  7. -rwxrwxr-x 1 huan huan  11M Apr 23 12:33 dbt_unittest.psmp
  8. -rwxrwxr-x 1 huan huan 2.4M Apr 23 12:33 grid_miniapp.psmp
  9. -rwxrwxr-x 1 huan huan 2.4M Apr 23 12:33 grid_unittest.psmp
  10. -rwxrwxr-x 1 huan huan  19K Apr 23 12:38 nequip_unittest.psmp
  11. -rwxrwxr-x 1 huan huan 979K Apr 23 12:38 dumpdcd.psmp
  12. -rwxrwxr-x 1 huan huan 926K Apr 23 12:38 xyz2dcd.psmp
  13. -rwxrwxr-x 1 huan huan 548M Apr 23 12:39 libcp2k_unittest.psmp
  14. -rwxrwxr-x 1 huan huan 548M Apr 23 12:39 cp2k.psmp
  15. lrwxrwxrwx 1 huan huan    9 Apr 23 12:39 cp2k.popt -> cp2k.psmp
  16. lrwxrwxrwx 1 huan huan    9 Apr 23 12:39 cp2k_shell.psmp -> cp2k.psmp
复制代码


集群 2 的编译结果:
  1. total 991M
  2. -rwxr-xr-x 1 huan users 3.4M Apr 18 20:35 parallel_rng_types_unittest.psmp
  3. -rwxr-xr-x 1 huan users 106K Apr 18 20:35 memory_utilities_unittest.psmp
  4. -rwxr-xr-x 1 huan users 2.0M Apr 18 20:35 graph.psmp
  5. -rwxr-xr-x 1 huan users 1.1M Apr 18 20:35 dbm_miniapp.psmp
  6. -rwxr-xr-x 1 huan users 8.5M Apr 18 20:35 dbt_tas_unittest.psmp
  7. -rwxr-xr-x 1 huan users  11M Apr 18 20:36 dbt_unittest.psmp
  8. -rwxr-xr-x 1 huan users 2.1M Apr 18 20:36 grid_unittest.psmp
  9. -rwxr-xr-x 1 huan users 2.1M Apr 18 20:36 grid_miniapp.psmp
  10. -rwxr-xr-x 1 huan users  15K Apr 18 20:39 nequip_unittest.psmp
  11. -rwxr-xr-x 1 huan users 921K Apr 18 20:39 xyz2dcd.psmp
  12. -rwxr-xr-x 1 huan users 975K Apr 18 20:39 dumpdcd.psmp
  13. -rwxr-xr-x 1 huan users 480M Apr 18 20:40 libcp2k_unittest.psmp
  14. -rwxr-xr-x 1 huan users 480M Apr 18 20:40 cp2k.psmp
  15. lrwxr-xr-x 1 huan users    9 Apr 18 20:40 cp2k_shell.psmp -> cp2k.psmp
  16. lrwxr-xr-x 1 huan users    9 Apr 18 20:40 cp2k.popt -> cp2k.psmp
复制代码



可以看出,集群 1 得到的可执行程序 cp2k.psmp 是 548 MB,而集群 2 里编译的结果却是 480 MB。


除了大小有区别之外,运行测试的结果也有区别(测试的命令也相同
  1. make ARCH=local VERSION=psmp TESTOPTS+="--mpiranks 4 --ompthreads 4 --timeout 2000" test
复制代码




集群 1 测试的结果
  1. ------------------------------- Summary --------------------------------
  2. Number of FAILED  tests 3
  3. Number of WRONG   tests 2
  4. Number of CORRECT tests 3928
  5. Total number of   tests 3933

  6. Summary: correct: 3928 / 3933; wrong: 2; failed: 3; 298min
  7. Status: FAILED

  8. *************************** Testing ended ******************************
  9. make[3]: *** [test] Error 5
  10. make[2]: *** [test] Error 2
  11. make[1]: *** [psmp] Error 2
  12. make: *** [test] Error 2
复制代码




集群 2 测试的结果


  1. ------------------------------- Timings --------------------------------
  2. Plot: name="timings", title="Timing Distribution", ylabel="time [s]"
  3. PlotPoint: name="100th_percentile", plot="timings", label="100th %ile", y=28.93, yerr=0.0
  4. PlotPoint: name="99th_percentile", plot="timings", label="99th %ile", y=9.96, yerr=0.0
  5. PlotPoint: name="98th_percentile", plot="timings", label="98th %ile", y=7.63, yerr=0.0
  6. PlotPoint: name="95th_percentile", plot="timings", label="95th %ile", y=5.27, yerr=0.0
  7. PlotPoint: name="90th_percentile", plot="timings", label="90th %ile", y=4.20, yerr=0.0
  8. PlotPoint: name="80th_percentile", plot="timings", label="80th %ile", y=2.81, yerr=0.0

  9. ------------------------------- Summary --------------------------------
  10. Number of FAILED  tests 5
  11. Number of WRONG   tests 2
  12. Number of CORRECT tests 3926
  13. Total number of   tests 3933

  14. Summary: correct: 3926 / 3933; wrong: 2; failed: 5; 47min
  15. Status: FAILED

  16. *************************** Testing ended ******************************
  17. make[3]: *** [test] Error 7
  18. make[2]: *** [test] Error 2
  19. make[1]: *** [psmp] Error 2
  20. make: *** [test] Error 2
复制代码



可以看出,集群 1 (cp2k.psmp 较大 548 MB)的错误相对少,3 (FAILED tests) + 2 (WRONG tests) = 5 个;
而集群 2(cp2k.psmp 较小 480 MB)的错误相对多,5 (FAILED tests) + 2 (WRONG tests) = 7 个

CP2K 2023-01 虽然安装上非常顺利(相比之前的 8.1,8.2,9.1,2022版本顺利太多),但是上述问题却让人很迷惑……








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