2014-03-04 1 views
0

OpenMPI에서 OpenFOAM의 종속성으로 인해 mpich2를 OpenMPI로 대체해야했습니다.openMPI에서 gethostname() 함수가 누락되었습니다.

내 코드에서 이전에 gethostname() 함수를 사용하여 디버깅 목적으로 컴퓨터의 이름을 얻었습니다 (mpich2를 사용할 때). 그러나이 함수는 표준 MPI 함수로 보이지 않으며 OpenMPI 라이브러리로는 더 이상 작동하지 않습니다. OpenMPI 또는 MPI 표준에서 호스트 이름을 가져 오는 다른 함수가 있습니까? 나는 컴파일을 위해 mpicc를 사용하고 코드를 실행하기 위해 mpirun을 사용하고있다.

감사합니다,

Sourabh

+1

'gethostname'에 의해 주석과 같이 MPI 휴대용 솔루션 MPI_Get_processor_name()입니다 그러나

표준 MPI 기능이 아닙니다. 'MPI_Get_processor_name'과 혼동하고 있습니까? –

+0

사실 gethostname()은 이전에 작동 했었지만 OpenMPI를 설치 한 후에 작동을 멈췄습니다. MPI_Get_processor_name()이 작동하는지 확인했습니다. 감사합니다. –

+0

'gethostname()'의 프로토 타입은'unistd.h '에 있습니다. Open MPI와 정확히 어떻게 작동하지 않습니까? –

답변

4

gethostname()은 이전 버전에서, mpi.h가 포함 된 그 unistd.h에 정의되어 있습니다. 사용하는 기호를 정의하는 파일을 항상 명시 적으로 포함해야하기 때문에 의존해야 할 기능은 아닙니다. 분명히 당신은 깨닫지 않고 그것을 의지하고있었습니다. 당신의 MPI 코드가 POSIX 시스템에서 실행하도록되어있는 경우

그러나 단지 그것의 안전은

#include <unistd.h> 

gethostname()이 POSIX2001.1 표준입니다 추가 할 수 있습니다. 고성능 마크

관련 문제