标签: mpi

如何调试MPI程序?

我有一个编译和运行的MPI程序,但我想逐步完成它以确保没有任何奇怪的事情发生.理想情况下,我想要一种简单的方法将GDB附加到任何特定的进程,但我不确定这是否可行或如何做到这一点.另一种方法是让每个进程将调试输出写入单独的日志文件,但这并不能提供与调试器相同的自由.

有更好的方法吗?你如何调试MPI程序?

debugging mpi

120
推荐指数
8
解决办法
8万
查看次数

MPICH与OpenMPI

有人可以详细说明MPI的OpenMPI和MPICH实现之间的差异吗?哪两个是更好的实现?

hpc mpi openmpi

116
推荐指数
4
解决办法
8万
查看次数

显示MPI类型映射

type map是MPI中一个重要但令人困惑的概念.我想要一个例程来显示或打印我的类型地图.

例如(取自MPI-3标准),

 MPI_TYPE_CREATE_RESIZED(MPI_INT, -3, 9, type1) 
Run Code Online (Sandbox Code Playgroud)

结果在typemap中

{(lb_marker, -3), (int, 0), (ub_marker, 6)}.
Run Code Online (Sandbox Code Playgroud)

再次使用该类型:

MPI_TYPE_CONTIGUOUS(2, type1, type2) 
Run Code Online (Sandbox Code Playgroud)

而typemap是

{(lb_marker, -3), (int, 0), (int,9), (ub_marker, 15)}
Run Code Online (Sandbox Code Playgroud)

我想要一种自动显示该类型图的方法.

当然可以使用MPI_Type_get_contentsMPI_Type_get_envelope递归下降,直到达到内置类型.这是一个巨大的痛苦,我想我会有20年的时间来为我做这个.

有些工具很有前途但不太有效:

  • 我在这里找到了〜2001年的MPImap .首先,它需要针对现代Tcl/TK进行更新,修补以解决一些内存错误并在您执行此操作之后; 你得到一个没有反应的GUI.相反,我正在寻找一个我可以在运行时调用的库/例程.

  • MPIDU_Datatype_deubg是MPICH特定的内部类型转储例程.它不显示类型映射(它显示dataloop表示,再次关闭)

  • 曾经有一个名为XMPI的调试器,它在其功能中列出了显示MPI类型映射的能力.此调试器似乎特定于LAM-MPI,并且不使用get_contents/get_envelope.

mpi typemaps

100
推荐指数
1
解决办法
1307
查看次数

fork:retry:资源暂时不可用

我尝试在我的计算机上安装英特尔MPI基准测试,我收到此错误:

fork: retry: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

然后,当我跑步lstop命令时,我再次收到此错误.

导致此错误的原因是什么?

配置我的机器:

Dell precision T7500
Scientific Linux release 6.2 (Carbon)
Run Code Online (Sandbox Code Playgroud)

linux fork intel mpi

77
推荐指数
2
解决办法
17万
查看次数

使用MPI_Bcast进行MPI通信

我正在尝试使用MPI_Bcast从根节点向所有其他节点广播消息.但是,每当我运行这个程序时,它总是挂起.有人知道它有什么问题吗?

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
        int rank;
        int buf;
        MPI_Status status;
        MPI_Init(&argc, &argv);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);

        if(rank == 0) {
                buf = 777;
                MPI_Bcast(&buf, 1, MPI_INT, 0, MPI_COMM_WORLD);
        }
        else {
                MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
                printf("rank %d receiving received %d\n", rank, buf);
        }

        MPI_Finalize();
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c mpi

68
推荐指数
1
解决办法
6万
查看次数

mpi:阻塞与非阻塞

我无法理解阻止MPI中的通信和非阻塞通信的概念.两者有什么不同?有哪些优点和缺点?

谢谢!

parallel-processing cluster-computing mpi

60
推荐指数
5
解决办法
5万
查看次数

使用MPI在C中发送2D阵列块

如何将二维数组块发送到不同的处理器?假设2D阵列大小为400x400,我想将大小为100X100的块发送到不同的处理器.这个想法是每个处理器将在其单独的块上执行计算,并将其结果发送回第一个处理器以获得最终结果.
我在C程序中使用MPI.

c parallel-processing mpi

48
推荐指数
1
解决办法
4万
查看次数

mpiexec vs mpirun

根据我的小知识mpirun,mpiexec两者都是发射器.谁能告诉mpiexec和之间的确切区别mpirun

mpi mpich mpiexec

48
推荐指数
2
解决办法
2万
查看次数

MPI和OpenMP有什么区别?

我想知道(简言之)OpenMP和MPI之间的主要区别是什么.

mpi openmp difference

36
推荐指数
2
解决办法
3万
查看次数

为什么不使用MPI实现Hadoop?

如果我错了,请纠正我,但我的理解是Hadoop不使用MPI进行不同节点之间的通信.

这有什么技术原因?

我可能会冒一些猜测,但我不知道MPI如何在"引擎盖下"实施,以了解我是否正确.

想想看,我对Hadoop的内部结构也不是很熟悉.我在概念层面理解框架(map/combine/shuffle/reduce以及它如何在高级别工作),但我不知道细节的实现细节.我一直认为Hadoop 通过TCP连接传输序列化数据结构(可能是GPB),例如在混洗阶段.如果不是这样,请告诉我.

hadoop tcp distributed-computing mpi protocol-buffers

35
推荐指数
3
解决办法
2万
查看次数