HTCondor 사용법: 두 판 사이의 차이

1,143 바이트 추가됨 ,  2023년 4월 4일 (화)
편집 요약 없음
편집 요약 없음
편집 요약 없음
5번째 줄: 5번째 줄:
HTCondor 를 활용하여 프로그램을 병렬작동하기 위해서는 다음 과정을 따릅니다.
HTCondor 를 활용하여 프로그램을 병렬작동하기 위해서는 다음 과정을 따릅니다.


# 프로그램이 여러개의 작업으로 쪼개어져 작동할 수 있도록 병렬화 합니다.
# 프로그램이 여러개의 작업으로 쪼개어져 작동할 수 있도록 '''병렬화''' 합니다.
# 프로그램이 각 노드에서 작업될 수 있도록 작업 과정을 구성하고, 쉘 스크립트를 작성합니다.
# 프로그램이 각 노드에서 작업될 수 있도록 '''작업 환경 구축 과정을 구상하고, 쉘 스크립트를 작성'''합니다.
# 필요한 파일을 이동하고 쉘 스크립트가 각 작업별로 작동한 후 결과 파일을 들고올 수 있도록 condor_submit 의 submit file 을 작성합니다.
# 필요한 파일을 이동하고 쉘 스크립트가 각 작업별로 작동한 후 결과 파일을 가져올 수 있도록 '''condor_submit 의 submit file 을 작성'''합니다.


이 과정은 대부분의 작업에 대해 명시적이며 거의 변동되지 않습니다. (병렬컴퓨팅에서는 거의 비슷합니다)
이 과정은 대부분의 작업에 대해 명시적이며 거의 변동되지 않습니다. (병렬컴퓨팅에서는 거의 비슷합니다)
14번째 줄: 14번째 줄:
HTCondor 을 활용하여 작업을 할 구상을 한다면, 가장 먼저 해야할 것은 프로그램을 병렬작업에 맞게 튜닝하는 것입니다. 프로그램을 병렬화하는 것에는 크게 두가지로 나눌 수 있습니다.
HTCondor 을 활용하여 작업을 할 구상을 한다면, 가장 먼저 해야할 것은 프로그램을 병렬작업에 맞게 튜닝하는 것입니다. 프로그램을 병렬화하는 것에는 크게 두가지로 나눌 수 있습니다.


이 과정은 아주 간단하게 말해서 '''(1)''' '''모든 작업에 대해''' '''입력과 출력이 구분될 수 있도록 하고 (2) (1)에 맞는 입출력을 할 수 있도록 Program Argument 를 프로그램에 부여하는 것''' 입니다. 만약 무작위연산을 기반으로 한 연산이 있다면 (몬테카를로연산 등) 랜덤 시드를 외부에서 argument 로 부여할 수 있도록 세팅해야합니다. '''(시간시드 금지, 중요)'''
이 과정은 아주 간단하게 말해서 '''(1)''' '''모든 작업에 대해''' '''입력과 출력이 구분될 수 있도록 하고 (2) 그에 맞는 입출력을 할 수 있도록 Program Argument 를 프로그램에 부여하는 것''' 입니다. 만약 무작위연산을 기반으로 한 연산이 있다면 (몬테카를로연산 등) 랜덤 시드를 외부에서 argument 로 부여할 수 있도록 세팅해야합니다. '''(시간시드 금지, 중요)'''


=== 입출력 구분 ===
=== 입출력 구분 ===
30번째 줄: 30번째 줄:
# argc can be called via sys.argc  
# argc can be called via sys.argc  
# argv can be called via sys.argv
# argv can be called via sys.argv
</syntaxhighlight>python 도 ''getopt'' 활용 가능 (''import getopt'')
</syntaxhighlight>python 도 ''getopt'' 활용 가능 (''import getopt, 활용방법은 별도 검색'')


== 작업 과정 구성 ==
== 작업 과정 구성 ==
작업과정 구성은 각 노드의 운영체제와 접근할 수 있는 스토리지(라이브러리)에 따라 구성 방법이 다릅니다.
=== 환경 구성을 해야만 하는 경우 ===
다음과 같은 경우 개별 노드에서 작업환경을 구성해야하며, '''보통 새로 프로그램을 빌드해야만 합니다. 보통 잘 구성된 클러스터는, 이럴 일이 잘 없습니다.'''
* UI 기기(condor_submit을 하는 클러스터의 머신, 일반적으로 1차접속단)의 OS 가 개별 노드와 다른 경우
* 프로그램에서 호출하는 라이브러리의 경로를 각 노드에서 호출할 수 없는 경우 (동일한 스토리지 시스템이 마운트되지 않은 경우)
위 상황 이외에도 작업환경을 노드별로 구축해야하는 경우가 발생할 수 있으나, 이는 이를 아는 것은 매우 경험적인 부분입니다. (비명시적일 경우가 더 많습니다)
=== Argument Pass-Through ===


== condor_submit ==
== condor_submit ==
39번째 줄: 50번째 줄:


=== 이름으로 병렬화한 경우 ===
=== 이름으로 병렬화한 경우 ===
=== ROOT 병렬화 ===


== 자동화 ==
== 자동화 ==


== 주의 사항 ==
== 주의 사항 ==
== 예시 ==
참고: https://gist.github.com/Isaac-Kwon/c062ba4abee8bebf2f64f95ea52e2068
__색인안함__
__색인안함__
[[분류:작성중]]
[[분류:작성중]]