问题标签 [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.

0 投票
0 回答
1687 浏览

c++ - OpenMPI 和 Intel MPI 之间的性能比较问题

我正在使用 C++ MPI 代码,当使用 openMPI 编译时,使用英特尔 MPI 需要 1 分 12 秒和 16 秒(我也在其他输入上对其进行了测试,差异相似。两个编译代码都给出了正确的答案)。我想了解为什么运行时间会有如此大的差异。以及如何使用 openMPI (GCC) 减少运行时间。

我正在使用带有 Intel Haswell 处理器的 CentOS 6 操作系统。我正在使用以下标志进行编译。

openMPI (GCC): mpiCC -Wall -O3

我也试过 -march=native -funroll-loops。这并没有太大的不同。我也尝试过 -lm 选项。我无法编译 32 位。

英特尔 MPI:mpiicpc -Wall -O3 -xhost

0 投票
1 回答
396 浏览

c++ - IntelMPI 错误(适用于 openMPI)

我收到此错误,想知道如何修复它。一点背景:它适用于 open mpi 但不适用于 intel mpi。

错误:

代码:先发送

首先,接收:

第二次发送:

二、领取:

使用 openmpi 一切正常,但是,错误仅在我使用 intelmpi 时出现。我怎样才能修复这个错误,以便它在 intelmpi 中工作?

编辑:slurm文件

如果我换行:

或者

该程序有效,没有错误发生。

生成文件

0 投票
0 回答
1425 浏览

mpi - 为什么 mpirun 与 slurm 一起使用时的行为会如此?

我正在使用 Intel MPI,并且mpirun在与 slurm 结合使用时遇到了一些令人困惑的行为。

如果我运行(在登录节点中)

然后我得到预期的 0 和 1 作为输出打印出来。

但是,如果我从交互式计算节点salloc --time=30 --nodes=1运行相同mpirun的程序,我会打印出两个 0,而不是预期的 0 和 1。

然后,如果我更改-n 2-n 3(仍在计算节点中),我会从 slurm 中得到一个很大的错误srun: error: PMK_KVS_Barrier task count inconsistent (2 != 1)(加上一堆其他的东西),但我也不知道如何解释这个......

现在,基于这个 OpenMPI 页面,似乎至少 OpenMPI 应该支持这些操作:

具体来说,您可以在交互式 SLURM 分配中启动 Open MPI 的 mpirun(通过 salloc 命令),或者您可以向 SLURM 提交脚本(通过 sbatch 命令),或者您可以通过 srun“直接”启动 MPI 可执行文件。

也许我使用的英特尔 MPI 实现没有相同的支持,并且没有设计为直接在 slurm 环境中使用(?),但我仍然想知道:这个mpirun和 slurm(salloc)的底层性质是什么行为产生了吗?为什么它会在第一个“案例”中打印两个 0,以及它在第二个“案例”中谈到的不一致任务计数是什么?

0 投票
1 回答
820 浏览

pip - 如何将 mpi4py 与 intelmpi 链接

我想针对 intelmpi 安装 mpi4py,这正是我在做模块列表时看到的。

但是 mpi4py.get_config() 在这些试验之后显示 openmpi:

我无权删除 openmpi。我如何冲洗它以便 mpi4py 得到正确的?

0 投票
1 回答
207 浏览

mpi - “-genvall”和“-enwall”有什么区别?

当我需要在我的 mpi 作业中传递我的环境变量时,“-genvall”和“-envall”选项之间有什么区别?我真的无法理解 man 文件中的描述。

0 投票
1 回答
793 浏览

fortran - 获取正在使用的 MPI Communicator 的数量

我有一个大代码,崩溃并出现以下错误:

似乎存在某种 MPI 通信器泄漏。MPI 似乎知道当前使用了多少通信器:

有没有办法打印 MPI 使用的通信器数量?这样我可以缩小传播者泄漏的范围。

0 投票
1 回答
104 浏览

parallel-processing - # bytes > 128: IMB-EXT 时英特尔 MPI 基准测试失败

我刚刚在两台机器上安装了 Linux 和 Intel MPI:

(1) 相当老的(约 8 年)SuperMicro 服务器,有 24 个内核(Intel Xeon X7542 X 4)。32 GB 内存。操作系统:CentOS 7.5

(2) 新的 HP ProLiant DL380 服务器,具有 32 个内核(Intel Xeon Gold 6130 X 2)。64 GB 内存。操作系统:OpenSUSE Leap 15

安装操作系统和英特尔 MPI 后,我编译了英特尔 MPI 基准并运行它:

令人惊讶的是,我在运行 IMB-EXT 和 IMB-RMA 时发现了相同的错误,尽管我有不同的操作系统和一切(甚至用于编译英特尔 MPI 基准测试的 GCC 版本也不同——在 CentOS 中,我使用了 GCC 6.5。 0,在 OpenSUSE 中,我使用了 GCC 7.3.1)。

在 CentOS 机器上,我得到:

在 OpenSUSE 机器上,我得到

当我不使用 mpirun 时(这意味着只有一个进程可以运行 IMB-EXT),基准运行通过,但 Unidir_Put 需要> = 2 个进程,所以没有太大帮助,我也发现函数使用 MPI_Put 和 MPI_Get 比我预期的要慢得多(根据我的经验)。此外,在 OpenSUSE 机器上使用 MVAPICH 也无济于事。输出是:

更新:我测试了OpenMPI,它顺利通过(虽然我的应用程序不推荐使用openmpi,我仍然不明白为什么Intel MPI或MVAPICH不起作用......)

在安装 MPI 或在这些服务器中安装操作系统时,我是否有可能遗漏一些东西?实际上,我认为操作系统是问题所在,但不知道从哪里开始......

非常感谢提前,

0 投票
1 回答
148 浏览

c - 使用 MPI_Wait 获得的 MPI_Isend 状态有什么用?

案例:1.使用MPI_Wait()获取的status有什么用

案例:2。状态的使用在这里很清楚(只是为了比较而添加)

0 投票
1 回答
418 浏览

c++ - OpenMPI MPI_Send 与英特尔 MPI MPI_Send

我有一个使用 openmpi 编译和运行的代码。最近,我想使用英特尔 MPI 运行相同的代码。但是我的代码没有按预期工作。我深入研究了代码,发现 MPI_Send 在两种实现中的行为都不同。

我从不同的论坛获得了使用 MPI_Isend 而不是来自不同论坛的 MPI_Send 的建议。但这需要大量的工作来修改代码。英特尔 MPI 中是否有任何解决方法可以使其像在 OpenMPI 中一样工作。可能是一些标志或增加缓冲区或其他东西。提前感谢您的回答。

OpenMPI 结果

英特尔 MPI 结果

卡在 MPI_Send。

0 投票
2 回答
233 浏览

fortran - 如果使用不是直接从 MPI_COMM_WORLD 创建的组,则在 fortran MPI_COMM_CREATE_GROUP 中出现段错误

我遇到了一个分段错误,我无法用简单的代码真正理解,这只是:

  • 调用 MPI_INIT
  • 通过 MPI_COMM_DUP 复制全局通信器
  • 通过 MPI_COMM_GROUP 创建一个包含全局通信器一半进程的组
  • 最后从这个组通过 MPI_COMM_CREATE_GROUP 创建一个新的通信器

具体来说,我使用最后一个调用,而不是仅使用 MPI_COMM_CREATE,因为它仅对 group 中包含的进程组进行集体处理,而 MPI_COMM_CREATE 对 COMM 中的每个进程进行集体处理。代码如下

如果我不复制 COMM_WORLD,而是直接从全局通信器(注释行)创建组,那么一切正常。

我正在使用的并行调试器将段错误追溯到对 MPI_GROUP_TRANSLATE_RANKS 的调用,但是,据我所知,MPI_COMM_DUP 复制了复制的通信器的所有属性,包括排名编号。

我使用的是 ifort 版本 18.0.5,但我也尝试了 17.0.4 和 19.0.2,但没有更好的结果。