次のマシンに 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 と並列コンピューティングを始めたばかりなので、考えられる問題を教えてください。