[英]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.