mpi相关内容

MPI OpenMp混合

我正在尝试在Linux双核集群上运行一个为MPI和OpenMP编写的程序。 当我尝试设置OMP_NUM_THREADS变量时 export OMP_NUM_THREADS=2 我收到一条消息 OMP_NUM_THREADS:未定义变量。 我在使用OpenMP时没有获得更好的性能...我也试过了: mpiexec -n 10 -genv OMP_NUM_THREAD ..
发布时间:2022-03-30 22:03:45 其他开发

为什么我必须在析构函数中调用MPI.Finalize()?

我目前正在尝试理解mpi4py。我设置mpi4py.rc.initialize = False和mpi4py.rc.finalize = False是因为我不明白为什么我们需要自动初始化和结束。默认行为是在导入MPI时调用MPI.Init()。我认为这是因为对于每个级别,都在运行Python解释器的一个实例,每个实例都将运行整个脚本,但这只是猜测。归根结底,我喜欢直截了当地说。 现在这引入了 ..
发布时间:2022-03-10 23:48:59 Python

在";root";没有发送缓冲区的情况下使用MPI_GATHERV

我希望使用MPI函数MPI_GATHERV,其中每个MPI等级都有一个大小不同的特定缓冲区,需要在Root进程中收集这些缓冲区。 我的根进程将只收集缓冲区,但像往常一样本身没有发送缓冲区。 例如 RANK1 buf_sz =3 buf(1) = 1 buf(2) = 2 buf(3) = 3 排名2 buf_sz =3 buf(1) = 4 buf( ..
发布时间:2022-03-10 23:45:50 其他开发

MPI_Gatherv:根的数组中收到的垃圾值

我正在尝试在C中实现MPI_Gatherv函数。 根据我的程序,每个进程(包括根进程)都应该创建一个大小等于(进程‘ranch+1)的本地数组,该数组将在所有单元格中保存进程的排名。 然后将此本地数组收集到根的rcv_array中。 不知何故,我得到了垃圾值。 谁能告诉我我做错了什么? 另外,我是MPI新手,很难理解MPI_Gatherv的显示和RCV_Count。 我的代 ..
发布时间:2022-03-10 23:42:39 其他开发

使用pybind11共享MPI通信器

假设我已经在MPI通信器周围创建了一个包装器: class Communicator { public: Communicator() : comm(MPI_COMM_WORLD) {} Communicator(int const color, int const key) { MPI_Comm_split(MPI_COMM_WORLD, c ..
发布时间:2022-03-10 23:40:31 C/C++开发

使用支持CUDA的MPI的要求

我想通过支持CUDA的MPI在不同的CUDA设备之间交换数据,如this article中所述。根据我的理解,下面的代码应该可以完成这项工作: #include int main( int argc, char *argv[] ) { int rank; float *ptr = NULL; const size_t elements = 32; MPI_S ..
发布时间:2022-03-10 23:35:39 C/C++开发

MPI sendbuf和recvbuf可以是一回事吗?

我将每个进程的数组元素加在一起: double rho[1024]; //Some operation to calculate rho for each process; MPI_Allreduce(rho,rho,1024,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD); 同时将Rho作为sendbuf和recvbuf是否有效? 推荐答案 您是否检查 ..
发布时间:2022-03-10 23:31:39 其他开发

ASCII格式的MPI并行IO(我该怎么做?)

我知道MPI IO以二进制格式写入文件,但这一次我需要它采用ASCII格式。我需要这个,因为我对图像使用Netpbm,并且标题必须是ASCII(这样程序就可以读取P1、P2、P3、P4、P5或P6,并确定图像的内容是ASCII还是二进制等等)。 我使用的代码是(simple example) MPI parallel io writing garbage中提供的代码,我想知道代码中是否有一些小改 ..
发布时间:2022-03-09 21:00:55 C/C++开发

Openacc+MPI Fortran程序入门

我有一个可以工作的串行代码和一个可以工作的并行单GPU代码,它们是通过openacc并行化的。现在,我正试图通过在多个GPU上运行,采用MPI+openacc范例来提高并行性。我用Fortran-90编写代码,并使用NVIDIA的HPC-SDK的nvfortran编译器进行编译。 我有几个初学者级别的问题: 如何设置编译器环境以开始编写MPI+openacc代码。除了NVIDIA的HP ..
发布时间:2022-02-27 19:58:56 其他开发

对 MPI_Barrier 的调用会影响 MPI 进程中的每个线程吗?

对 MPI_Barrier 的调用会影响 MPI 进程中的每个线程还是仅影响线程打电话?供您参考,我的 MPI 应用程序将使用 MPI_THREAD_MULTIPLE 运行. 谢谢. 解决方案 这样想的方式是 MPI_Barrier(和其他集合体)是阻塞函数调用,它阻塞直到通信器中的所有进程都完成了函数.我认为,这使得弄清楚应该发生什么变得更容易一些.功能块,但其他线程继续畅通无阻. ..
发布时间:2022-01-22 20:33:09 其他开发

什么时候需要使用 MPI_Barrier()?

我想知道什么时候需要使用屏障?例如,在分散/聚集之前/之后我是否需要它?或者 OMPI 是否应该在分散/聚集之前确保所有流程都已达到该点?同样,在广播之后,我可以期望所有进程都已经收到消息吗? 解决方案 在 MPI-3.0 之前 MPI 中的所有集合操作都是阻塞的,这意味着在它们返回后使用传递给它们的所有缓冲区是安全的.特别是,这意味着当这些函数之一返回时,所有数据都已收到.(但是,这并不 ..
发布时间:2022-01-22 20:08:33 其他开发

使用gdb调试多屏窗口中的MPI

如果我有一个 MPI 程序,我想用 gdb 进行调试,同时能够看到所有单独进程的输出,我可以使用: mpirun -n xterm -hold -e gdb -ex run --args ./program [arg1] [arg2] [...] 当我有一个 GUI 可以玩时,这很好.但情况并非总是如此. 是否有类似的设置可以用于 screen 这样每个进程都有自己的窗口?这对于 ..
发布时间:2022-01-20 20:48:37 其他开发

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

我搜索发送一个集合对象,发现最接近的是向量(它不同,不适用于集合). 如何在 MPI_Send 中发送一个集合对象?(不使用boost库)任何人都可以举一个简单的例子吗? 解决方案 在 MPI 中,无论你必须将复杂的数据结构写入文件还是通过网络写入,问题都是一样的;您必须将数据提取到“Plain Old Data"(POD)中,保存,然后输出,同样能够将保存的数据解包到相同的结构中. ..
发布时间:2022-01-17 18:19:24 C/C++开发

具有动态分配成员的动态分配结构的 MPI 派生数据类型

有一个动态分配的结构体: TYPE 结构体整数 :: N真实*8 :: A实数*8,可分配 :: B(:)结束类型结构 它有一个动态分配的成员:B(:) 当我尝试使用 MPI_TYPE_CREATE_STRUCT 为此类 Struct 创建派生数据类型时,不同的 CPU 会创建不一致的派生数据类型.这是因为相对于第一个成员 Struct%N,Struct%B(:) 可能位于不同的内存位置 ..
发布时间:2022-01-14 10:10:11 其他开发