我想啟動一個作業,它接受兩個輸入引數,并在 GNUparallel 的 CPU 的 128 個執行緒之間拆分它的執行。我解釋我做了什么以及我是如何做的,并尋求幫助。
我有一個 bash 腳本“job.sh”,我在其中定義了兩個變數并啟動了一項作業
#!/bin/bash
first=70
second=10
./executable $((first-1)) $second
echo "$first $second"
現在我想使用 GNU 并行在我正在使用的服務器的 CPU 的 128 個執行緒中拆分這項繁重的作業。
閱讀檔案后,我試圖替換該行./executable $((first-1)) $second與parallel -j 128 ./executable $((first-1)) $second中,我試圖如下運行:
user@server$ nohup bash job.sh&
作業失敗。任何人都知道如何使用 GNU 并行運行可執行檔案?
uj5u.com熱心網友回復:
我想啟動一個作業,它接受兩個輸入引數,并在 GNUparallel 的 CPU 的 128 個執行緒之間拆分它的執行。
這是不可能的。GNU Parallel 啟動作業。它不會神奇地將您的單執行緒作業變成多執行緒作業。
一般來說,如果您可以將您的作業表達為:
./executable A B
./executable C D
./executable E F
./executable G H
./executable I J
:
./executable Y Z
因此,如果您能解釋一種以這種方式表達您的作業的方法,GNU Parallel 可以幫助您并行運行這些作業。
也許是這樣的:
seq 128 | parallel --dry-run ./executable {} '{= $_ =}'
(洗掉--dry-run以實際運行它)。
我認為您對 GNU Parallel 的能力有一個錯誤的印象。考慮花 20 分鐘閱讀第 1 2 章:https : //doi.org/10.5281/zenodo.1146014
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399908.html
標籤:猛击 多线程 过程 诺哈普 gnu-parallel
上一篇:std::counting_semaphore<LeastMaxValue>中的LeastMaxValue是什么?
下一篇:再次運行程式后如何將數字重置為0
