OpenMPを使用して誤った共有が発生していると思います。それを特定して修正する方法はありますか?OpenMP False Sharing
私のコードは次のとおりhttps://github.com/wchan/libNN/blob/master/ResilientBackpropagation.hppシングルスレッド1つのコアバージョンに比べ4コアCPUを使用してライン36
追加の性能がわずか10%が得られました。 NUMA 32物理(64仮想)CPUシステムを使用する場合、CPU使用率は約1.5コアで止まります。これは誤った共有の直接的な症状であり、拡大縮小できないと思います。
また、インテル®VTuneプロファイラーで実行しようとしましたが、ほとんどの時間は "f()"および "+ ="機能に費やされています。私はこれが合理的だと信じて、なぜ私がそのようなスケーリングを得ているのかを実際に説明していません...
アイデア/提案はありますか?
ありがとうございました。
偽の共有は減少しませんCPU使用率。これは単にキャッシュミスのトンを引き起こします。 – Mysticial
@ミステリー - スケジューラがページを所有していたプロセッサ上のすべてのスレッドをスケジューリングして過度に移行しないようにNUMAでスケジューリングしていたとします。 – Flexo
@awoodlandこれは確かに可能です。すべてをメモリに接近させることの別の結果にもかかわらずです。 (あなたが私のUNに2番目の「私」を残してから、私はあなたのpingを手に入れませんでした) – Mysticial