计算化学公社

 找回密码 Forget password
 注册 Register

在有 slurm 的集群中编译 CP2K 报错(后续更新)

查看数: 2372 | 评论数: 14 | 收藏 Add to favorites 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-3-30 18:14

正文摘要:

本帖最后由 乐平 于 2024-3-27 16:52 编辑 最近在装有 slurm 作业调度系统的集群里用 toolchain 编译 CP2K 2022.02 时候,到 openmpi 这一步是发现如下的报错 ==================== Installing OpenMPI ======= ...

回复 Reply

kotori 发表于 Post on 2024-7-24 22:18:31
本帖最后由 kotori 于 2024-7-24 22:20 编辑
乐平 发表于 2024-7-21 15:05
谢谢您的讨论
我之前是注释掉了这几行,见 7 楼的内容
http://bbs.keinsci.com/forum.php?mod=redirect ...

感谢您指出问题,这里我表达有误
  1. which srun
  2. /path_to_slurm/slurm/bin/srun
复制代码
这里主要是用which命令定位slurm的安装位置,实际只需要填写/path_to_slurm/slurm/部分,不需要加上/bin或者/include的额外路径,安装openmpi的过程中就能正确的找到PMI的头文件,例如下面是我编译过程中的日志信息
configure:12787: checking if user requested PMI support
configure:12794: result: yes
configure:12818: checking for pmi.h in /path_to_slurm/slurm
configure:12825: result: not found
configure:12827: checking for pmi.h in /path_to_slurm/slurm/include
configure:12834: result: not found
configure:12836: checking for pmi.h in /path_to_slurm/slurm/include/slurm
configure:12839: result: found

这样编译过程中就能顺利找到pmi.h头文件,就不会出现报错了
乐平 发表于 Post on 2024-7-21 15:05:00
kotori 发表于 2024-7-21 02:00
最近在组里新机器上编译也遇到了这个问题
定位了一下问题发现是tools/toolchain/scripts/stage1/install_o ...

谢谢您的讨论
我之前是注释掉了这几行,见 7 楼的内容
http://bbs.keinsci.com/forum.php ... 10&fromuid=1532


另外,您提到
  1. which srun
复制代码

这里返回的 srun 的路径

但是,补充的路径却写着
  1. EXTRA_CONFIGURE_FLAGS="--with-pmi=/path_to_slurm/slurm"
复制代码


是不是笔误?或者会造成误解?
kotori 发表于 Post on 2024-7-21 02:00:00
最近在组里新机器上编译也遇到了这个问题
定位了一下问题发现是tools/toolchain/scripts/stage1/install_openmpi.sh里面的第60行
  1. EXTRA_CONFIGURE_FLAGS="--with-pmi"
复制代码
这里如果不指定slurm安装路径,就会从默认位置查找,这里只需要查找一下集群的slurm安装路径

  1. which srun
复制代码
然后修改install_openmpi.sh,将实际的安装路径填上就可以了,例如

  1. EXTRA_CONFIGURE_FLAGS="--with-pmi=/path_to_slurm/slurm"
复制代码
修改后就能正常完整openmpi编译了

doublezhang 发表于 Post on 2023-12-28 17:02:31
也有不用动install_openmpi.sh的解决方案,可以echo $PATH 看看你的$PATH里有啥,然后把slurm的bin和其他没用的path都从path里清出去
NUAAjj 发表于 Post on 2023-12-28 11:27:58
乐平 发表于 2023-4-23 20:39
专门回来感谢您!

最终还是绕过了 slurm,编译成功。

很好的解决了问题 谢谢您
海鸥 发表于 Post on 2023-12-25 14:34:42
乐平 发表于 2023-12-20 10:26
你说的是哪个问题?

编译问题已经解决,看我最后的回复。

你好,之前问的是编译的问题;不过后续我用module采用用集群的gcc9.3.0 然后安装toolchain里的openmpi,就没有报错了;可以正常运行,谢谢回复!
乐平 发表于 Post on 2023-12-20 10:26:42
海鸥 发表于 2023-12-19 16:29
楼主现在有解决这个问题吗

你说的是哪个问题?

编译问题已经解决,看我最后的回复。

测试还是那几个没通过

open mpi 还是有类似的 .log
海鸥 发表于 Post on 2023-12-19 16:29:07
楼主现在有解决这个问题吗
乐平 发表于 Post on 2023-4-23 20:39:54
本帖最后由 乐平 于 2023-4-23 21:13 编辑
pwzhou 发表于 2023-3-30 19:41
另外,安装opnempi时可以不用--with-pmi,后期照样可以用slurm来调度,所以可以在编译的时候把slurm的路 ...

专门回来感谢您!

最终还是绕过了 slurm,编译成功。

具体而言是注释掉了 tools/toolchain/scripts/stage1/install_openmpi.sh 里第 58 -- 63 行,以及第 68 -- 69 行。

  1. 58 #      if [ $(command -v srun) ]; then
  2. 59 #        echo "Slurm installation found. OpenMPI will be configured with --with-pmi."
  3. 60 #        EXTRA_CONFIGURE_FLAGS="--with-pmi"
  4. 61 #      else
  5. 62 #        EXTRA_CONFIGURE_FLAGS=""
  6. 63 #      fi
  7. 64       # We still require MPI-1.0-compatability for PTSCOTCH
  8. 65       ./configure CFLAGS="${CFLAGS}" \
  9. 66         --prefix=${pkg_install_dir} \
  10. 67         --libdir="${pkg_install_dir}/lib" \
  11. 68 #      --enable-mpi1-compatibility \
  12. 69 #        ${EXTRA_CONFIGURE_FLAGS} \
  13. 70         > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log
  14. 71       make -j $(get_nprocs) > make.log 2>&1 || tail -n ${LOG_LINES} make.log
  15. 72       make -j $(get_nprocs) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log
  16. 73       cd ..
  17. 74       write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})"
复制代码


跳过了 slurm 之后就一切顺利了。

编译完之后运行测试,

  1. make ARCH=local VERSION=psmp TESTOPTS+="--mpiranks 4 --ompthreads 4 --timeout 2000" test
复制代码



经过大约 47 分钟,最终得到测试报告如下:
  1. ------------------------------- Summary --------------------------------
  2. Number of FAILED  tests 5
  3. Number of WRONG   tests 2
  4. Number of CORRECT tests 3926
  5. Total number of   tests 3933

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

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


3933 个测试任务正常完成 3926 个,有 5 个失败,2 个错误。这些内容可以 regtesting/TEST-local-psmp-XXXXX/error_summary(XXXXX 为运行测试的年-月-日_时间),具体错误的算例包括:
  1. TMC/regtest_ana_on_the_fly/TMC_ana_start_with_exist_traj.inp.out
  2. TMC/regtest_ana_on_the_fly/TMC_ana_restart.inp.out
  3. QS/regtest-gpw-4/H2O-debug-5.inp.out
  4. QS/regtest-gpw-4/H2O-debug-6.inp.out
  5. QS/regtest-nmr-6/no-gapw-1-distributed.inp.out
  6. QS/regtest-nmr-1/H2O-NMR-4.inp.out
  7. QS/regtest-nmr-2/he2_bug_disp.inp.out
复制代码



从 error_summary 中还可以看到有如下的警告和报错信息:

  1. *** WARNING in tmc/tmc_worker.F:401 :: analysis old trajectory up to elem ***
  2. ***     30                   . Read trajectory file.                      ***

  3. TMC_ANA| read xyz file                             ./tmc_trajectory_T300.00.xyz
  4. TMC_ANA| read cell file                           ./tmc_trajectory_T300.00.cell

  5. *** WARNING in tmc/tmc_file_io.F:645 :: end of position file reached at ***
  6. *** line  4.1500E+02              , last element     30                 ***


  7. *** WARNING in tmc/tmc_worker.F:401 :: analysis old trajectory up to elem ***
  8. ***     50                   . Read trajectory file.                      ***

  9. TMC_ANA| read xyz file                             ./tmc_trajectory_T380.00.xyz
  10. TMC_ANA| read cell file                           ./tmc_trajectory_T380.00.cell

  11. *** WARNING in tmc/tmc_file_io.F:645 :: end of position file reached at ***
  12. *** line  8.7500E+02              , last element     50                 ***


  13. *** WARNING in tmc/tmc_worker.F:401 :: analysis old trajectory up to elem ***
  14. ***     34                   . Read trajectory file.                      ***

  15. TMC_ANA| read xyz file                             ./tmc_trajectory_T460.00.xyz
  16. TMC_ANA| read cell file                           ./tmc_trajectory_T460.00.cell

  17. *** WARNING in tmc/tmc_file_io.F:645 :: end of position file reached at ***
  18. *** line  5.3000E+02              , last element     34                 ***


  19. Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

  20. Backtrace for this error:
  21. #0  0x2b814a2b627f in ???
  22. #1  0xc796fd in create_analysis_request_message
  23.         at /public/home/clxy_wh/myapps/cp2k202301/src/tmc/tmc_messages.F:1476
  24. #2  0xc86d06 in __tmc_messages_MOD_tmc_message
  25.         at /public/home/clxy_wh/myapps/cp2k202301/src/tmc/tmc_messages.F:192
  26. #3  0xc5bdb6 in send_analysis_tasks
  27.         at /public/home/clxy_wh/myapps/cp2k202301/src/tmc/tmc_master.F:190
  28. #4  0xc5bdb6 in __tmc_master_MOD_do_tmc_master
  29.         at /public/home/clxy_wh/myapps/cp2k202301/src/tmc/tmc_master.F:622
  30. #5  0xc359b5 in __tmc_setup_MOD_do_tmc
  31.         at /public/home/clxy_wh/myapps/cp2k202301/src/tmc/tmc_setup.F:220
  32. #6  0x8f8257 in cp2k_run
  33.         at /public/home/clxy_wh/myapps/cp2k202301/src/start/cp2k_runs.F:319
  34. #7  0x8fc1a0 in __cp2k_runs_MOD_run_input
  35.         at /public/home/clxy_wh/myapps/cp2k202301/src/start/cp2k_runs.F:997
  36. #8  0x8f7442 in cp2k
  37.         at /public/home/clxy_wh/myapps/cp2k202301/src/start/cp2k.F:379
  38. #9  0x4da39c in main
  39.         at /public/home/clxy_wh/myapps/cp2k202301/src/start/cp2k.F:44
  40. --------------------------------------------------------------------------
  41. Primary job  terminated normally, but 1 process returned
  42. a non-zero exit code. Per user-direction, the job has been aborted.
  43. --------------------------------------------------------------------------
  44. --------------------------------------------------------------------------
  45. mpiexec noticed that process rank 3 with PID 0 on node login exited on signal 11 (Segmentation fault).
  46. --------------------------------------------------------------------------
  47. [login:50592] 7 more processes have sent help message help-mpi-btl-openib.txt / no device params found
  48. [login:50592] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
  49. [login:50592] 11 more processes have sent help message help-mpi-btl-openib-cpc-base.txt / no cpcs for port
复制代码


似乎是内存以及 open mpi 的问题造成的?


单独拿 benchmark/QS/H2O-64.inp 作为测试例子,用 slurm 作业调度系统提交任务,

  1. #!/bin/bash
  2. #SBATCH --job-name=cp2kTest
  3. #SBATCH --nodes=1
  4. #SBATCH --ntasks-per-node=56
  5. #SBATCH --cpus-per-task=1
  6. #SBATCH --partition=debug
  7. #SBATCH --output=%j.log

  8. #### load the environment
  9. module purge

  10. source /public/software/apps/cp2k-2023.1/tools/toolchain/install/setup

  11. EXEC=/public/software/apps/cp2k-2023.1/exe/local/cp2k.popt


  12. cd $SLURM_SUBMIT_DIR

  13. mpirun -np $SLURM_NTASKS $EXEC -i H2O-64.inp -o H2O-64.out
复制代码


能运行得到结果。 H2O-64.out 文件似乎是正常的,能正常完成自洽计算(SCF),速度也还算比较快。
  1. -------------------------------------------------------------------------------
  2. -                                                                             -
  3. -                                T I M I N G                                  -
  4. -                                                                             -
  5. -------------------------------------------------------------------------------
  6. SUBROUTINE                       CALLS  ASD         SELF TIME        TOTAL TIME
  7.                                 MAXIMUM       AVERAGE  MAXIMUM  AVERAGE  MAXIMUM
  8. CP2K                                 1  1.0    0.516    0.553   59.831   59.840
  9. qs_mol_dyn_low                       1  2.0    0.011    0.019   57.545   57.566
  10. qs_forces                           11  3.9    0.007    0.019   57.304   57.311
  11. qs_energies                         11  4.9    0.005    0.011   53.972   53.983
  12. scf_env_do_scf                      11  5.9    0.036    0.050   48.726   48.728
  13. scf_env_do_scf_inner_loop          108  6.5    0.006    0.075   44.878   44.881
  14. velocity_verlet                     10  3.0    0.007    0.018   34.088   34.090
  15. dbcsr_multiply_generic            2286 12.5    0.129    0.158   20.057   20.268
  16. rebuild_ks_matrix                  119  8.3    0.002    0.002   19.288   19.402
  17. qs_ks_build_kohn_sham_matrix       119  9.3    0.026    0.046   19.287   19.400
  18. qs_scf_new_mos                     108  7.5    0.001    0.001   17.330   17.531
  19. qs_scf_loop_do_ot                  108  8.5    0.001    0.001   17.329   17.530
  20. qs_ks_update_qs_env                119  7.6    0.001    0.002   17.143   17.246
  21. ot_scf_mini                        108  9.5    0.003    0.003   16.234   16.356
  22. sum_up_and_integrate               119 10.3    0.041    0.045   13.975   14.019
  23. integrate_v_rspace                 119 11.3    0.004    0.005   13.934   13.978
  24. qs_rho_update_rho_low              119  7.7    0.002    0.007   13.664   13.761
  25. calculate_rho_elec                 119  8.7    0.025    0.033   13.662   13.760
  26. multiply_cannon                   2286 13.5    0.193    0.216   12.035   12.706
  27. multiply_cannon_loop              2286 14.5    0.311    0.373   10.603   11.163
  28. mp_waitall_1                    216986 16.5    7.806   11.080    7.806   11.080
  29. ot_mini                            108 10.5    0.002    0.002   10.200   10.349
  30. multiply_cannon_metrocomm3       64008 15.5    0.098    0.123    6.259    9.633
  31. grid_collocate_task_list           119  9.7    8.680    9.011    8.680    9.011
  32. grid_integrate_task_list           119 12.3    8.360    8.603    8.360    8.603
  33. qs_ot_get_derivative               108 11.5    0.003    0.009    6.880    7.015
  34. rs_pw_transfer                     974 11.9    0.013    0.015    5.924    6.262
  35. density_rs2pw                      119  9.7    0.008    0.019    4.329    4.608
  36. make_m2s                          4572 13.5    0.098    0.126    4.203    4.444
  37. potential_pw2rs                    119 12.3    0.006    0.007    4.257    4.279
  38. multiply_cannon_multrec          64008 15.5    2.088    4.102    2.102    4.117
  39. make_images                       4572 14.5    0.171    0.193    3.537    3.824
  40. init_scf_loop                       11  6.9    0.032    0.034    3.794    3.799
  41. init_scf_run                        11  5.9    0.001    0.002    3.780    3.781
  42. scf_env_initial_rho_setup           11  6.9    0.007    0.009    3.779    3.780
  43. pw_transfer                       1439 11.6    0.089    0.098    3.594    3.779
  44. fft_wrap_pw1pw2                   1201 12.6    0.011    0.011    3.442    3.623
  45. mp_sum_l                         11218 13.2    2.643    3.319    2.643    3.319
  46. ot_diis_step                       108 11.5    0.008    0.015    3.260    3.285
  47. mp_waitany                       32348 13.8    2.662    3.134    2.662    3.134
  48. qs_ot_get_derivative_taylor         59 13.0    0.001    0.002    3.045    3.119
  49. apply_preconditioner_dbcsr         119 12.6    0.000    0.000    2.957    3.097
  50. apply_single                       119 13.6    0.000    0.000    2.956    3.097
  51. fft3d_ps                          1201 14.6    1.062    1.379    2.803    2.974
  52. multiply_cannon_metrocomm4       59436 15.5    0.166    0.198    1.513    2.914
  53. fft_wrap_pw1pw2_140                487 13.2    0.253    0.276    2.517    2.737
  54. mp_irecv_dv                     145658 16.0    1.270    2.668    1.270    2.668
  55. wfi_extrapolate                     11  7.9    0.014    0.038    2.624    2.624
  56. qs_ot_get_p                        119 10.4    0.004    0.016    2.403    2.589
  57. qs_ks_update_qs_env_forces          11  4.9    0.000    0.000    2.312    2.327
  58. rs_pw_transfer_RS2PW_140           130 11.5    0.376    0.434    1.859    2.159
  59. mp_alltoall_d11v                  2130 13.8    1.933    2.156    1.933    2.156
  60. qs_ot_get_derivative_diag           49 12.0    0.002    0.003    1.945    2.010
  61. make_images_sizes                 4572 15.5    0.005    0.006    1.467    1.875
  62. mp_alltoall_i44                   4572 16.5    1.462    1.871    1.462    1.871
  63. rs_pw_transfer_PW2RS_140           130 13.9    0.707    0.751    1.726    1.786
  64. mp_sum_d                          4125 12.0    1.308    1.735    1.308    1.735
  65. rs_gather_matrices                 119 12.3    0.083    0.094    1.261    1.487
  66. cp_dbcsr_sm_fm_multiply             37  9.5    0.001    0.001    1.459    1.473
  67. prepare_preconditioner              11  7.9    0.000    0.000    1.380    1.401
  68. make_preconditioner                 11  8.9    0.005    0.013    1.380    1.401
  69. calculate_dm_sparse                119  9.5    0.000    0.001    1.307    1.398
  70. mp_alltoall_z22v                  1201 16.6    1.144    1.321    1.144    1.321
  71. make_full_inverse_cholesky          11  9.9    0.000    0.000    1.259    1.318
  72. qs_init_subsys                       1  2.0    0.033    0.040    1.260    1.270
  73. -------------------------------------------------------------------------------

  74. The number of warnings for this run is : 2

  75. -------------------------------------------------------------------------------
  76.   **** **** ******  **  PROGRAM ENDED AT                 2023-04-23 21:02:22.059
  77. ***** ** ***  *** **   PROGRAM RAN ON                                     p12
  78. **    ****   ******    PROGRAM RAN BY                                   clxy_wh
  79. ***** **    ** ** **   PROGRAM PROCESS ID                                 32341
  80.   **** **  *******  **  PROGRAM STOPPED IN /public/home/clxy_wh/tests/cp2k_tests
复制代码




不过呢,计算过程中会产生 “任务号.log” 文件,里面也有用 make test 出现的类似的报错信息

  1. --------------------------------------------------------------------------
  2. WARNING: No preset parameters were found for the device that Open MPI
  3. detected:

  4. Local host: p12
  5. Device name: i40iw0
  6. Device vendor ID: 0x8086
  7. Device vendor part ID: 14289

  8. Default device parameters will be used, which may result in lower
  9. performance. You can edit any of the files specified by the
  10. btl_openib_device_param_files MCA parameter to set values for your
  11. device.

  12. NOTE: You can turn off this warning by setting the MCA parameter
  13. btl_openib_warn_no_device_params_found to 0.
  14. --------------------------------------------------------------------------
  15. --------------------------------------------------------------------------
  16. No OpenFabrics connection schemes reported that they were able to be
  17. used on a specific port. As such, the openib BTL (OpenFabrics
  18. support) will be disabled for this port.

  19. Local host: p12
  20. Local device: mlx5_0
  21. Local port: 1
  22. CPCs attempted: rdmacm, udcm
  23. --------------------------------------------------------------------------
  24. [gpu12:32329] 111 more processes have sent help message help-mpi-btl-openib.txt / no device params found
  25. [gpu12:32329] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
  26. [gpu12:32329] 167 more processes have sent help message help-mpi-btl-openib-cpc-base.txt / no cpcs for port
复制代码



不知道这个 open mpi 报错信息应该如何纠正? 或者不理它会不会有什么影响?




评分 Rate

参与人数
Participants 2
eV +10 收起 理由
Reason
John_Tao + 5 谢谢
Rosefinch + 5 赞!

查看全部评分 View all ratings

乐平 发表于 Post on 2023-3-30 19:49:43
pwzhou 发表于 2023-3-30 19:41
另外,安装opnempi时可以不用--with-pmi,后期照样可以用slurm来调度,所以可以在编译的时候把slurm的路 ...

非常感谢您的回复。

我先联系曙光的工程师,把 slurm-devel 包装上试试。
pwzhou 发表于 Post on 2023-3-30 19:41:00
pwzhou 发表于 2023-3-30 19:37
要正确编译的话需要slurm-devel这个包,这个包里面有需要的头文件。
看你这个目录安装的应该是曙光打包 ...

另外,安装opnempi时可以不用--with-pmi,后期照样可以用slurm来调度,所以可以在编译的时候把slurm的路径从环境变量里面临时去掉,然后openmpi编译的时候就不会自动加上--with-pmi了。所以,如果slurm-devel这个包的问题解决不了的话,就临时去掉slurm的环境变量再编译。
pwzhou 发表于 Post on 2023-3-30 19:37:50
乐平 发表于 2023-3-30 19:20
谢谢回复

集群里 slurm 安装路径如下

要正确编译的话需要slurm-devel这个包,这个包里面有需要的头文件。
看你这个目录安装的应该是曙光打包的slurm,问问系统管理员或者曙光的工程师,让把slurm-devel这个包安装上即可。
abin 发表于 Post on 2023-3-30 18:53:37
找到slurm的相关文件即可。
如果这个集群采用的是自己修改或者自定义编译的slurm,
处理起来比较麻烦……
找到安装位置即可。

另,在任何形式的机器上,如有调度器,
当然是编译MPI的时候,要告诉它,
要支持XXX调度器。

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

GMT+8, 2024-11-23 17:07 , Processed in 0.202579 second(s), 27 queries , Gzip On.

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