多个处理器C 的MPI_SEND和MPI_RECV功能
MPI_send and MPI_recv functions for multiple processors C++
我在MPI编程中是非常新的,并陷入了项目的中间。
我想为以下问题编写MPI代码。我不确定MPI的哪些功能是合适的。这是问题:
处理器0具有2D向量或边数= {(0,4(,(1,5(}。它需要从其他处理器中获取一些信息,这并不总是固定的处理器,这取决于设定的边缘。因此,我需要一个如下:
if(my_rank==0)
{
for(all pairs (i,j) in Edges)
{
send i (or j) to Processor r (r depends on the index i)
recieve L_r from Processor r
create (L_i, L_j, min(L_i,L_j)) // want to broadcast to all later.
}
}
现在,我不确定如何为处理器r做,我应该在循环中做吗?请注意,由于我不知道哪个处理器是,因此我无法在IF语句中这样做,因此,根据处理器的数量,我需要一个IF语句,而我认为这是正确的方法。我可能有太多的处理器,每个处理器都有矩阵的某些部分。
需要指出我不能与通信子的子组进行通信,因为这一切都取决于索引,基本上,我希望标签(例如索引(0,4((需要与持有它的P4进行通信。
任何想法都将受到赞赏。
我会如下:
1(proc 0构建了必须与之交往的每个过程的列表。
2(proc 0将此列表广播到所有过程(或仅与他必须与之交流的过程,但这会更复杂,一旦获得有效的版本就可以完成(
3(您执行您的通讯:
if(rank == 0({...}
else if(排名在列表中({...}
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- MPI突然停止了对多个核心的操作
- 设置 Visual Studio for MPI: 找不到标识符错误
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 重载 MPI 中的运算符 ()
- Linux 服务器中的 Recv 缓冲区大小
- 在 for 循环中处理复杂的发送 recv 消息
- MPI:检查是否有任何进程已终止
- 使用 pybind11 共享 MPI 通信器
- 使用 CMake,Microsoft MPI 和 Visual Studio 2017 找不到 mpi.h
- 在具有 MPI 的超立方体中广播
- 通过 mpi 发送 c++ 标准::矢量<bool>
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 使用 MPI 的 C++ 中的并行 for 循环
- MPI发送/recv的向量
- MPI发送RECV输入参数
- Boost.MPI recv 到现有矢量的切片中
- MPI中向多个进程发送Recv的最佳方式