問題タブ [intel-mic]

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 投票する
1 に答える
1566 参照

x86 - 競合検出命令を使用すると、ループのベクトル化がどのように簡単になりますか?

AVX512CD 命令ファミリは、VPCONFLICT、VPLZCNT、および VPBROADCASTM です。

これらの指示に関するウィキペディアのセクションには、次のように記載されています。

AVX-512 競合検出 (AVX-512CD) の命令は、通常は安全にベクトル化できないループ内の要素の競合のないサブセットを効率的に計算できるように設計されています。

これらの命令がループのベクトル化に役立つことを示す例は何ですか? 回答にスカラー ループとそれに対応するベクトル化されたループが含まれていると助かります。

ありがとう!

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

simd - Xeon Phi: 完全なメモリ結合を実現し、SMID ユニットを完全に活用することは不可能ですか?

キューブ (3D イメージ、正確にはスペクトル キューブ) を処理する GPU/CUDA コードがあります。立方体を一連の画像/スライス、または別の方法として、異なる空間位置 (正方形上) を持つスペクトルの束と考えてください。画像の各ピクセルは、異なる x 値、y 値、および同じ z 値を持ちます。スペクトル上の各ピクセルの x、y は同じですが、z は異なります。キューブのメモリは、2 つの連続するメモリ アドレスが x と x+1 に対応するように配置されます。

私の CUDA コードでは、各 CUDA スレッドが異なるスペクトルを処理するように構成しました。このようにして、グローバルメモリの合体​​を実現できます。次に、このコードを Intel Phi (#pragma offload+OpenMP) に移植しました。GPU の場合と同様に、各 Phi コアで異なるスペクトルを処理します。その結果、ここでもメモリの合体​​が達成されます。ただし、出来は悪いです。

  • 問題は、グローバル メモリと合体したものの、各スペクトルのピクセルが連続したメモリ アドレスにないため、Phi のベクトル化によってパフォーマンスが向上しないことだと思います。(各コアは、関連するスペクトル全体で何らかの削減を行うことに注意してください。より正確には、1 次、2 次、および 3 次モーメントを計算します)。この考えは理にかなっていますか?
  • SIMD からパフォーマンスを得るために私が間違っていなければ、メモリアドレスは連続している必要がありますよね?
  • そのため、Xeon phi では、グローバル メモリを結合する完全なメモリを実現し、同時に SIMD を最大限に活用することは不可能のようです。これは理にかなっていますか、それとも私は完全に間違っていますか?

PS: Intel Xeon Phi 7120 を使用しています。

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

c - ICC コンパイラ - エラー: 並列ループ条件はループ制御変数をテストしません

Intel MIC (Xeon Phi) カードでオフロード呼び出しを行った後、C/OpenMP コードの「for ループ」を並列化しようとしています。「#pragma omp parallel for」を使用していますが、整数変数を「ループ制御変数」として使用するとコンパイルがうまくいきます。私のコードでは、フロート配列を「ループ制御変数」として使用していますが、「並列ループ条件はループ制御変数をテストしません」というエラーが表示されます。

エラーのないコード:

エラーのあるコード:

OpenMP を使用して並列化を成功させるために、その float 配列表記を「for ループ」に保持する方法はありますか?