--jobs
GNU 옵션이 지정되었다는 것은 parallel
정확히 무엇을 의미합니까 ?
나는 다음을 실행한다:
parallel --jobs 10 ./program ::: {1..100}
이는 program
집중적인 작업이며 개별 작업은 서로 완전히 독립적입니다. {1..100}
각 작업을 나타내는 기호 입력입니다. 내 PC에서 실행 중인 프로세스를 확인해 보면 다음과 같은 프로세스가 여러 번 발생합니다.더 적은10개 이상의 작업이 동시에 실행되고 있습니다.
그렇다면 --jobs
정확히 무엇을 의미합니까?
답변1
매뉴얼 페이지에 따르면, --jobs
머신당 병렬로 실행되는 최대 작업 수(강조):
——위치 N
각 시스템의 작업 슬롯 수입니다. 달리기에 따라N개의 작업이 동시에 진행됩니다. 0은 가능한 한 많은 것을 의미합니다.
그렇다고 항상 그와 같다는 의미는 아닙니다. 병렬 컴퓨팅의 첫 번째 요구 사항은 작업을 독립적으로 실행할 수 있고 최종 출력을 결합하여 작업을 순차적으로 실행하면 동일한 출력을 생성할 수 있다는 것입니다. 이것이 가능하지 않으면 작업을 병렬로 완료할 수 없습니다.
또한 GNU 병렬 처리 매뉴얼 페이지에서:
GNU Parallel은 하나 이상의 컴퓨터를 사용하여 작업을 병렬로 실행하기 위한 쉘 도구입니다. 작업은 단일 명령일 수도 있고 입력의 각 줄에 대해 실행되어야 하는 작은 스크립트일 수도 있습니다.
이제 파일에 2줄만 있는데 이를 전달하면 --jobs 10
필요한 parallel
최소 입력이 1줄이므로 2줄에 대해 10개의 작업을 실행할 수 없습니다. 따라서 2개의 위치만 표시됩니다.
이는 GNU 병렬성뿐만 아니라 거의 모든 병렬 컴퓨팅 엔진에도 해당됩니다.