生成されるコアpthreadを指定する方法

生成されるコアpthreadを指定する方法

私は各ノードにIntel Xeon E5430を持つクラスタを実行しています。 /proc/cpuinfoは8つのコアを報告します。私はUbuntu 16.04LTSでgccバージョン5.3.1にコンパイルされたC / C ++を使用しています。

私のタスクを各ノードに配布するのは簡単な部分でした。私の問題は、各ノードで実行されるプロセスに関連しています。8つの同時スレッドを作成し、各スレッドを別々のコアに生成する方法は?

15年前に32プロセッサSGIを使用したとき、forkコマンドは物理プロセッサIDの整数引数を使用しました。物理コアにスレッドを配置するためにフォークまたはスレッドに同様の呼び出しがありますか?

答え1

これが基本的に発生すると仮定するのは安全ですが、次のCPUに使用したいCPUセットのビットマスクであるCPUアフィニティを明示的に設定できます。sched_setaffinity()またはpthreadの場合pthread_setaffinity_np()。 cliコマンドはワークセット。これはLinuxとGNUにのみ適用されます。

関連情報