簡體   English   中英

所有進程退出的廣播消息(MPI)

[英]Broadcast message for all processes to exit(MPI)

[MPi-C ++]

我制作了一個應用程序,在特定條件下應在所有進程中關閉該應用程序。 我試圖使用根進程來實現它,但是我想向所有其他進程發送消息以終止它。 我該怎么做???

沒有通信,就無法在所有進程上徹底退出MPI應用程序。 這意味着,如果您的條件僅發生在MPI應用程序的部分過程中(例如,您在其中一個過程中發生錯誤),則單方面退出該應用程序的唯一方法是調用MPI_Abort 無論此時每個代碼在代碼中的哪個位置,這都將導致所有MPI進程突然結束。 由於MPI_Abort不是集體例程,因此無法對任何其他等級執行任何清除。

如果您希望獲得一個干凈的出口,那么您需要定期在所有級別之間進行交流,無論是否所有級別都在工作,還是該退出了。 例如,您可以使用MPI_SUM作為操作定期調用MPI_Allreduce 如果您的退出條件在某個進程中得到滿足,則使其發送1作為數據,否則使其發送0 現在,您只需要在MPI_Allreduce之后檢查總和是否大於0 ,如果是,則有序地退出應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM