【发布时间】:2022-10-20 12:12:43
【问题描述】:
我正在使用 GASNET_SEGMENT_EVERYTHING 编写分布式共享内存库,为此我需要将分配的地址从某个根节点传递到所有其他节点,例如 MPI_Bcast。但是,我很难理解如何实现这一点。有人可以给我一个关于如何用活动消息模仿 MPI_Send 的例子,或者解释来自gasnet_coll.h 的未记录的gasnet_coll_broadcast 是如何工作的?
【问题讨论】:
标签: gasnet
我正在使用 GASNET_SEGMENT_EVERYTHING 编写分布式共享内存库,为此我需要将分配的地址从某个根节点传递到所有其他节点,例如 MPI_Bcast。但是,我很难理解如何实现这一点。有人可以给我一个关于如何用活动消息模仿 MPI_Send 的例子,或者解释来自gasnet_coll.h 的未记录的gasnet_coll_broadcast 是如何工作的?
【问题讨论】:
标签: gasnet
当前 GASNet-EX 版本中 GASNet 集合 API 的最佳信息来源是 GASNet-EX specification(搜索标题为 // Collectives (Coll) 的部分)。
这是一个启动非阻塞广播操作然后同步等待其完成的简单示例:
gex_Event_Wait(gex_Coll_BroadcastNB(myteam, root_rank, dstmem, srcmem, payloadsz, 0));
以上示例取自GASNet test testcollperf,GASNet test testcoll中还有其他示例;尽管这些测试分别被编写为性能微基准测试和正确性验证测试(并不是真正打算用作示例代码)。
【讨论】: