4

私はNUMAアーキテクチャに取り組んでおり、各計算ノードにはソケットごとに 2 つのソケットと 4 つのコアがあり、計算ノードごとに合計 8 つのコアがあり、ノードごとに 24GB の RAM があります。プロセッサ アフィニティの設定がパフォーマンスに大きな影響を与える可能性があることを証明する必要があります。

プロセッサ アフィニティを使用する場合と使用しない場合の影響の違いを示すためのベンチマークとして使用できると提案するプログラムはありますか? MPI、OpenMP、または pthreads を使用して簡単な C テスト プログラムを作成することもできますが、そのテストを実行するにはどのような操作が最適でしょうか? これは、キャッシュの局所性を利用するものでなければなりませんが、コンテキストの切り替え (ブロック操作) もトリガーするため、プロセスが別のコアに移行したり、さらに悪いことに、別のソケットに移行したりする可能性があります。8 の倍数のコアで実行する必要があります。

4

3 に答える 3

3

NUMA アーキテクチャでメモリ レイテンシの非対称性をベンチマークするプログラムを作成しようとしましたが、StackOverflow コミュニティの助けを借りて成功しました。このプログラムは私の StackOverflow の投稿から入手できます。

NUMA (Non-Uniform Memory Access) の測定。観察可能な非対称性はありません。なんで?

あなたのハードウェアと非常によく似たハードウェアでベンチマーク プログラムを実行すると、コアの NUMA ノード (アフィニティ領域) にないメモリに対してコアが読み書きしているときに、約 30% のパフォーマンス ペナルティが見られます。プログラムは、キャッシュとプリフェッチを意図的に無効にするパターンで読み書きする必要があります。そうしないと、目に見える非対称性はありません。

于 2011-09-02T13:25:48.797 に答える
2

スレッドのオーバーヘッドを測定するために設計されたASC Sequoia ベンチマーク(CLOMP) を試してください。

于 2011-10-12T09:49:05.660 に答える
0

単純なシングルスレッド プロセスを使用して、適度なデータ セットを書き込み、繰り返し読み取ることができます。プロセスは、1 つのタイム スライスよりもはるかに長く実行する必要があります。明らかに、プロセスが 1 つのコアから別のコアに移行するのに十分な時間 (100 秒など) です。

その後、2 つのテスト ケースを実行できます。

  1. CPU アフィニティなしでプロセスの 8 つのインスタンスを実行する

    $ for p in 0 1 2 3 4 5 6 7 ; do time ./my_process & ; done

  2. CPU アフィニティを使用してプロセスの 8 つのインスタンスを実行する

    $ for p in 0 1 2 3 4 5 6 7 ; do time taskset -c $p ./my_process & ; done

于 2011-04-08T14:06:47.577 に答える