Linux 14

[ Linux - MPI ] MPI 병렬 계산 멈춤 문제 해결하기 (feat. 아무런 에러 메시지 없이 진행이 안될 때)

배경: MPI 통신 IP 튜닝 단일 노드에서 병렬 계산이 잘 되다가, 2개 이상 노드를 잡고 계산을 할 때에 계산이 진행이 되지 않는다면... 아마도 노드-노드 간 MPI 통신 문제일 가능성이 높습니다. 병렬 연산을 수행하는 프로그램/코드를 다양한 리눅스 OS에서 사용하려고 할 때에 발생할 수 있는 이슈입니다. 보통 리눅스에서 openmpi 라이브러리로 복수노드로 병렬해석을 하게되면 "알아서" 잘 통신을 하는 경우가 많지만, 특히 최신 버전의 리눅스 OS의 경우 MPI 통신에 사용할 IP를 지정해줘야만 하는 경우가 있습니다. 문제상황 진단 병렬 프로그램/코드, 환경변수 등 모두 문제 없는 상태에서... MPI를 사용해서 단일노드, 단일코어 해석 --> 문제 없음 MPI를 사용해서 단일노드, 복수코어 해석..

Linux 2023.10.22

[ Linux - MPI ] 쉽게 설명하는 MPI 통신 핵심 개념 (feat. MPI 통신 멈춤 문제 해결 방법)

​ 배경 슈퍼컴, HPC나 워크스테이션을 사용해서 대규모 시뮬레이션을 수행 할 때에는 보통 클러스터의 여러 노드를 잡고 해석을 수행합니다. 이때 노드-노드 간 통신이 필요하게 되는데, 주로 mpi나 openmp 와 같은 병렬 통신 라이브러리를 사용합니다 이에 관련된 핵심 개념을 러프하게 정리했습니다. 여러 장비나 컴퓨터에서 병렬 컴퓨팅 프로그램/코드를 사용할 때 자주나오는 개념들과, MPI를 좀 더 잘 활용하기 위해서 필요한 개념들을 정리했습니다. 단, 개인 차원에서 필요한 수준까지만 습득하고 이해한 것을 적당히 정리한 것이므로 오류가 있을 수 있음을 주의해 주세요. 예를 들면... 어떤 계산 코드를 컴파일하고 멀티 노드 계산을 수행할 때, 발생할 수 있는 문제가 존재하는데... 돌고 돌아 mpirun ..

Linux 2023.10.22

[Linux - Error] ssh exchange identification: read: Connection reset by peer - SSH 접속이 안될 때

요약 - 다음과 같이 ssh 접속 시 메시지를 띄우면서 접속이 안될 때는 아래와 같이 해결해 봅시다. - 다음 파일에 ssh 접속이 가능한 IP / 노드이름을 추가해 줍니다. 순서 명령어 / 동작 설명 1 $ sudo vi /etc/hosts.allow vi로 hosts.allow 파일 실행 2 i --> 파일편집 --> Esc --> : --> wq 파일 맨 아래 sshd: 부분에 IP/호스트이름 추가 ex) sshd: 111.222.333.444, node1 - 상기 방법으로 해결이 안될 때에는, 다음 파일에서 ssh 접속이 차단된 IP / 노드이름을 제거해 줍니다. 순서 명령어 / 동작 설명 1 $ sudo vi /etc/hosts.deny vi로 hosts.allow 파일 실행 2 i --> 파일..

Linux 2022.03.15

[Linux - How to] 리눅스 커맨드 명령어, 프로그램의 디폴트 버전 (기본 경로)를 변경하고 싶을 때

요약 - 리눅스 커맨드 명령어/프로그램의 디폴트 버전을 변경하고 싶으면 다음 명령어를 사용하고, 원하는 버전을 선택합니다. sudo update-alternatives --config {명령어/프로그램 이름} - 예를들어 python 의 기본버전을 바꾸고 싶으면, 아래 그림과 같이 명령어를 입력한 뒤, 원하는 버전(기본 경로)에 해당하는 번호를 입력하면 됩니다. - 현재는 2번 python3.7이 기본 버전인데( * 로 표시), 1번으로 입력하면 python2.7이 기본 버전이 됩니다. 배경 - 여러 프로그램이나 라이브러리의 의존성 때문에, 때로는 낮은 버전이나 다른 버전의 커맨드/프로그램을 사용해야하는 경우가 있습니다. - 예를 들면, 최신 파이썬 버전이 아니라 파이썬 2 버전을 사용하고 싶으면 $ p..

Linux 2022.03.14

[Linux - How to] 리눅스 시스템 종료 / 재부팅 명령어

요약 - 시스템을 건드리기 위해선 root 권한이 필요합니다. $ su 명령어를 통해 관리자 권한을 획득한 뒤 아래 명령어를 실행하거나, 아래 명령어 앞에 # sudo 를 붙여 사용하시길 바랍니다. - 가장 단순하게 시스템을 종료하거나 재부팅 하고 싶다면 아래 명령어 중에서 하나 골라 사용하시면 되겠습니다. 동작 명령어 시스템 종료 shutdown -h now poweroff init 0 halt 시스템 재부팅 shutdown -r now reboot init 6 - 특정 시점에 시스템을 종료하거나 재부팅하고 싶다면 아래 shutdown 명령어 부분을 참고해주세요. 세부 사항 - 먼저, 재부팅이나 시스템 종료는 명령어 사용 후 즉각적으로 수행되므로, 정말 시스템이 종료되어도 무방한지 다시 한 번 확인해 ..

Linux 2022.03.13

[Linux - Tip] 리눅스 압축 명령어 tar 속도 향상

배경 자칫 별다른 생각 없이 tar 명령어에 자연스럽게 -xvf와 같은 옵션을 붙인다든지, 압축률이 중요한 상황인데 tar 를 사용할 때가 있는데요. tar 명령어의 옵션 혹은 플래그에 따라 압축 속도, 압축률은 크게 차이가 나게 됩니다. 결론부터 말하자면, 압축률이 중요한 경우 / 압축률 상관 없이 빠르게 압축이 필요한 경우 등에 따라 다른 옵션을 붙여 사용하는것이 좋습니다. 본 게시물에서는 다음과 같은 경우에 대해 케이스 스터디를 해보겠습니다. - 모니터링 메시지 출력/억제 : $ tar -zcvf / $ tar -zcf - gzip 압축 여부 : $ tar -zcvf / $ tar -cvf 케이스 스터디 1 : 모니터링 메시지 출력 / 억제 tar -zcvf {생성할 압축파일} {대상 파일/폴더} ..

Linux 2022.03.01

[Linux - How to] 프로그램 실행 시간 체크 명령어 time

배경 리눅스 사용 시 프로그램이나 스크립트의 실행 시간, 속도를 확인하고 싶을 때가 있습니다. 관련 명령어가 있을까요? 방법 가장 간단하게는 명령어 time을 사용하는 방법이 있습니다. 아래 명령어를 사용합니다. time {수행 명령어} 즉, 사용하고자 하는 프로그램의 실행 명령어 앞에 $ time을 붙여주면 됩니다. 아래의 예를 확인해 봅시다. $ tar 명령어를 이용해서 압축하는 상황입니다. 사용하고자 하는 명령어 앞에 $ time을 붙여서 수행을 하면, 작업이 모두 완료된 후 시간을 출력해 줍니다. 추가사항 똑같은 압축일 줄만 알았는데, $ tar -cvf {압축파일 이름}.tar 보다 $ tar -zcvf {압축파일 이름}.tar.gz 이 훨씬 느리네요. 이 경우에는 약 3배 가량 느립니다. 다만..

Linux 2022.03.01

[Linux - How to] Linux (Ubuntu, CentOS, RedHat) 하드웨어 정보 (CPU, GPU, RAM) 확인

CPU 확인 방법 가장 간단하게 아래 명령어를 통해 확인할 수 있습니다. lscpu 아래와 같이 표시됩니다. 다른 방법은 "/proc/cpuinfo" 를 확인하는 방법으로, 다음 명령어를 사용합니다. cat /proc/cpuinfo 아래와 같이 프로세서 별 하드웨어 정보가 표시됩니다. CPU 개수만을 확인하는 별도의 명령어도 존재합니다. nproc 아래와 같이 표시됩니다. GPU 확인 방법 명령어는 다음과 같습니다. lspci | grep VGA # lspci 명령어는 시스템의 PCI 버스와 장치의 정보를 출력해 줍니다. 그중에 GPU 관련 정보만 뽑아 내기 위해, # grep VGA 를 파이프라인으로 연결해 준 것입니다. 다음과 같이 표시됩니다. 만약에 제조사 이름만 뜨고, 디테일한 정보가 나타나지 않..

Linux 2021.10.04

[Linux - How to] 리눅스 커널, 운영체제(Ubuntu, CentOS, etc.) 정보 및 버전 확인하기

커널 확인 명령어 기본 명령어는 다음과 같습니다. uname "-a" 플래그로 더 자세한 사항을 확인할 수 있습니다. uname -a 다음과 같이 표시됩니다. OS 확인 명령어 OS를 확인할 수 있는 명령어는 몇 가지가 있습니다. 기본적으로는 시스템 설정파일이 존재하는 "etc/" 폴더에 특정 파일을 확인하는 방식입니다. 가장 간단하게 확인할 수 있는 명령어는 다음과 같습니다. cat /etc/issue cat은 파일 내용을 출력하기 위해 사용되었습니다. 다음과 같이 표시됩니다. 좀 더 자세한 정보를 원하면 다음을 사용합니다. cat /etc/*release 보통 OS 릴리즈 관련 정보는 "/etc/redhat-release", "/etc/lbs-release" 등 OS 에 따라서 release 앞쪽이 ..

Linux 2021.10.03

[Linux - How to] 리눅스 디스크 사용 용량 확인 / 폴더 및 파일용량 확인 방법 - df / du 명령어

배경 - 커맨드 창에서 시스템 혹은 시스템에 마운트된 디스크 용량을 확인하고 싶을 때... - 특정 경로의 폴더 및 파일의 용량을 확인하고 싶을 때... 방법 - df : 전체 디스크 용량 확인 - -h : 보기 좋게 출력 * df 명령어 >> df -h * df -h 결과 - du : 특정 경로의 폴더 및 파일 용량 확인 - -a : 지정 디렉토리 내 파일/폴더 단위로 용량 표시 (지정하지 않으면 현재 디렉토리) - -h : 보기 좋게 출력 - -s : 지정 디렉토리의 총 용량 출력 * du 명령어 >> du [경로] -ah * du -ah 결과 * du -s 결과

Linux 2020.11.05