mpi - 谁能向我解释 MPI_Alltoall
问题描述
我注意到它的工作方式与MPI_Scatter
. 但是,我对它如何在进程之间分配数据感到很困惑。是否可以MPI_Scatter
与另一个集体功能结合使用以达到与 相同的结果MPI_Alltoall
?
谢谢
解决方案
答案在 MPI 标准中(5.8,第 168 页)
进程 i 发送的第 j 个块被进程 j 接收并放入 recvbuf 的第 i 个块中
[...]
如果 comm 是一个内部通信器,则结果就像每个进程执行发送到每个进程(包括它自己)并调用
MPI_Send(sendbuf+i * sendcount * extent(sendtype),sendcount,sendtype,i, ...)
并从其他所有进程接收并调用
MPI_Recv(recvbuf+i * recvcount * extent(recvtype),recvcount,recvtype,i,...)
MPI_Alltoall()
是的,comm_size
MPI_Scatter()
如果这是您所要求的,您可以实施。
推荐阅读
- mongodb - 为什么我们在 Mongo 中需要一个带有复合索引的附加 LIMIT 阶段
- pine-script - 尝试调试此源代码,遇到一些简单的语法错误
- windows - 在 Windows 卷上操作名称中以点开头的 QNAP 文件
- flutter - HTTP.get() 挂断
- sql-server - 在 SQL Server 2014 上使用 over 子句运行总计
- c# - 共享驱动器上的 C#“系统找不到指定的路径”
- snowflake-cloud-data-platform - 三秘密的好处
- sql-server - 在 ROW_NUMBER() OVER ( ORDER BY ) 中使用 case 语句会导致严重的性能问题
- c++ - 编译器错误。编译的 c++ .exe 是 16 位的
- kubernetes - K8s 从正在运行的集群中取回我的 yaml 文件