gpt4 book ai didi

c - MPI 标签集

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:55 25 4
gpt4 key购买 nike

是否可以为 MPI_Recv 函数指定一组标签?

我的场景:

我正在使用一个应用程序,该应用程序具有多个同时执行 MPI_Recv 函数的线程。我打算使用 mpi 标记来控制哪个线程将接收消息。但我还需要控制消息是 data_message 还是 stop_message

那么,是否可以为MPI_Recv定义一组标签呢?从语义上讲,类似于“接收带有标签 0 或 1 的消息”或“接收带有标签 10 或 11 的消息”等。它必须是多个值。

使用这种方法可以使用标签 thread_id*2 作为 data_messagethread_id*2+1 作为 停止消息

最佳答案

在您的案例中,我宁愿使用空消息 (MPI_Send(count = 0)) 来表示停止条件。只需等待带有 MPI_Probe(tag = thread_id) 的匹配消息,然后对返回的状态对象使用 MPI_Get_count 来确定消息大小。如果它恰好为零,则中断处理循环。

另一种选择是让每个线程在单独的通信器中进行通信。使用 MPI_Comm_dup 创建 MPI_COMM_WORLD 副本数组,然后让线程 icomms[i] 中进行通信。然后,您可以利用 MPI_Recv(tag = MPI_ANY_TAG, comm = comms[i]) 将消息与任何标记匹配,这将是线程特定的。在发送端,使用 MPI_Send(rank = dest, comm = comms[i]) 来处理线程 i of rank dest。 p>

关于c - MPI 标签集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37064232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com