私は各ノードに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にのみ適用されます。