問題タブ [avx512]
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.
intrinsics - _mm512_mask_prefetch_i32gather_ps() は各要素のキャッシュ ライン全体をプリフェッチしますか?
収集プリフェッチ組み込み関数_mm512_mask_prefetch_i32gather_ps
を使用して、Knights Corner で 32 ビット float をプリフェッチできます。
double に対応する組み込み関数が存在しないため、この組み込み関数を 64 または 128 ビット要素のプリフェッチに使用するにはどうすればよいですか?
4 バイトのチャンクごとに明示的にプリフェッチする必要がありますか? それとも、32 ビット変数のプリフェッチごとに、それが占有する 64 バイトのキャッシュ ライン全体を実際にプリフェッチすると想定できますか?
例:
{1,2,10,12}
base address からのオフセットで 4 つの double をプリフェッチしたいと考えています0xf0000000
。
これは のアドレスに対応します{0xf0000008, 0xf0000010, 0xf0000050, 0xf0000060}
。
これらは、 から始まる 2 つのキャッシュ ラインを占有し{0xf0000000, 0xf0000040}
ます。
_mm512_mask_prefetch_i32gather_ps
これら 2 つのキャッシュ ラインのベース アドレスを使用するだけで十分でしょうか?
私はもともとこの質問を Intel MIC フォーラムに投稿しましたが、成功しませんでした。
gcc - GCC を使用した Xeon Phi Knights Corner 組み込み関数
Xeon Phi Knights Corner (KNC) コプロセッサー・カードの購入を考えています。しかし、私は Intel Compiler を所有しておらず、購入する気もありません (非商用バージョンはもはやオプションではないようです)。
GCC は Xeon Phi の OpenMP サポートを得ているようです。KNC 組み込み関数をサポートする GCC のバージョンまたは GCC の拡張機能はありますか?
KNC の 512 ビット SIMD は AVX512 と互換性がないことに注意してください (ただし、次のバージョンの Knights Landing では互換性があります)。
gcc - コンパイル時に SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI の可用性を検出する方法は?
私はいくつかの行列計算を最適化しようとしています.SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI [1]がコンパイラ?GCC と Clang には理想的ですが、そのうちの 1 つしか管理できません。
それが可能かどうかはわかりませんが、おそらく独自のマクロを使用しますが、それを検出してユーザーに選択するように依頼することをお勧めします。
[1]「KCVI」は Knights Corner Vector Instruction Optimizations の略です。FFTW のようなライブラリは、これらの新しい命令の最適化を検出/利用します。
c - AVX-512 での未定義の参照
多くの AVX-512 組み込み関数を含む、Xeon Phi で実行される C コードがあります。
次の行まで、コードは適切にコンパイルされます。
コンパイラは次のエラーを出します。
私の最初の質問は、なぜコンパイラは_mm512_cvttps_epi32
and_mm512_cvtepi32_ps
を_mm512_cvtt_roundps_epi32
andに変換したの_mm512_cvt_roundepi32_ps
ですか?
2 番目の質問は、なぜこれらの組み込み関数が特に未定義なのかということです。上部に次のインクルードがあります。
icc (ICC) 15.0.1 20141023 を使用しています
simd - フロートを「修正する」とはどういう意味ですか?
AVX-512 の命令セットを調べていて、一連のfixup
命令に気付きました。いくつかの例:
ここで言う「片付ける」とは?
intel - インテルが SIMD ISA をより互換性のある、または普遍的な方法で設計しないのはなぜですか?
Intel には、SSE、AVX、AVX2、AVX-512、Xeon Phi 上の IMCI など、いくつかの SIMD ISA があります。これらの ISA は、さまざまなプロセッサでサポートされています。たとえば、AVX-512 BW、AVX-512 DQ、および AVX-512 VL は Skylake でのみサポートされ、Xeon Phi ではサポートされません。AVX-512F、AVX-512 CDI、AVX-512 ERI、および AVX-512 PFI は、Skylake と Xeon Phi の両方でサポートされています。
インテルは、すべての先進プロセッサーで実行できる、より汎用的な SIMD ISA を設計しないのはなぜですか?
また、インテルは、ISA の開発時にいくつかの組み込み関数を削除し、新しい組み込み関数を追加しています。多くの組み込み関数には多くのフレーバーがあります。たとえば、パックされた 8 ビットで動作するものもあれば、パックされた 64 ビットで動作するものもあります。一部のフレーバーは広くサポートされていません。たとえば、Xeon Phi には、パックされた 8 ビット値を処理する機能がありません。ただし、Skylakeにはこれがあります。
Intel がその SIMD 組み込み関数を一貫性のない方法で変更するのはなぜですか?
SIMD ISA 同士の互換性が高ければ、既存の AVX コードをより少ない労力で AVX-512 に移植できます。