openmpi와 mpich 사이를 전환하려면 기본적으로 Linux 터미널을 사용하세요.

openmpi와 mpich 사이를 전환하려면 기본적으로 Linux 터미널을 사용하세요.

mpicc(병렬 gcc)를 사용하여 코드를 실행해야 합니다. 서버에는 두 개의 mpicc 패키지, 즉 OPENMPIand가 설치되어 있습니다. OPENMPI의 mpicc가 기본적으로 사용됩니다.MPICH/usr/local/OPENMPI/usr/local/MPICH

which mpicc

프로그램/usr/local/OPENMPI/bin/mpicc

내 코드는 MPICH용으로 제작되었습니다. 매번 전체 경로를 사용하여 MPICH의 mpicc를 호출하는 대신. /usr/local/MPICH/bin/mpicc작업이 끝날 때까지 기본값으로 설정한 다음 다시 변경할 수 있는 쉬운 방법이 있습니까?/usr/local/OPENMPI/bin/mpicc

답변1

나는 an이 alias귀하의 경우에 완벽하다고 생각합니다. .profile또는 에 다음을 추가할 수 있습니다 .bash_profile.

alias mympicc='/usr/local/MPICH/bin/mpicc'

보다 영구적이지만 여전히 되돌릴 수 있는 솔루션은 MPICH위치를 경로 앞에 추가하는 것입니다 OPENMPI. 이는 다음을 추가 .profile하거나 다음을 추가하여 쉽게 수행할 수 있습니다 .bash_profile.

export PATH="/usr/local/MPICH/bin:$PATH"

그런 명령을 입력할 때 해당 명령이 mpicc현재 디렉토리에 없으면 쉘이 PATH순서대로 검색하므로 우선 순위를 설정하려면 해당 명령을 어디에 두는 것이 중요합니다.

둘 사이를 쉽게 "전환"하는 데 사용할 수 있는 일종의 스위치를 원한다면 일종의 기능을 만들어 .bashrc(또는 .profile/.bash_profile ?):

use_mpicc () {
    shopt -s nocasematch
    case "$1" in
        mpich) export PATH="...:/usr/local/MPICH/bin:/usr/local/OPENMPI/bin:..." ;;
        openmpi) export PATH="...:/usr/local/OPENMPI/bin:/usr/local/MPICH/bin:..." ;;
        *) return 1 ;;
    esac
    shopt -u nocasematch
}

이 예에서는 실제 경로 대신 줄임표를 사용하고 있습니다. : 메서드를 사용하는 것보다 실제로 이 함수(사용하는 경우)에 전체 경로를 지정하는 것이 좋습니다 PATH="Stuff_I_Need_added:$PATH". 이렇게 하면 함수가 호출될 때마다 경로가 계속 추가되어 PATH잠재적으로 경로가 매우 길어질 수 있습니다.

다음과 같이 호출할 수 있습니다.

$ use_mpicc mpich
$ # OR
$ use_mpicc openmpi

설정에 대해 자세히 알아보세요.

관련 정보