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