linux - 并行计算 : how to share computing resources among users?

标签 linux performance parallel-processing linux-kernel parallelism-amdahl

我正在使用以下规范的 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."



向亚琛致敬。如果不是事后评论,最快的选择将是预先配置计算生态系统,以便:
  • 检查您的 NUMA 设备的完整详细信息 - 使用 lstopo , 或 lstopo-no-graphics -.ascii不是 lscpu enter image description here
  • 启动您的作业,将尽可能多的 MPI 工作进程映射到物理 CPU 核心(最好每个单独映射到其私有(private))CPU 核心(因为它们承载核心 FEM/网格处理工作负载,因此值得这样做)
  • 如果您的 FH 政策没有禁止这样做,您可能会要求系统管理员引入 CPU 关联映射(这将保护您的缓存内数据免遭驱逐和昂贵的重新获取,这将使 10-CPU 映射专供以下用户使用您的同事和专为您的应用程序运行而映射的上述 30-CPU 以及列出的其余资源 ~ 40-CPU ~ 被你们各自的 CPU 关联掩码“共享”以供两者使用。

  • Q : "Using 30 MPI processes?"



    不,这对于 ASAP 处理来说不是一个合理的假设——为 worker 使用尽可能多的 CPU,尽可能多地用于已经 MPI 并行化的 FEM 模拟(它们具有高度的并行性,并且通常具有天生的“狭窄”局部性(将其表示为稀疏矩阵/N 波段矩阵)求解器,因此与其他数值问题相比,并行部分通常非常高)-Amdahl's Law explains为什么。 enter image description here

    当然,可能存在一些学术上的反对意见,即可能存在一些细微的差异,例如,在没有 worker 的情况下,通信开销可能会略有减少,但在 FEM/网格中需要蛮力处理规则-求解器(通信成本通常比大规模的 FEM 分段数值计算部分便宜得多,只发送少量相邻 block 的“边界”节点的状态数据)
    htop将向您显示实际状态(可能会注意到进程:CPU-core 徘徊,由于 HT/CPU-core Thermal-balancing 技巧,这会降低结果性能)

    enter image description here

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

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

    关于linux - 并行计算 : how to share computing resources among users?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60453080/

    相关文章:

    linux - 是否可以将选项(不是参数)传递给 bash 中的函数?

    linux - 大写的 Grep 语法

    linux - ffmpeg : Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, 速率、宽度或高度

    MySQL 使用 JOINS 非常慢

    ios - UIScrollView 性能技巧?

    c# - ASP .Net Core Queued 后台任务并行处理

    c++ - 在不同计算机上同步播放和录制

    visual-studio - 为什么vs2010最近这么慢?它几乎无法使用

    python - 如何执行一个不为序列中的每个项目并行返回任何内容的操作?

    c - 并行操作执行时间因分配动态内存与静态内存而异