问题标签 [intel-mpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在 C++ 中使用 MPI 对简单循环进行负载平衡
我正在编写一些计算成本高但高度可并行化的代码。一旦并行化,我打算在 HPC 上运行它,但是为了将运行时间控制在一周内,问题需要随着处理器的数量很好地扩展。
下面是我试图实现的一个简单而可笑的例子,它足够简洁,可以编译和演示我的问题;
我已经在我的四核笔记本电脑上编译了这个问题
我得到以下输出;
对我来说,似乎一定有一个我不知道的障碍。使用 2 个处理器而不是 3 个处理器,我可以获得更好的性能。有人可以提供任何建议吗?谢谢
job-scheduling - 为弱扩展测试优先考虑小型 HPC 作业的最佳作业调度程序策略是什么?
我有兴趣在 HPC 集群上执行弱扩展测试。为了实现这一点,我在 1、2、4、8、16、32、64 个节点上运行了几个小测试,每次模拟需要不到一分钟到最多 1 小时。但是,在测试结果可用之前,作业会在队列中(1 小时队列)等待几天。
我有两个问题:
鉴于大多数测试不到一分钟而我必须等待几天,有没有办法在作业调度程序中确定作业的优先级?
这样的作业调度策略会在多大程度上引起对 HPC 资源的滥用。考虑一个在 32 个节点上进行 HPC 模拟的假设示例,该示例分为几个小的 1 小时模拟,由于上面第 1 点提供的解决方案,这些模拟得到优先级。
注意:HPC 中心使用的作业调度和管理系统是MOAB。每个集群节点配备 2 个 Xeon 6140 CPU@2.3 GHz (Skylake),每个 18 个内核。
linux - 无法使用 intel icc 和 intelmpi 编译 OpenFOAM v1912
!2020 年 2 月 28 日更新:问题已解决。请参考:https ://develop.openfoam.com/Development/openfoam/issues/1608
概括
我是 OpenFOAM 的新手,我正在尝试使用 Icc 和 IntelMPI 编译 OpenFOAM-v1912,却发现以下令人困惑的错误。这似乎是代码中的错误。但这没有任何意义,因为我已经用 gcc(v4.8.5) 和 openmpi(1.10.7) 成功编译了它,而且效果很好。我很高兴听到任何建议。关于问题可能是什么的想法也将有很大帮助。多谢!
wallBoundedStreamLine/wallBoundedParticleTemplates.C(121):错误:没有运算符“==”匹配这些操作数
重现步骤
我编辑了 OpenFOAM-v1912/etc/bashrc
至
我得到“ld:找不到-lmpi”错误,所以我编辑 OpenFOAM-v1912/wmake/rules/General/Icc/c++
至
然后在目录 OpenFOAM-v1912/ 下,我跑了
我试过的
- 使用 $WM_LABEL_SIZE=64 编译
但它似乎无关紧要,它被困在了建设libscotch
中。似乎一点帮助都没有。
提示中的错误详细信息:
环境信息
- OpenFOAM:v1912(来自https://sourceforge.net/projects/openfoam/files/v1912/OpenFOAM-v1912.tgz的代码)
- 来自https://sourceforge.net/projects/openfoam/files/v1912/ThirdParty-v1912.tgz的第三方
- 英特尔套件:parallel_studio_xe_2020_cluster_edition
- 英特尔 icc:icc (ICC) 19.1.0.166 20191121
- 英特尔 MPI 库:适用于 Linux* 操作系统,版本 2019 Update 6 Build 20191024
- 操作系统内核:Linux 版本 3.10.0-1062.el7.x86_64(gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC))
- 操作系统:CentOS 7.7.1908
- CPU:72 * Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz
解决方案
问题已经解决了!请参考https://develop.openfoam.com/Development/openfoam/issues/1608。
memory - 在 IntelMPI 内存泄漏上,将程序上传到 OpenMPI 会导致初始化错误
我是一名研究生(硕士),并使用内部代码来运行使用 MPI 的模拟。早些时候,我在我们曾经访问过的超级计算机上使用了 OpenMPI,自从它关闭后,我一直在尝试切换到另一台安装了 Intel MPI 的超级计算机。问题是,之前运行良好的相同代码现在在一定数量的迭代(时间步长)后会出现内存泄漏。由于代码比较大,而且我对 MPI 的了解非常基础,因此调试起来非常困难。所以我将 OpenMPI 安装到我正在使用的这台新超级计算机上,但它在执行时给出以下错误消息,然后终止:
PE 数量无效 请检查分区模式或 PE 数量
注意:对于我用来运行案例的多个节点(这里是 8 个)重复错误消息。使用带有 -fopenmp 的 mpif90 编译,用于线程并行化。
事实上,不能保证在 OpenMPI 上运行它不会导致内存泄漏,但我觉得值得一试,因为它之前运行得非常好。
PS:在英特尔 MPI 上,这是我得到的错误(使用带有 -qopenmp 的 mpiifort 编译)
节点 16 上的中止(941211497)(comm 0 中的第 16 位):PMPI_Isend 中的致命错误:>未知错误类别,错误堆栈:PMPI_Isend(152)............:MPI_Isend(buf=0x2aba1cbc8060, count=4900, dtype=0x4c000829, dest=20, tag=0, MPI_COMM_WORLD, request=0x7ffec8586e5c) MPID_Isend(662).......: MPID_isend_unsafe(282)....: MPIDI_OFI_send_normal( 305): 为节点 17 上的请求对象 Abort(203013993) 分配内存时发生故障(comm 0 中的排名 17):PMPI_Isend 中的致命错误:>未知错误类,错误堆栈:PMPI_Isend(152)...... .....: MPI_Isend(buf=0x2b38c479c060, count=4900, dtype=0x4c000829, dest=21, tag=0, MPI_COMM_WORLD, request=0x7fffc20097dc) 失败 MPID_Isend(662)............ : MPID_isend_unsafe(282)....: MPIDI_OFI_send_normal(305):为请求对象 [mpiexec@cx0321.obcx] HYD_sock_write (../../../../../src/pm/i_hydra/libhydra/sock/hydra_sock_intel.c:357) 分配内存时发生故障:写入错误(错误的文件描述符)[mpiexec@cx0321.obcx] cmd_bcast_root (../../../../../src/pm/i_hydra/mpiexec/mpiexec.c:164):发送 cmd 15 时出错代理 [mpiexec@cx0321.obcx] send_abort_rank_downstream (../../../../../src/pm/i_hydra/mpiexec/intel/i_mpiexec.c:557):无法向下游发送响应 [mpiexec @cx0321.obcx] control_cb (../../../../../src/pm/i_hydra/mpiexec/mpiexec.c:1576): 无法向下游发送中止等级 [mpiexec@cx0321.obcx ] HYDI_dmx_poll_wait_for_event (../../../../../src/pm/i_hydra/libhydra/demux/hydra_demux_poll.c:79): 回调返回错误状态 [mpiexec@cx0321.obcx] main (.. /../../../../src/pm/i_hydra/mpiexec/mpiexec.c:1962):错误等待事件”
如果有人愿意看一下,我很乐意提供代码。它是使用 Fortran 编写的,其中一些函数是用 C 编写的。由于这个问题,我的研究进展已经完全停止,我实验室中没有人有足够的 MPI 经验来解决这个问题。
pip - 使用英特尔 MPI 安装 mpi4py 时遇到问题
标题说明了一切。我在我的 AWS 实例上安装了 Intel MPI,并已获取它以激活、which mpiexec
工作并告诉我它是 Intel MPI。我现在没有安装任何其他 MPI。$MPICC
也设置好了。
跑步
导致以下错误(这是最后一段,另请参阅完整的错误消息):
mpi - 在 OpenMPI 中是否可以像 Intel-MPI 一样进行进程固定?
使用 Intel-MPI,我可以将启动的 MPI 进程固定mpirun
到节点上的某个内核。以 24 核和 Intel-MPI 为例:
使用 OpenMPI 可以选择--bind-to
带有以下参数之一:none、hwthread、core、l1cache、l2cache、l3cache、socket、numa、board。
我注意到--bind-to socket
将进程 0 绑定到套接字 0 并将进程 1 绑定到套接字 1,依此类推。这很糟糕,因为为了在进程之间进行最佳通信some.exe
,所有进程都应该在一个套接字上,而other.exe
进程应该在另一个套接字上。
OpenMPI 中是否没有等效的引脚选项?
mpi - 使用 slurm 调度程序在多个节点上运行 MPI 作业
我正在尝试运行具有特定任务/节点配置的 MPI 应用程序。我需要运行总共 8 个 MPI 任务,其中 4 个在一个节点上,4 个在另一个节点上。
这是我正在使用的脚本文件:
然后我用 sbatch 运行它:
但我继续收到此错误:
sbatch:错误:批处理作业提交失败:请求的节点配置不可用
如何修改这段代码以使其运行?我肯定错过了一些东西,但我不知道是什么。
我正在使用 IntelMPI 和 slurm 20.02
python - 为什么 fortran child 在生成时会导致 mpi4py 错误?
我有一个生成 Fortran 可执行文件的 mpi4py python 代码。
代码运行得非常愉快,生成并与 Fortran 子级断开连接 - 但有时代码会失败并出现以下错误:
我无法找到有关此错误的含义以及发生原因的很多信息,但是在尝试生成时会发生这种情况。
有没有人在使用 mpi4py 之前看到过这个错误并知道它为什么会发生?
我正在使用英特尔 mpi 和编译器(Parallel studio XE 集群:intel_2020/compilers_and_libraries_2020.0.166)、python 3.6.9 和 mpi4py 3.0.3。
compilation - mpiicpc:找不到命令
尝试用 C++ 编译代码时遇到问题。我安装了 Intel Parallel Studio XE Cluster Edition 2020,但是当我尝试编译时出现以下错误:“ mpiicpc: Command not found ”。
当我运行命令时,icpc -v
我得到以下结果“ icc version 19.1.3.304 (gcc version 7.5.0 compatibility) ”所以我认为我的安装是正确的。
我不明白的是,当我只是mpiicpc
在终端中输入时,它会给我一个选项列表,我可以在这个命令中包含这些选项,所以我不明白为什么我在编译过程中会出现这个错误。
预先感谢您的帮助。
这是我使用的makefile(它来自lammps,我所有在与我相同的机器上工作的同事都能够毫无问题地编译它,所以我认为问题不在makefile中,但谁知道)
caching - OSU 单向带宽测试中的缓存未命中
我们正在为 OSU 单向带宽基准测量MPI_Isend()+MPI_Waitall()
发送方和接收方的缓存未命中率。令人惊讶的是,当使用and时,消息大小MPI_Irecv()+MPI_Waitall()
的缓存未命中8KB
超过了消息大小。我们使用分析器 TAU 捕获缓存未命中。下面是一些捕捉这种奇怪行为的图表:
16KB
Intel MPI 2017.4
Intel compiler 2017.4
我们已经排除了 Eager-Rendezvous 切换的影响,因为消息大小小于预注册缓冲区的默认大小(英特尔 MPI 约为 23.5 KB),因此重新分配预注册缓冲区的I_MPI_EAGER_THRESHOLD
影响256 KB
.
任何见解都是有价值的。谢谢 !
加法1:通信是在与最大带宽为.的Intel OPA连接的节点之间进行的100 Gbits/sec
。
补充 2:我们怀疑英特尔 OPA的默认设置Path MTU size of 8 KB
与它有“某种关系”,但仍然存在问题,即为什么 16 KB 消息的缓存未命中率低于 8 KB 时的缓存未命中率。