HTCondor 사용법: 두 판 사이의 차이
(새 문서: 본 문서에서는 HTCondor 를 사용하는 방법에 대해 다룹니다. HTCondor 가 기구축된 클러스터를 활용하는 사용자 측면에서 다룹니다. __색인안함__ 분류:작성중) |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
본 문서에서는 HTCondor 를 사용하는 방법에 대해 다룹니다. HTCondor 가 기구축된 클러스터를 활용하는 사용자 측면에서 다룹니다. | 본 문서에서는 HTCondor (HT: High Throughput) 를 사용하는 방법에 대해 다룹니다. HTCondor 가 기구축된 클러스터를 활용하는 사용자 측면에서 다룹니다. | ||
HTCondor 는 한개 또는 한개 이상의 컴퓨터로 구성된 클러스터의 작업을 관리하는 프로그램으로서 CERN lxplus 부터, NERSC 등 초대형 클러스터부터 kCMS, koALICE 나 각 연구실의 클러스터에서도 광범위하게 활용되고 있습니다. | |||
HTCondor 를 활용하여 프로그램을 병렬작동하기 위해서는 다음 과정을 따릅니다. | |||
# 프로그램이 여러개의 작업으로 쪼개어져 작동할 수 있도록 병렬화 합니다. | |||
# 프로그램이 각 노드에서 작업될 수 있도록 작업 과정을 구성하고, 쉘 스크립트를 작성합니다. | |||
# 필요한 파일을 이동하고 쉘 스크립트가 각 작업별로 작동한 후 결과 파일을 들고올 수 있도록 condor_submit 의 submit file 을 작성합니다. | |||
이 과정은 대부분의 작업에 대해 명시적이며 거의 변동되지 않습니다. (병렬컴퓨팅에서는 거의 비슷합니다) | |||
== 프로그램 병렬화 == | |||
HTCondor 을 활용하여 작업을 할 구상을 한다면, 가장 먼저 해야할 것은 프로그램을 병렬작업에 맞게 튜닝하는 것입니다. 프로그램을 병렬화하는 것에는 크게 두가지로 나눌 수 있습니다. | |||
이 과정은 아주 간단하게 말해서 '''(1)''' '''모든 작업에 대해''' '''입력과 출력이 구분될 수 있도록 하고 (2) (1)에 맞는 입출력을 할 수 있도록 Program Argument 를 프로그램에 부여하는 것''' 입니다. 만약 무작위연산을 기반으로 한 연산이 있다면 (몬테카를로연산 등) 랜덤 시드를 외부에서 argument 로 부여할 수 있도록 세팅해야합니다. '''(시간시드 금지, 중요)''' | |||
=== 입출력 구분 === | |||
=== Argument 부여 === | |||
==== C++ ==== | |||
<syntaxhighlight lang="c++"> | |||
int main(int argc, char** argv) { … } | |||
</syntaxhighlight>-c, -v, --version 등 위치 기반이 아닌 문자옵션 기반 구성은 ''getopt'', ''getopt_long,'' ''getopt_long_only'' 검색하여 활용 (한국어 자료 많음, #include <unistd.h>) | |||
==== python ==== | |||
<syntaxhighlight lang="python3"> | |||
import sys | |||
# argc can be called via sys.argc | |||
# argv can be called via sys.argv | |||
</syntaxhighlight>python 도 ''getopt'' 활용 가능 (''import getopt'') | |||
== 작업 과정 구성 == | |||
== condor_submit == | |||
=== 숫자로 병렬화한 경우 === | |||
=== 이름으로 병렬화한 경우 === | |||
== 자동화 == | |||
== 주의 사항 == | |||
__색인안함__ | __색인안함__ | ||
[[분류:작성중]] | [[분류:작성중]] |
2023년 4월 4일 (화) 21:38 판
본 문서에서는 HTCondor (HT: High Throughput) 를 사용하는 방법에 대해 다룹니다. HTCondor 가 기구축된 클러스터를 활용하는 사용자 측면에서 다룹니다.
HTCondor 는 한개 또는 한개 이상의 컴퓨터로 구성된 클러스터의 작업을 관리하는 프로그램으로서 CERN lxplus 부터, NERSC 등 초대형 클러스터부터 kCMS, koALICE 나 각 연구실의 클러스터에서도 광범위하게 활용되고 있습니다.
HTCondor 를 활용하여 프로그램을 병렬작동하기 위해서는 다음 과정을 따릅니다.
- 프로그램이 여러개의 작업으로 쪼개어져 작동할 수 있도록 병렬화 합니다.
- 프로그램이 각 노드에서 작업될 수 있도록 작업 과정을 구성하고, 쉘 스크립트를 작성합니다.
- 필요한 파일을 이동하고 쉘 스크립트가 각 작업별로 작동한 후 결과 파일을 들고올 수 있도록 condor_submit 의 submit file 을 작성합니다.
이 과정은 대부분의 작업에 대해 명시적이며 거의 변동되지 않습니다. (병렬컴퓨팅에서는 거의 비슷합니다)
프로그램 병렬화
HTCondor 을 활용하여 작업을 할 구상을 한다면, 가장 먼저 해야할 것은 프로그램을 병렬작업에 맞게 튜닝하는 것입니다. 프로그램을 병렬화하는 것에는 크게 두가지로 나눌 수 있습니다.
이 과정은 아주 간단하게 말해서 (1) 모든 작업에 대해 입력과 출력이 구분될 수 있도록 하고 (2) (1)에 맞는 입출력을 할 수 있도록 Program Argument 를 프로그램에 부여하는 것 입니다. 만약 무작위연산을 기반으로 한 연산이 있다면 (몬테카를로연산 등) 랜덤 시드를 외부에서 argument 로 부여할 수 있도록 세팅해야합니다. (시간시드 금지, 중요)
입출력 구분
Argument 부여
C++
int main(int argc, char** argv) { … }
-c, -v, --version 등 위치 기반이 아닌 문자옵션 기반 구성은 getopt, getopt_long, getopt_long_only 검색하여 활용 (한국어 자료 많음, #include <unistd.h>)
python
import sys
# argc can be called via sys.argc
# argv can be called via sys.argv
python 도 getopt 활용 가능 (import getopt)