중복된 실행파일(?) 들이 여러 경로에 존재할 때 원하는걸 선택하는 방법 (MPI 관련)
안녕하세요, MPI관련 실행에 문제가 있어 질문드립니다.
에러메시지는 대략 아래와 같습니다
----------------------------------------------
mca: base: component_find: unable to open /APP/ ~~~ /openmpi/mca_...: /APP/ ~~~ / : undefined symbol: ~~~ (ignored)
.
.
.
tcp_peer_recv_connect_ask: received different version from [[ ~~~ ], 0]: 1.8.5 instead of 1.10.5
----------------------------------------------
보면 문제가 일어나는 이유는 openmpi 가 여러곳에 설치되어 있다는 것에서 발생하는 것 같습니다. /APP/ ~~~ /openmpi/ 디렉토리에도 mca_... 라이브러리(?) 가 존재하고, 제가 따로 설치한 좀 더 새로운 버전의 openmpi 가 또 제가 지정해둔 디렉토리(편의상 /A/ 디렉토리라 하겠습니다)에 존재하고 있어서 충돌이 발생하고 있는 것 같네요.
/APP/ ~~~ /lib/openmpi/ 에 깔린 mca_... 는 1.8.5 버전일거고,
/A/lib/openmpi/ 에 깔린 mca_... 는 1.10.5 버전이겠죠.
현재 제 .bash_profile에 PATH 및 LD_LIBRARY_PATH, LD_RUN_PATH 에 /A/lib 및 /A/bin 을 등록해둔 상태라 type mpirun 을 해 보면 /A/bin 디렉토리에 존재하는 애로 잘 나옵니다. 결국 mpirun을 하는 과정에서 어쩌다가 보니 제가 추가해둔 /A/와 관련된 PATH에서 찾는게 아니라 기존 root 권한에 의해 등록된 /APP/ ~~~ 위치에 있는 mca_... 애들을 쓰려고 시도하고, 그래서 버전이 다르다는 오류가 뜨는 것 같은데요,
관련한 해결법을 찾아보니 (https://www.open-mpi.org/faq/?category=troubleshooting#teg-symbols-not-found) '구 mpi 버전을 삭제하고 쓰려는 버전을 새로 설치해라' 라고 하네요 ㅎㅎ 근데 지금 쓰는 서버가 제가 루트권한을 갖고 있지 않을뿐더러, 여러사람이 쓰는거라 제 디렉토리에 따로 설치해서 쓰는게 아니면 뭔가 따로 설치/삭제하기가 어려운 상황입니다.
어떻게 하면 /APP/ ~~~ 를 찾아가지 않고 제가 만든 /A/ 안에서 mpirun 이 온전히 실행되게 만들 수 있을까요?
echo $PATH
echo $PATH
세벌 https://sebuls.blogspot.kr/
echo $PATH 를 적어달라는 말씀이신가요?
echo $PATH 를 하면 /APP/ ~~~ /openmpi/bin 과 /A/openmpi/bin 이,
echo $LD_LIBRARY_PATH 를 하면 /APP/ ~~~ /openmpi/lib와 /A/openmpi/lib 가 동시에 들어있음을 확인할 수 있습니다.
$PATH 와 $LD_LIBRARY_PATH 에서
$PATH 와 $LD_LIBRARY_PATH 에서 불필요한 패스를 제거하던가, 본인 것을 그것들 보다 앞쪽에 추가하던가 하세요.
echo $PATH 결과를 적어달란 말씀이신가요??
echo $PATH 를 하면 /APP/ ~~~ /openmpi/bin 과 /A/openmpi/bin 이,
echo $LD_LIBRARY_PATH 를 하면 /APP/ ~~~ /openmpi/lib와 /A/openmpi/lib 가 동시에 들어있음을 확인할 수 있습니다.
댓글 달기