실행 시간을 단축하기 위해 모든 유휴 코어에서 실행하려는 명령이 있습니다. 특히 저는 다음에서 다운로드한 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