2014-03-04 56 views
0

由於OpenMPI上OpenFOAM的依賴性,我必須用OpenMPI替換mpich2。openMPI中缺少gethostname()函數

以前(當使用mpich2)在我的代碼中我使用gethostname()函數來獲取計算機的名稱以進行調試。但是,這個函數似乎不是一個標準的MPI函數,並且不再適用於OpenMPI庫。在OpenMPI或MPI標準中有沒有其他函數可以獲取主機名?我正在使用mpicc進行編譯並使用mpirun來運行代碼。

感謝,

Sourabh

+1

'gethostname'所示的評論是不是一個標準的MPI函數。你是否用'MPI_Get_processor_name'來混淆它? –

+0

實際上,gethostname()在安裝OpenMPI後停止工作,之前用於工作。我剛剛檢查MPI_Get_processor_name()正在工作,謝謝。 –

+0

'gethostname()'的原型在'unistd.h'中。它究竟與Open MPI無關? –

回答

4

gethostname()unistd.h定義了被列入由mpi.h,在以前的版本。這不是您應該依賴的功能,因爲您應始終明確包含定義您使用的符號的文件。顯然你沒有意識到它依賴於它。

但是,如果你的MPI代碼應該在POSIX系統上只運行,其安全地添加

#include <unistd.h> 

gethostname()是POSIX2001.1標準。

然而,MPI便攜式解決方案是MPI_Get_processor_name()高性能馬克