0

次のマシンに OpenMP マルチスレッド プログラムを実装しています。

x86_64, On-line CPU(s) list:   0-23
Thread(s) per core:    2
Core(s) per socket:    6
Socket(s):             2

これは、マルチスレッド クラスタリング プログラムです。までのデータセット サイズで予想される速度向上が示されて2 mil rows ~ 250 MB dataいますが、より大きなデータセットでテストしている間、多くのスレッドがhtop表示されD state、CPU% は99-100%. このサイズまでのデータサイズの場合、すべてのスレッドが で実行されることに注意してくださいR state CPU% ~100%。実行時間~100はシーケンシャルの場合の倍以上になります。

空きメモリが利用できるようで、swpメモリはすべてのケースで 0 です。

使用されるデータ構造に関しては、サイズ O(n) の 3 つの共有データ構造があり、各スレッドは、さらにマージするステップのために格納されるプライベート リンク リストを作成します。このスレッドごとのデータ構造によって使用される余分なメモリが原因だと思いましたが、コメントアウトしてもプログラムは同じ問題を示します。詳細を提供する必要がある場合はお知らせください。

数か月前に OpenMP と並列コンピューティングを始めたばかりなので、考えられる問題を教えてください。

4

0 に答える 0