w********r 发帖数: 14958 | 1 我看说 mpi 不能保证fairness, 就是有可能会发生“竞争冒险”现象。
就是说比如有3个process: p1,p2,p3。 如果p1和p2同时向p3发一个消息, 这时候p3
不能保证全部接到2个消息。我现在程序一个问题可能就与这个有关。 我的程序里面
,p1和p2 有可能同时向p3发一个消息。 我这里面p1,p2使用MPI_Isend 发送消息。
tag相同,目标id相同,而且都是MPI_COMM_WORLD.
我的问题是, 我这么做会不会导致出问题? 如果我把TAG改成不相同, 是不是就不
会发生“竞争冒险”现象? | a****l 发帖数: 8211 | 2 我相信你说的是不可能发生的.因为保证能同时接受到两个消息可以说是最基本的要求,
要是连这都做不到,mpi也不要混了.只可能是一你没用对,二你装的mpi坏了.
p3
。
【在 w********r 的大作中提到】 : 我看说 mpi 不能保证fairness, 就是有可能会发生“竞争冒险”现象。 : 就是说比如有3个process: p1,p2,p3。 如果p1和p2同时向p3发一个消息, 这时候p3 : 不能保证全部接到2个消息。我现在程序一个问题可能就与这个有关。 我的程序里面 : ,p1和p2 有可能同时向p3发一个消息。 我这里面p1,p2使用MPI_Isend 发送消息。 : tag相同,目标id相同,而且都是MPI_COMM_WORLD. : 我的问题是, 我这么做会不会导致出问题? 如果我把TAG改成不相同, 是不是就不 : 会发生“竞争冒险”现象?
| j**u 发帖数: 6059 | 3 tag当然要不同,不然不就是一个message了?
欢迎到computation版讨论并行计算问题。
p3
。
【在 w********r 的大作中提到】 : 我看说 mpi 不能保证fairness, 就是有可能会发生“竞争冒险”现象。 : 就是说比如有3个process: p1,p2,p3。 如果p1和p2同时向p3发一个消息, 这时候p3 : 不能保证全部接到2个消息。我现在程序一个问题可能就与这个有关。 我的程序里面 : ,p1和p2 有可能同时向p3发一个消息。 我这里面p1,p2使用MPI_Isend 发送消息。 : tag相同,目标id相同,而且都是MPI_COMM_WORLD. : 我的问题是, 我这么做会不会导致出问题? 如果我把TAG改成不相同, 是不是就不 : 会发生“竞争冒险”现象?
| w********r 发帖数: 14958 | 4 https://computing.llnl.gov/tutorials/mpi/
Fairness:
MPI does not guarantee fairness - it's up to the programmer to prevent "
operation starvation".
Example: task 0 sends a message to task 2. However, task 1 sends a competing
message that matches task 2's receive. Only one of the sends will complete.
求,
【在 a****l 的大作中提到】 : 我相信你说的是不可能发生的.因为保证能同时接受到两个消息可以说是最基本的要求, : 要是连这都做不到,mpi也不要混了.只可能是一你没用对,二你装的mpi坏了. : : p3 : 。
|
|