[英]Is there a C++ equivalent of a logical when?
有没有办法用触发器来调节条件? 具体来说,我有一个MPI实现,希望在收到其他一些数据后立即发送一些数据。 到目前为止,我已经使用:
MPI_Wait(&recv_request,&status)
MPI_ISend(...)
我想知道是否有一种方法可以跳过等待并进行一些计算,只有在recv_request
触发recv_request
返回。
MPI中的解决方案是使用MPI_Test
。
int flag;
MPI_Test(&recv_request, &flag, &status);
while (!flag) {
do_work();
MPI_Test(&recv_request, &flag, &status);
}
// At this point, the request state is the same as for a completed MPI_Wait
do_work
的工作粒度是一个折衷。 如果每个呼叫的工作量太小,则连续测试的开销将很大,并且将无法完成工作。 如果每个呼叫工作量过多,则延迟会增加。 如果使用MPI_Test
则与MPI_Wait
相比,延迟总是更糟。
现在,还有其他方法可以通过使用线程来执行此操作,但是这可能会更加复杂,并且特别需要与必要线程级别兼容的MPI实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.