| 新闻来源:科学软件网 发表时间:2025/12/25 15:41:34 |
|
Molpro可在分布式内存多处理器系统(包括工作站集群)上运行,其并行计算通过Global Arrays并行工具包或MPI-2库进行控制。部分代码段也可通过OpenMP协议实现共享内存并行计算,但此类功能较为有限,目前暂不建议使用。需特别说明的是,该软件仍存在部分未并行化或仅部分并行化的代码段,这些代码会在各进程中重复执行。此外,某些已并行化的模块依赖于高速节点间通信,在普通网络环境中运行效率可能极低。因此在多用户环境中使用时,需通过审慎测试避免资源浪费。 以下附加选项可用于molpro命令来指定和控制并行计算。此外,适当的内存参数配置(-m、-M、-G)也至关重要,具体说明请参阅“内存参数配置”章节(https://www.molpro.net/manual/doku.php?id=running_molpro_on_parallel_computers#memory_specifications)。 • -n | --tasks tasks指定并行进程的数量,默认值为1。 • -N | --task-specification node1:tasks1, node2:tasks2…… node1、node2等用于指定运行任务的主机名称,task1、task2等则指定各节点上运行的进程数量。 • --ga-impl method指定大型数据结构在并行环境中的存储方式。可用选项为GA(GlobalArrays,默认方式)或disk(MPI文件存储,参见磁盘选项)。该选项对较新的程序模块(如Hartree-Fock、DFT、MCSCF/CASSCF及PNO系列程序)具有重要影响。 • -D | --global-scratch directory用于指定程序的全局暂存目录,该目录在多节点计算中需能被所有处理器访问。此选项仅在使用磁盘存储选项的并行计算中生效。 • --all-outputs 在并行运行时为每个进程生成独立的输出文件。 大规模并行Molpro计算可能涉及大量全局数据结构,这在PNO-LCCSD计算中尤为显著,其次在Hartree-Fock、DFT和MCSCF/CASSCF计算中也有体现。对于此类计算,可能需要在Molpro的“栈”内存(由命令行选项-m或输入文件中的memory指令定义)与GA内存(由命令行选项-G定义)之间合理分配机器的可用内存: • 若禁用磁盘选项(默认设置)且使用旧版GA运行时(如sockets、openib等):必须通过-G或-M选项(见下文)指定足够的GA内存容量,并由Molpro在计算开始时预先分配,否则计算可能崩溃或产生错误结果。 • 若禁用磁盘选项但使用基于comex的GA运行时(如mpi-pr),或启用磁盘选项但暂存目录位于tmpfs中:此时-G或-M选项非强制要求,但仍需为全局数据结构预留充足的物理内存。 • 若启用磁盘选项且暂存目录位于物理磁盘上:此时GA内存占用可忽略不计,无需指定-G或-M选项。但若预留部分内存供系统缓冲I/O操作,计算性能可能会有所提升。 • 需注意的是,自Molpro 2021.2版本起,单节点计算已默认启用磁盘存储选项。若此设置导致性能问题,可通过将环境变量MOLPRO_GA_IMPL设置为GA,或使用--ga-impl ga命令行参数,以恢复此前将大型数据结构存储于GlobalArrays的运行模式。 -m与-G选项默认以兆字(m)为单位,但也可使用千兆字(g)单位(例如-m1000等价于-m1000m和-m1g)。Molpro在每个节点分配的总内存M为(n⋅m + G)/N,其中n为总进程数(-n选项),m为每个进程的栈内存(-m选项),G为GA内存(-G选项),N为节点数量。此外,每个进程还需为程序本身预留至少200兆字(MW)内存。整体而言,计算所需内存总量约为8⋅[n⋅(m+0.3)+G]/N GB(千兆字节)(其中n、m、G以千兆字gw为单位),且不应超过所用机器的物理内存总量。需特别说明,在许多计算场景中为系统预留部分内存用于缓冲I/O操作,可能显著提升运行性能。 • 密度拟合及PNO计算:将内存按1:1比例分配给GA内存与栈内存。 • HF、DFT及MCSCF计算:75%分配给栈内存,25%分配给GA内存。 • 单节点正则MRCI或CCSD(T)计算:无需分配GA内存空间。 • 仅使用-M:按前述规则自动分配内存。 • 同时使用-M与-m:为每个核心分配指定容量m,剩余内存分配给GA。 • 同时使用-M与-G:为GA分配指定容量G,剩余内存平均分配给各进程的栈内存。 • 同时使用-M、-G与-m:按指定容量分配m与G,此时-M值将被忽略。 • 同时使用-G与-m:按指定容量分配m与G。 • 仅使用-m:分配指定容量m,同时假定GA空间无限大,但不会预先分配或检测实际容量。 • 仅使用-G:分配指定容量G,并为栈内存分配等量总空间(即总内存M=2G)。 • 未指定任何参数:默认按-m32m处理。 磁盘选项 自2021.1版本起,Molpro可采用MPI文件替代GlobalArrays存储大型全局数据。此功能可通过设置环境变量MOLPRO_GA_IMPL=DISK全局启用,或通过命令行选项--ga-impl disk单独启用。自2021.2版本开始,单节点计算已默认启用磁盘存储选项。Molpro中部分程序模块(包括DF-HF、DF-KS、(DF-)MULTI、DF-TDDFT及PNO-LCCSD)还支持通过输入参数implementation=disk为特定计算步骤启用磁盘存储选项。这些MPI文件所使用的文件系统必须能被所有处理器访问。默认情况下程序将使用Molpro预设的暂存目录,但也可通过命令行选项-D或环境变量MOLPRO_GLOBAL_SCRATCH指定其他目录用于存储MPI文件。在单节点计算中,该目录可设置为tmpfs(例如-D /dev/shm),此时GA/MPI文件将保存在共享内存中。 梯度或Hessian矩阵的数值计算,以及势能面的自动生成,需要在不同(位移)几何结构下执行大量相似计算。程序为梯度、Hessian和势能面计算模块实现了不同几何结构下能量和/或梯度的自动并行计算。在此称为mppx模式的运行方式中,每个处理核心以串行模式独立执行计算。该过程将自动利用-n参数指定的可用核心数。若需关闭自动mppx处理功能,可在OPTG、FREQ或HESSIAN命令行中设置选项mppx=0,此时程序将以标准并行模式处理每个位移计算。 调试选项 • ga-debug 启用GA调试信息输出。 • check-collective 调试时检查集体通信操作。 若使用Molpro二进制发行版或采用GlobalArrays工具包构建的Molpro(此为推荐方式),本节内容不适用。 在纯MPI实现的PPIDD中,可选择使用MPI-2单边内存访问机制,或指定部分进程作为数据“辅助进程”。通常发现使用至少一个专用辅助进程能显著提升性能,某些情况下建议指定更多辅助进程。在典型多核集群机器中,可扩展的方案是在每个节点预留一个内核作为辅助进程,但在多数情况下使用更少的辅助进程也可满足需求,从而为计算任务释放更多内核资源。选项如下: • --multiple-helper-server nprocs_per_server启用多辅助服务器模式,nprocs_per_server参数设置每个辅助服务器所服务的进程数量。例如,当总进程数指定为32且nprocs_per_server=8时,每8个进程(包含辅助服务器自身)将共享一个辅助服务器,共计生成4个辅助服务器。若nprocs_per_server参数设置不合理(即任何小于2的整数),该值将自动重置为极大数值,此时功能等同于--single-helper-server选项。 • --node-helper-server 指定在每个节点上启用一个辅助服务器(前提是所有节点配置对称且进程数分配合理,即各节点进程数相同且大于1),此为该选项的默认行为。若条件不满足,则仅针对所有进程/节点启用单一辅助服务器,此时功能等同于--single-helper-server选项。 • --single-helper-server 指定所有进程仅使用单一辅助服务器。 •--no-helper-server 禁用辅助服务器功能。 |