問題タブ [memory-bandwidth]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - メモリは行列加算 (SIMD 命令) のボトルネックですか?
SIMD 命令 (_mm256_add_pd、store、load など) を使用して、C で 2 次元行列の加算を最適化しようとしています。ただし、大幅な高速化はまったく見られません。いくつかのタイミングコードを使用すると、単純なソリューションの.8x-1.5xの範囲でスピードアップが見られます)。これが典型的なのかどうか疑問に思っていましたか?この場合、計算が非常に少ないように見えるため、メモリのボトルネックになる可能性があると考えていました。一度に4つの追加を行っているため、これにより速度が約4倍向上すると信じているため、ボトルネックが何であるかは完全にはわかりません.
私は何をしているのかを示すためにいくつかのコードを作成しました (並列 + SIMD と SIMD のみのテスト):
私が気づいたことは、結果が LOOP_COUNT に大きく依存しているように見えることです。ループ数が多い場合、並列/SIMD バージョンは非常にうまく機能しますが、ループ数が少ない場合は、単純なソリューションの方がうまくいく傾向があります。