1
for i in `seq 1 8` ; do
    (./runProgram &)
done

親愛なるフェロー、私は8つの独立したプロセスを作成することによって並列プロセスを作成する方法を知っています。私が次に探しているのは、

i-Run 8 コピーをプロセッサのピニングと同時に実行 (各コピーは独自のプロセッサ コア)

ii-プロセッサーのピニングと並行して 16 のコピーを実行 (コアごとに 2 つのコピー)

iii-Run 8 は、コード内の特定の関数呼び出しの後に、「iii」に従ってプロセッサ ピニングとプロセッサ コアを最も遠いコアにフリップすると同時にコピーします。

CPU の現在の構成は 8 コアです。Fedora OS を実行しています。プロセスIDを事前に知りません。

提案してください。

前もって感謝します。

4

1 に答える 1

1

i と ii を実現する最も簡単な方法は、次のtasksetコマンドを使用することです。

ケース i:

for i in `seq 0 7`; do
  taskset -c $i ./runProgram &
done

ケース ii:

for i in `seq 0 7`; do
  taskset -c $i ./runProgram &
  taskset -c $i ./runProgram &
done

ケース iii:コード内の固定を変更する方法については、マニュアル ページを参照してくださいsched_getaffinity(2)sched_setaffinity(2)

于 2012-05-07T07:05:41.643 に答える