問題タブ [auto-vectorization]

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.

0 投票する
2 に答える
447 参照

c++ - この sqrt ループを完全にベクトル化するにはどうすればよいでしょうか?

このコードを取ると

でコンパイルするとg++ -S -c -O3 -fopenmp-simd -march=cascadelake、ループで次のような命令が得られます ( compiler-explorer )

XMM は 128 ビット レジスタですが、cascadelake は avx-512 をサポートしています。gcc で 256 (YMM) または 512 ビット (ZMM) レジスタを使用する方法はありますか?

比較すると、ICC はデフォルトで cascadelake に 256 個のレジスタを使用icc -c -S -O3 -march=cascadelake -qopenmp-simdます。

-qopt-zmm-usage=highまた、 512 ビット レジスタを使用するオプションを追加できます( compiler-explorer ) 。

0 投票する
0 に答える
69 参照

c++ - shuffle() 関数と SIMD コード生成

私は ecatmur のconstexpr swap()関数について考えてきましたが、それはより一般的な関数の特殊なケースだと思いshuffle()ます:

Iはソース インデックスでありJ、宛先インデックスです。実装にはさまざまな方法がありますshuffle()(詳細は省きます) が、私の経験ではshuffle()、ループ内で呼び出すと、実装によって gcc と clang が SIMD コードを同じように生成されません。したがって、私の質問です。shuffle()おそらく組み込み関数または組み込み関数を使用して、clang と gcc が既存のものよりも SIMD 化するのが好きなの定式化は存在しますか? 特定の命令セットを目指しているわけではありません。

0 投票する
1 に答える
324 参照

c++ - この for ループでベクトル化が役に立たないのはなぜですか?

これを for ループでベクトル化しようとしています。Rpass フラグを使用した後、次のコメントが表示されます。

これが何を意味するのか理解したい。「インターリーブは有益ではない」とは、配列のインデックス付けが適切でないことを意味しますか?