다중 코어에서 명령을 실행하는 방법

다중 코어에서 명령을 실행하는 방법

실행 시간을 단축하기 위해 모든 유휴 코어에서 실행하려는 명령이 있습니다. 특히 저는 다음에서 다운로드한 Pitman-Yor Adapter-Grammar Sampler 소프트웨어를 실행하고 있습니다.여기

./py-cfg/py-cfg-mp -r 0 -d 10 -x 10 -D -E  -e 1 -f 1 -g 10 -h 0.1 -w 1 -T 1 -m 0 -n 500 -G x.tgt y.tgt < z.tgt

parallel -j "$(nproc)"지정된 명령 앞에 추가를 시도했습니다.이 답변에서

그러나 다음과 같은 오류가 발생합니다.

Error in ./py-cfg/py-cfg-mp, argc = 29, optind = 27

답변1

대답은 다음과 같습니다. 상황에 따라 다릅니다.

GNU Parallel을 사용하면 서로 다른 입력을 사용하여 동일한 프로그램을 병렬로 실행할 수 있습니다.

parallel gzip ::: *.txt

이는 현재 디렉토리의 모든 파일에서 실행됩니다 gzip..txt

gzip단일 스레드이므로 각 인스턴스는 단일 CPU 코어만 사용합니다.

그다지 복잡하지 않습니다.

gzip그러나 여러 코어를 사용하여 단일(대형) 파일을 압축하도록 병렬화하려는 경우 .txt작업이 훨씬 더 복잡합니다. 실제로는 pigz이를 위해 만들어진 다양한 프로그램을 사용하게 됩니다(예를 들어).

즉, 자동으로 gzip멀티스레드를 수행할 수 없습니다.

Pitman-Yor 어댑터(구문 샘플러)에 대해 모르겠습니다. gzip단일 스레드인 경우 다양한 입력에서 여러 인스턴스를 실행할 수 있습니다(GNU Parallel이 이를 수행하는 데 도움이 됩니다). 그러나 단일 입력이 주어지면 여러 코어에서 실행되도록 샘플러를 자동으로 변환할 수 없습니다.

아직 확실하지 않다면 다음을 만들어 보세요.https://stackoverflow.com/help/minimal-reproducible-example

관련 정보