草庐IT

MPI_Allgather

全部标签

c++ - 可以在 Internet 上而不是在 LAN 集群内分发 MPI (C++) 程序吗?

我编写了一些MPI代码,可以在大型集群上完美运行。集群中的每个节点都具有相同的cpu架构,并且可以访问网络(即“公共(public)”)文件系统(以便每个节点都可以执行实际的二进制文件)。但请考虑这种情况:我办公室里有一台配备双核处理器(intel)的机器。我家里有一台配备双核处理器(amd)的机器。两台机器都运行linux,两台机器都可以在本地成功编译和运行MPI代码(即使用2核)。现在,是否可以通过MPI将两台机器链接在一起,以便我可以利用所有4个内核,同时考虑不同的体系结构,并考虑没有共享(网络)文件系统的事实?如果是,怎么做到的?谢谢,本。 最佳答案

c++ - 如何在 C++ 中传递 STL 对象的消息,例如 MPI 中的 std::map?

我想使用MPI在C++中传递STL对象,例如std::map和std::list,但我不知道如何实现。 最佳答案 不幸的是,这无法直接实现。您将需要进行某种序列化。既然您提到了MPI,您可能对高性能感兴趣。在这种情况下,使用序列化可能不是最好的主意。所以我会远离更复杂的STL结构,只使用std::vector。 关于c++-如何在C++中传递STL对象的消息,例如MPI中的std::map?,我们在StackOverflow上找到一个类似的问题: https:

c++ - 如何在 MPI 中创建新类型

我是MPI的新手,我想为Residencestruct创建一个新的数据类型。我只是想看看我是否能以正确的方式创建新类型。结构住宅{双x;双y;};我的新MPI类型MPI_DatatypecreateRecType(){//Set-uptheargumentsforthetypeconstructorMPI_Datatypenew_type;intcount=2;intblocklens[]={1,1};MPI_Aintindices[2];//indices[0]=0;MPI_Type_extent(MPI_DOUBLE,&indices[0]);MPI_Type_extent(MPI

c++ - 如何将长整数和/或无符号整数传递给 MPI 参数?

假设我有一个非常大的数组,我希望使用MPI(v1)发送或接收它。为了索引这个数组,我使用了一个无符号长整数。现在,我见过的所有MPI函数调用都使用int类型作为它们的“计数”参数,例如在这个例子中:MPI_Recv(void*buf,intcount,MPI_Datatypedatatype,intsource,inttag,MPI_Commcomm,MPI_Status*status)但是,如果在我的实现中,我需要能够发送/接收大于int可以容纳的最大数量的数组,该怎么办?当我尝试将无符号整数提供给“计数”参数时,编译器自然会给我一个“无效转换”错误。我想过做一个Actor,但后来我

C++ MPI 标准 3

MPI标准3于2011年发布没有C++绑定(bind)!我的问题是如何在没有MPI的情况下用C++编写分布式计算(注意我们还需要OpenMPCUDAOpenacc)在C++中是否有MPI的替代方案(不是MPI2.2,提升MPI)?MPI是基于TCP/IP构建的,所以我可以在C++中使用TCP/IP构建我自己的方式吗?是否有针对C++的MPI3的开源绑定(bind)?或者你必须坚持使用CGTK+CUDAOpenMPOpenGLMPI3如果你想要C++QTCUDAOpenMPOpenGL+分布式计算API怎么办?Ubuntu和许多Linux发行版试图用Wayland替换Xserver,MI

c++ - 16 位 float MPI_Reduce?

我有一个分布式应用程序,它使用MPI_Reduce()进行某些通信。在精度方面,我们使用16位float(半精度)得到完全准确的结果。要加速通信(减少数据移动量),有没有办法在16位float上调用MPI_Reduce()?(我查看了MPI文档,没有看到任何关于16位float的信息。) 最佳答案 MPI标准在其内部数据类型中仅定义了32位(MPI_FLOAT)或64位(MPI_DOUBLE)float。但是,您始终可以创建自己的MPI_Datatype和您自己的自定义归约操作。下面的代码给出了一些关于如何执行此操作的粗略概念。由于

Mac 和 MPI 的 C++ 代码分析/分析

我正在寻找适用于MacOS上的C++的代码分析/分析工具。我知道有关于此主题的帖子,但我需要的应用程序非常具体,所以也许有人可以给我一些更具体的建议。所以这是我的问题:我正在用C++编写一个科学代码(硕士项目),所以它是一个纯控制台应用程序,没有给出交互性。该代码应该在大规模并行计算机上运行,​​因此我使用MPI。但是,现在我还没有针对可扩展性进行优化,而只是针对单核性能进行了优化。由于我不想将整个程序重写为串行程序,因此我只使用具有1个线程的MPI。它工作正常,但优化器显然需要能够处理这个问题。我想分析什么?好吧,代码不是很复杂,因为它有一个非常简单的结构,因此我需要的只是一个程序在

c++ - 如何在 MPI_Send 中发送一个集合对象

我搜索发送一个set对象,我发现最接近的是vector(它不同,不适用于set)。如何在MPI_Send中发送一个集合对象?(不使用boost库)任何人都可以举一个简单的例子吗? 最佳答案 在MPI中,无论是将复杂的数据结构写入文件还是通过网络,问题都是一样的;您必须将数据提取到“普通旧数据”(POD)中,保存它,然后输出它,同样能够将保存的数据解压缩为相同类型的结构。通常,这称为序列化。对于任何给定的结构,您始终可以编写自己的例程来执行此操作,但在C++中,Boost中有一个名为BoostSerializationLibrary的

c++ - 自动类型的 MPI 广播变量

我正在研究生成C++代码的编译器。在以下情况下:MPI_Comm_rank(MPI_COMM_WORLD,&rank);if(rank==0){autoi=function();//dosomethingMPI_Bcast(&i,1,MPI_INT,0,MPI_COMM_WORLD);}else{autoi;MPI_Bcast(&i,1,MPI_INT,0,MPI_COMM_WORLD);cout变量“i”的类型在编译时确定,MPI是否具有允许广播此类变量的通用类型?如果没有,我该如何广播这些变量?而且,我应该如何接收这些变量,因为不允许简单地声明autoi;。

c++ - 如何为动态加载编写 MPI 包装器

由于MPI不提供二进制兼容性,仅提供源代码兼容性,因此我们不得不将我们的求解器源代码发送给客户,以便他们将我们的求解器与他们首选的MPI版本一起使用。好吧,我们已经到了无法再提供源代码的地步。因此,我正在寻找围绕MPI调用创建包装器的方法。我们的想法是为我们提供stub函数的header,用户将编写实现,从中创建一个动态库,然后我们的求解器将在运行时加载它。但是解决方案并不“优雅”并且容易出错。因为有struct参数(例如,MPI_Request),其struct定义可能因一个MPI实现而异,我们需要接受(void*)用于我们的许多stub参数。此外,如果一个MPI与另一个MPI的参数