这篇博文很高级但很短。Psi4是一个开源量子力学包,它建立在CFOUR 之上,用于管理积分计算并大规模并行化它们。根据轨道的大小和复杂性,运行起来可能非常昂贵。
我们的集群像其他具有共享内存处理的集群一样使用 Sun Grid Engine。每个节点都有我们可以请求的不同数量的可用核心。
SGE 标头应具有此标志smp:
#$ -S /bin/bash
#$ -cwd
#$ -V
#S -pe smp 64
现在,我想最大化我在一个节点上控制所有核心分配的位置。我这样做是有原因的。接下来在你的 bash 脚本中设置你的MKL和OMP标志,告诉计算机好吧我们想要多处理数学,MKL以及它的处理架构,OMP所有进程共享内存和数据。
export MKL_NUM_THREADS=64
export OMP_NUM_THREADS=64
在运行 psi4 时的 python 脚本中,每个核心运行 1 个线程,最大内存为 1GB:
import psi4
psi4.core.set_num_threads(1)
psi4.core.set_memory('1000mb')
现在会发生什么,这是系统可用的数量。
现在这里发生的事情是我运行的系统不是太密集,所以 psi4 没有利用 64 个内核的全部空间。您可以看到运行平均值为 6。奇怪的是,我在服务器上看到了这些尖峰,它偶尔会要求 64,但没有超过红线条。
现在,我可以获取我的数据,但这是将来需要注意的事情