2017-05-18 7 views
0

나는 RDMA를 지원하는 마이크로 소프트 애저에 대한 몇 가지 H16R 인스턴스를 설정하고, 인텔 탁구 시험은 잘 작동 : 나는 MPI 응용 프로그램을 컴파일 할 때RDMA를 사용하기 위해 Microsoft Azure에서 MPI 응용 프로그램을 컴파일하려면 어떻게합니까?

mpirun -hosts <host1>,<host2> -ppn 1 -n 2 -env I_MPI_FABRICS=dapl -env I_MPI_DAPL_PROVIDER=ofa-v2-ib0 -env I_MPI_DYNAMIC_CONNECTION=0 IMB-MPI1 pingpong 

그러나, 문제는 (LAMMPS를 예를 들어) 발생 . 이 H16R 인스턴스가 Intel MPI를 사용하여 통신한다는 사실에도 불구하고 Microsoft가 HPC CentOS 7.1 이미지에 Intel 컴파일러를 포함하지는 않습니다.

그래서 OpenMPI를 설치하고 mpic++을 사용하여 LAMMPS를 컴파일했습니다. 그러나 OpenMPI의 mpirun은 불평하며 아무 것도 실행하지 않습니다.

이 작업을 위해 실제로 인텔 컴파일러를 구입해야합니까 ?? 이 VM에서 OpenMPI를 사용할 방법이 없습니까? 이것은 개인적인 프로젝트에 비해 다소 비쌉니다.

답변

0

Intel MPI를 사용하기 위해 Intel 컴파일러가 필요하지 않습니다. 그것은 GCC에서도 잘 작동합니다. IMPI는 인텔 특정 컴파일러 래퍼 (mpiicc, mpiicpc, mpiifort)와 일반적인 것들 (mpicc, mpicxx, mpif90 등)을 제공합니다. 호환 컴파일러와 함께 사용할 수 있습니다.

$ mpicxx -cxx=g++ ... 

또는 I_MPI_CXX 환경 변수 설정 :

$ export I_MPI_CXX=g++ 
$ mpicxx ... 

LAMMPS에 대한 mpicxx를 사용하려면 명령 줄 인수를 제공하거나 GCC를 사용하는 래퍼를 알려야합니다

C 및 Fortran 랩퍼에도 동일하게 적용됩니다. 인수없이 실행하면 실제 컴파일러 이름을 제공하는 데 사용할 수있는 옵션 목록이 표시됩니다.

대체 MPI 구현을 사용할 때 Azure에서 제공하는 가상 InfiniBand 어댑터는 공유 수신 대기열에 대한 지원이 부족한 것처럼 보이며 Open MPI는 기본 구성으로 실행되지 않습니다. 다음 mpiexec 옵션을 실행 시도 할 수 :

--mca btl_openib_receive_queues P,128,256,192,128:P,2048,1024,1008,64:P,12288,1024,1008,64:P‌​,65536,1024,1008,64 

이 모든 개인들로 수신 큐 공유 재구성합니다. Azure HPC 인스턴스에 대한 액세스 권한이 없으며 이것은 모두 this question의 오류 메시지를 기반으로합니다 (불행히도, OP는 위의 인수가 Open MPI 작업을 수행하는지 여부에 대한 내 문의에 응답하지 않았습니다.)

+0

이러한 것들은 어디에 설치되어 있습니까? 그들은 기본적으로 내 PATH에 있지 않으며'find/-name "mpiicc를 실행해도 아무 것도 밝혀 내지 못합니다. 설치해야하는 패키지가 있습니까? – Nick

+0

우리 클러스터에서 래퍼는'/ opt/intel/impi/5.1.3.181/bin64 /'에 있습니다. [문서] (https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/rdma-cluster)에 따르면, 이것은 IMPOS가 CentOS 기반 VM. –

+0

IMPI 디렉토리가 있지만, 컴파일러 래퍼는 없습니다 (mpirun, mpivars.sh 등). Azure가 제공하는 CentOS 7.1 HPC 이미지에서 제거되었다고 가정합니다. – Nick