我想用MPI提供的例程(特別是Open MPI)實現一些文件io。如何用MPI中的單個節點寫入
由於可能的環境限制,我想知道,如果有可能限制負責IO的節點,以便所有其他節點都需要對這組進程執行隱藏mpi_send
,寫入數據。這在例如例如,主節點放置在具有高性能文件系統的節點上,而其他節點只能訪問存儲二進制文件的低性能文件系統。
其實,我已經發現了一些信息,這可能是有益的,但我找不到更多的信息,如何真正落實這些事情:
1:有一個信息鍵MPI_IO
屬於溝通者,它告訴哪個等級提供符合標準的IO例程。由於這被列爲環境調查,我沒有看到,我可以在哪裏修改。
2:有一個信息鍵io_nodes_list
,它似乎屬於文件相關的信息對象。不幸的是,這個鍵的可能值沒有記錄,並且Open MPI
似乎沒有以任何方式實現它們。實際上,我甚至無法獲取由mpi_file_get_info
返回的信息對象的文件名...
作爲解決方法,我可以想象兩件事:一方面,我可以使用標準Fortran例程,或者另一方面,創建一個新的溝通者,負責IO。但在這兩種情況下,負責IO的進程都必須檢查來自其他進程的可能IO以執行手動通信和文件交互。
是否有一個很好的自動方法來限制IO到某些節點?如果是的話,我怎麼能實現呢?
注意'MPI_IO'屬於執行環境的預定義的屬性,因此是隻讀的。這主要是出於歷史和便攜性的原因。在現代集羣系統中,其值始終爲'MPI_ANY_SOURCE',因爲所有CPU都以某種方式連接到I/O子系統。 – 2014-09-25 15:38:09