여러 MPI 라이브러리를 설치하고 Ubuntu에서 이들 사이를 전환합니다.

여러 MPI 라이브러리를 설치하고 Ubuntu에서 이들 사이를 전환합니다.

교육 목적으로 Ubuntu 18.04.4 TLS를 실행하는 동일한 시스템에 다양한 백엔드 컴파일러(gcc, clang, icc)를 사용하여 OpenMPI, MPICH 및 Intel MPI와 같은 여러 MPI 라이브러리를 설정하고 싶습니다. 특정 코드가 하나의 MPI 라이브러리/컴파일러 또는 다른 MPI 라이브러리/컴파일러에서 어떻게 작동하는지 확인해야 할 때 이들 사이를 쉽게 전환할 수 있는 가장 좋은 방법은 무엇입니까?

지금까지는 mpicc의 -cc명령줄 인수(MPICH) 또는 환경 변수(OpenMPI)를 통해서만 OMPI_CC컴파일러를 선택할 수 있었습니다. 하지만 예를 들어 MPICH 다음에 OpenMPI를 설치하면 MPICH의 mpicc가 OpenMPI의 mpicc로 대체되는 것처럼 보이며 기본적으로 MPICH에 대한 액세스 권한을 잃게 됩니다.

$ sudo apt install mpich
$ mpicc -show
gcc -Wl,-Bsymbolic-functions -Wl,-z,relro -I/usr/include/mpich -L/usr/lib/x86_64-linux-gnu -lmpich

$ sudo apt install libopenmpi-dev
$ mpicc -show
gcc -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent/include -I/usr/lib/x86_64-linux-gnu/openmpi/include -pthread -L/usr//lib -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lmpi

둘 다 가지고 있고 현재 사용하고 싶은 것을 선택할 수 있습니까?

답변1

이를 위해 도커 컨테이너를 사용하겠습니다. 이는 다음을 제공합니다:

  • 각 컨테이너에 1개의 컴파일러와 1개의 라이브러리만 존재하도록 보장하면서 모든 유형의 컴파일러와 라이브러리 조합을 포함하는 다중 컨테이너입니다.
  • 진정한 "깨끗한" 코딩 환경(배우거나 가르치는 경우 추가 "정크"가 너무 많은 시스템을 사용하고 싶지 않습니다. 상황을 더 복잡하게 만들 뿐입니다)
  • 환경은 모든 유형의 컴퓨터에서 거의 동일하게 보입니다. (가르치는 경우 모든 학생들이 똑같은 것을 보기를 원합니다.)

및 와 같은 기본 이미지와 buildargs를 Dockerfile사용하여 생성합니다 . 이를 통해 컴파일러와 mpi 라이브러리의 다양한 조합을 사용하여 여러 컨테이너를 빠르게 생성할 수 있습니다.ubuntu:18.04COMPILERMPILIB

관련 정보