我正在使用以下规范的 Linux 机器上运行模拟。
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 80
On-line CPU(s) list: 0-79
Thread(s) per core: 2
Core(s) per socket: 20
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
Stepping: 4
CPU MHz: 3099.902
CPU max MHz: 3700.0000
CPU min MHz: 1000.0000
BogoMIPS: 4800.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 28160K
这是我的求解器的运行命令行脚本。
/path/to/meshfree/installation/folder/meshfree_run.sh # on 1 (serial) worker
/path/to/meshfree/installation/folder/meshfree_run.sh N # on N parallel MPI processes
我与我的另一位同事共享该系统。他的解决方案使用了 10 个内核。在这种情况下,对我来说最快的选择是什么?使用 30 个 MPI 进程?
我是一名机械工程师,对并行计算知之甚少。所以如果这个问题太愚蠢,请原谅。
最佳答案
Q : "What would be the fastest option for me in this case? ...running short on time. I am already in the middle of a simulation."
向亚琛致敬。如果不是事后评论,最快的选择将是预先配置计算生态系统,以便:
lstopo
, 或 lstopo-no-graphics -.ascii
不是 lscpu
Q : "Using 30 MPI processes?"
不,这对于 ASAP 处理来说不是一个合理的假设——为 worker 使用尽可能多的 CPU,尽可能多地用于已经 MPI 并行化的 FEM 模拟(它们具有高度的并行性,并且通常具有天生的“狭窄”局部性(将其表示为稀疏矩阵/N 波段矩阵)求解器,因此与其他数值问题相比,并行部分通常非常高)-Amdahl's Law explains为什么。
当然,可能存在一些学术上的反对意见,即可能存在一些细微的差异,例如,在没有 worker 的情况下,通信开销可能会略有减少,但在 FEM/网格中需要蛮力处理规则-求解器(通信成本通常比大规模的 FEM 分段数值计算部分便宜得多,只发送少量相邻 block 的“边界”节点的状态数据)
htop
将向您显示实际状态(可能会注意到进程:CPU-core 徘徊,由于 HT/CPU-core Thermal-balancing 技巧,这会降低结果性能)请咨询
meshfree
支持他们关于最佳实践的知识库资源。下一次 - 最好的选择是购买一个限制较少的计算基础设施来处理关键工作负载(考虑到业务关键条件认为这是平滑 BAU 的风险,如果影响您的业务连续性则更多)。
关于linux - 并行计算 : how to share computing resources among users?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60453080/