マルチプロセッサセットアップで6回同時に実行する必要がある実行可能ファイルfoo.exe
があり、最初の3つのインスタンスがグループ0のコアに割り当てられ、次の3つのインスタンスがグループ1のコアに割り当てられます。
デスクトップにfoo.exe
プログラムのショートカットが6つあります。各ショートカットは、foo.exe
プログラムに実行するための異なるパラメーターのセットを提供します。
ショートカットをクリックするだけで、foo.exe
プログラムの6つのインスタンスを実行できます。それらはすべて起動しますが、タスクマネージャーに移動し、グループアフィニティを設定して、3がグループ0のCPUに割り当てられ、3がCPUのグループ1に割り当てられていることを確認する必要があります。
デスクトップにあるショートカットを変更して、foo.exe
プログラムの3つがグループ0を使用し、そのうちの3つがグループ1を使用するようにする方法はありますか?
start
コマンドを使用して/affinity
フラグを使用し、プロセスが使用するコアを指定できます。
start /affinity n foo.exe -arguments
したがって、ショートカットは次のようになります。
c:\windows\system32\cmd.exe /C start /affinity n foo.exe -arguments
ここで、nはCPUコア番号+1です。
したがって、Core 0で実行するには、次のようになります。
c:\windows\system32\cmd.exe /C start /affinity 1 foo.exe -arguments
。
CPUに4つのコアがあると仮定します。使用するコアを指定するには:
配列の長さがコアの数に等しい配列としてコアを視覚化します。コアは、右から左に降順で配置されます。
[CPU3, CPU2, CPU1, CPU0]
ここで、プロセスで使用するコアを1に、使用しないコアを0に置き換えます。プロセスでコア3と1を使用する場合、配列は次のようになります。
[0,1,0,1]
配列の要素を文字列に「ポップ」します。これで、0101
として表されます。
文字列が2進数であると想定し、16進数に変換します。今では0x5
になります
同じコマンドstart /affinity n foo.exe -arguments
を使用しますが、n
は0x5
になり、start /affinity 0x5 foo.exe -arguments
になります。
0x
のプレフィックスを付ける必要があることを指定していません。 start /?
を読み取ると、16進数であることが指定されます。