스케줄러(예: LSF, Slurm 등)가 장착된 고성능 Linux 클러스터에 액세스할 수 있다고 가정하면 이를 통해 최대중간 사이즈작업은 언제든지 실행 중이거나 일시 중지되며 대부분의 경우엘 < 중간 사이즈동시에 실행할 수 있습니다.
이제 내가 달리고 싶다고 가정해 봅시다.질소가능한 한 빨리 독립적으로 주문을 발행하십시오.
만약에질소 ≤ 중간 사이즈, 각 명령을 별도의 작업으로 스케줄러에 제출한 다음 완료할 수 있습니다.
하지만 만약에질소 > 중간 사이즈? 또는질소 ≫ 중간 사이즈심지어?
이것질소 ≫ 중간 사이즈장면이 발생하다극도로내 작업에서는 이런 일이 자주 발생한다. 사실 , 이를 편리하게 처리할 수 있는 도구를 찾는 것도 무리가 아니다 .
스케줄러에 의해 부과된 제한을 해결하는 매우 일반적이고 간단한 방법은 분할하는 것입니다.질소독립적인 명령 입력엘별도의 일회성 "배치" 스크립트를 작성하고 아래와 같이 후자를 스케줄러에 제출합니다.엘혼자 일하기 2 .
물론 이러한 일회성 배치 스크립트를 만드는 것은 지루하고 다소 성가신 일이지만, 쉘 사용이나 Python, Perl 등과 같은 스크립트 언어 사용에 능숙한 사람이라면 집에서도 쉽게 처리할 수 있습니다. 자동화를 달성하기 위해 자신만의 트릭을 선보입니다.
그러나 내 질문은 프로그래밍 기술이 부족한 사람들도 생성된 작업을 자동화하는 데 사용할 수 있는 공개적으로 (그리고 무료로) 사용할 수 있는 도구가 Unix 생태계에 있느냐는 것입니다.엘입력 목록으로 제공되는 이와 같은 배치 스크립트질소독립 명령?
1 사실 이런 일이 너무 자주 발생하기 때문에 스케줄러가 아직 이에 대한 기본 지원을 갖추고 있지 않다는 사실에 놀랐습니다. 내가 아는 한, 적어도 내가 가장 잘 알고 있는 스케줄러(Slurm 및 LSF)에는 그러한 지원이 없습니다. 누락된 부분이 있으면 수정해 주세요.
2보다 일반적으로 다음과 같이 할 수 있습니다.질소명령 입력케이배치 스크립트, 그냥케이 ≤ 중간 사이즈하지만 내 경험에 따르면 다음을 선택하세요.케이 = 엘이러한 제약 조건 내에서 최대 또는 최대에 가까운 처리량을 달성하는 가장 간단한 방법입니다. 그 이유는 알기 어렵지 않지만, 이 문제를 완전히 논의하려면 내가 여기서 할 수 있는 것보다 더 많은 시간이 필요할 것입니다.
답변1
L=10000
M=100000
N=10000000
jobs=$(wc -l < all_jobs.txt)
jobs_per_jobslot=$(( jobs/L + 1))
cat all_jobs.txt | parallel --pipe -N$jobs_per_jobslot 'cat > jobs_{#}'
# submit jobs_*
20분 동안 1장과 2장을 읽으세요.https://doi.org/10.5281/zenodo.1146014당신의 명령줄은 당신을 좋아할 것입니다.