2

我正在使用以下规格的 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 进程?

我是一名机械工程师,对并行计算知之甚少。所以如果这个问题太愚蠢,请原谅。

4

1 回答 1

1

“在这种情况下,对我来说最快的选择是什么? ...时间不够用了。我已经在进行模拟了。

向亚琛致敬。如果不是事后评论,最快的选择是预先配置计算生态系统,以便:

  • 检查您的 NUMA 设备的完整详细信息 - 使用lstopolstopo-no-graphics -.ascii不使用lscpu 在此处输入图像描述
  • 启动您的作业,将尽可能多的 MPI-worker 进程映射到物理(最好每个进程都专门映射到其私有)CPU 核心(因为它们承载核心 FEM / 网格处理工作负载,因此值得这样做)
  • 如果您的 FH 政策没有禁止这样做,您可能会要求系统管理员引入 CPU 关联映射(这将保护您的缓存内数据免遭驱逐和昂贵的重新获取,这将使 10-CPU 映射专供以下用户使用您的同事和专门为您的应用程序运行而映射的上述 30-CPU 以及列出的其余资源 ~ 40-CPU ~ 被你们各自的 CPU 关联掩码“共享”-供双方使用。

“使用 30 个 MPI 进程?”

不,这对于 ASAP 处理来说不是一个合理的假设——为工作人员使用尽可能多的 CPU,尽可能多地用于已经 MPI 并行化的 FEM 模拟(它们具有高度的并行性,并且通常具有天生的“狭窄”局部性(将其表示为稀疏矩阵/ N 波段矩阵)求解器,因此与其他数值问题相比,并行部分通常非常高) -阿姆达尔定律解释了原因。在此处输入图像描述

当然,可能存在一些学术上的反对意见,即可能存在一些细微的差异,例如,在没有工人的情况下,通信开销可能会略有减少,但在 FEM/网格中需要蛮力处理规则 -求解器(通信成本通常比大规模的 FEM 分段数值计算部分便宜得多,只发送少量相邻块的“边界”节点的状态数据)

将向您显示htop实际状态(可能会注意到过程:CPU-core 徘徊,由于 HT / CPU-core Thermal-balancing 技巧,从而降低了性能)

在此处输入图像描述

并且请咨询meshfree他们关于最佳实践的知识库资源的支持。


下一次 - 最好的选择是购买一个限制较少的计算基础设施来处理关键工作负载(考虑到业务关键条件认为这是平滑 BAU 的风险,如果影响您的业务连续性则更多)。

于 2020-02-28T15:09:55.160 回答