私のアプリケーションでは、ある時点で大きな連続ブロックのメモリデータ(100sのMB)で計算を実行する必要があります。私が考えていたのは、私のプログラムが将来触れるブロックの部分を先読みしておくことでした。その部分の計算を実行すると、そのデータはすでにキャッシュに入っています。x86-64のキャッシュにデータをプリフェッチする
gccでこれを達成する方法の簡単な例を教えてもらえますか?どこかで_mm_prefetch
を読んでいますが、正しく使用する方法はわかりません。また、私はマルチコアシステムを持っていますが、各コアは異なるメモリ領域で並行して作業することに注意してください。
メモリアクセスがシーケンシャルである場合、ハードウェアプリフェッチャはすでにそれを行います。したがって、手動プリフェッチではあまり改善されないでしょう。 – Mysticial
プリフェッチが実際に役立つ場所の例については、この質問を参照してください。http://stackoverflow.com/questions/7327994/prefetching-examples – Mysticial
ハードウェアのプリフェッチャは、何らかの形で私がメモリ内の連続領域を利用していることを認識し、 ? – pythonic