問題タブ [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 に答える
852 参照

fft - Intel Xeon Phi での MKL 3D 倍精度複素数 FFT

Intel MIC プラットフォームでネイティブに実行する 3 次元 FFT (MKL インターフェイス) の C コードを開発しました。

複素数から複素数への変換では、データ要素は倍精度複素数です。私はパディングされた主要な次元、mkl_malloc() 64 バイト アラインメントを使用し、配列に基数 2 の次元を使用しています。最終的に得られるパフォーマンスは約 50 Gflop/s です。

同様のタイプの変換のパフォーマンス リストはどこにもありません。Xeon Phiでこれが(満足できる)合理的かどうか誰か教えてもらえますか?

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

intel - インテル Xeon Phi コプロセッサーが存在するかどうかを知る方法

インテル Xeon Phi コプロセッサーでプログラムを実行したいと考えています。自分のマシンに Intel Xeon Phi コプロセッサーが搭載されているかどうかを確認するにはどうすればよいですか?

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

intel - インテル Xeon Phi でのクロック サイクルあたりの乗算回数

インテル Xeon Phi では、コアごとに 32 個の 512 ビット幅のベクトル レジスタがあります。各ベクトル レジスタは、1 サイクルあたり 16 の単精度浮動小数点演算を実行できます。また、1 サイクルで 2 つの操作を実行できます (V パイプで 1 回、U パイプで 1 回)。

ベクトル レジスタで実行されるベクトル乗算とは別に、1 クロック サイクルで実行できるスカラー乗算の数を知りたいです。

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

c - Intel Phi での MKL パフォーマンス

モデルに適合するために小さな行列 (50 ~ 100 x 1000 要素) に対していくつかの MKL 呼び出しを実行するルーチンがあり、それをさまざまなモデルに対して呼び出します。擬似コード:

上記のバージョン 1 を呼び出します。モデルは独立しているため、次のように OpenMP スレッドを使用してモデル フィッティングを並列化できます (バージョン 2)。

ホスト マシンでバージョン 1 を実行すると、約 11 秒かかり、VTune はほとんどの時間をアイドル状態に費やして並列化が不十分であると報告します。ホスト マシンでのバージョン 2 の実行には約 5 秒かかり、VTune は優れた並列化を報告します (ほぼ 100% の時間が 8 つの CPU の使用に費やされます)。ここで、Phi カードでネイティブ モード (-mmic を使用) で実行するコードをコンパイルすると、mic0 のコマンド プロンプトで実行すると、バージョン 1 と 2 の両方で約 30 秒かかります。VTune を使用してプロファイリングすると、次のようになります。

  • バージョン 1 には同じ約 30 秒かかり、ホットスポット分析では、ほとんどの時間が __kmp_wait_sleep と __kmp_static_yield に費やされていることが示されています。7710 秒の CPU 時間のうち、5804 秒がスピン時間に費やされます。
  • バージョン 2 は fooooorrrreevvvver かかります... VTune で数分実行した後、それを強制終了します。ホットスポット分析は、25254 秒の CPU 時間のうち、21585 秒が [vmlinux] で費やされていることを示しています。

ここで何が起こっているのか、なぜこんなにパフォーマンスが悪いのか、誰かが光を当てることができますか? OMP_NUM_THREADS のデフォルトを使用し、KMP_AFFINITY=compact,granularity=fine を設定しています (Intel の推奨に従って)。私は MKL と OpenMP を初めて使用するので、初歩的な間違いを犯していると確信しています。

ありがとう、アンドリュー

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

openmp - Intel MIC との間のメモリ転送オーバーヘッド

奇妙な動作が見られます。Intel Xeon Phi に関連するものかどうかを知りたいです。

基本的に誰もが知っている行列乗算 (3 つのネストされた for ループ) の小さなコード例があります。targetOpenMP 4.0プラグマを使用して Intel MIC に計算をオフロードし、3 つの行列をmap(to:A,B) map(tofrom:C).

現在、私が観察しているのは、1024x1024 などの小さな行列の場合、メモリ転送に非常に長い時間がかかることです。ネイティブ バージョン (同じコード、同じ並列化戦略、オフロードなし) と比較して、オフロード バージョンは約 320 ミリ秒多くの時間を消費します。初期化のオーバーヘッドを取り除くために、コードのウォームアップを実行しました。

この 320 ミリ秒に気付かずに同じ量のメモリがコピーされる Nvidia Tesla K20 と比較すると、非常に悪いです。

メモリ転送速度を改善できる環境設定はありますか?

追加の質問: OFFLOAD_REPORT 環境変数を介してオフロード レポートを有効にしました。レポートに表示される 2 つのタイミング結果の違いは何ですか。

MIC Time で欠けている 10 秒は何ですか (メモリー転送?)

さて、3つ目の質問です。Intel MIC で固定メモリを使用することは可能ですか? はいの場合、どのように?

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

x86 - マスクされたベクトル Intel AVX-512 命令のアセンブリ構文

テストの目的で、Icc インライン アセンブラを使用して Intel の Xeon Phi 用の短いアセンブリ スニペットを作成しています。マスクされたベクトル命令を使用したかったのですが、インライン アセンブラに渡すことができませんでした。

次のようなコードの場合:

エラーメッセージが表示されます

さまざまな組み合わせを試しましたが、うまくいきませんでした。コンパイラのバージョンは、Linux では intel64/13.1up03 で、GAS 構文を使用します。

編集: 上記のコードは、実際には非拡張アセンブラで動作します。したがって、この:

動作しますが、以下は動作しません:

拡張モードで名前を登録する前に、二重の % を使用する必要があることと関係があると思います。しかし、いいえ、k の単一の % も機能しません。

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

icc - 特定のモデルの xeon phi を取得する

使用している Xeon Phi コプロセッサの正確なモデルを見つけようとしています。私はmicpinfoを実行し、これが私が得たものです