問題タブ [offloading]

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 に答える
371 参照

openmp - Intel MIC オフロードによる異種 OpenMP 並列ループ

私は多くの繰り返し (~10^6-10^7) を含むループを含むコードに取り組んでおり、配列 (「myresult」としましょう) が多くの貢献の合計を介して計算されています。OpenMP を使用する Fortran 90 では、次のようになります。

コードはインテル Xeon コプロセッサーを搭載したシステムで実行されますが、もちろん、可能であればその存在から恩恵を受けたいと考えています。OpenMP で MIC オフロード ステートメント (!dir$ offload target ...) を使用して、ループがコプロセッサだけで実行されるようにしましたが、コプロセッサが終了するのを待っている間、ホストの CPU 時間を無駄にしています。理想的には、ホストとデバイスの間でループを分割できるので、次のようなことが実現可能かどうか (またはより良いアプローチがあるかどうか) を知りたいです。ループはホスト上の 1 つのコアでのみ実行されます (ただし、おそらく OMP_NUM_THREADS=2 を使用しますか?):

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

caching - 負荷のピーク時にキャッシュされた (Redis) データの大規模なセット (50K+ キー) を更新する最良の方法は?

環境: 複数の Web (30)、キャッシュ (8) サーバー、および 1 つの専用データベース サーバー。

データベースをオフロードするために、中央の Redis キャッシュとローカル メモリ キャッシュが用意されています。

  • 大規模な共通イベント データがキャッシュされ、スケジュールに基づいて更新されます
  • ユーザー固有のデータは、アクセス時に個別にキャッシュされます

イベントによってユーザー固有のデータ ニーズの大規模なセットがすべて更新されると、問題が発生します。

約 20 万人の登録ユーザーがいて、イベントが発生すると約 10K ~ 20K がサイトに (同時に) 訪れます。ユーザーあたり平均 5 個のキャッシュ キーを使用すると、更新が必要なユーザー固有のデータを含む合計 50K ~ 100K のキャッシュ キーになります。

現在のソリューションは失敗します:

  1. ユーザーキャッシュをフラッシュすると、データベースが過負荷になります (30 Web サーバー)
  2. すべてのデータをキャッシュにロードするのに時間がかかる (10% しか使用されない)
  3. KEYS と SCAN はキャッシュをブロックできます (まだ試していません...これは問題ですか?)

この状況でのベストプラクティスは何ですか?

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

c++ - map, double> used in this offload region is not bitwise copyable

I am using Intel C++ Compiler v14.0.3. This following code troubles me:

Compiler gives this message:

I've read this page. But I could not think of how to transfer this data. What can I do?

Sorry for my poor english. Thank you.

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

gcc - GCC 5.1 と OpenMP を使用して作業を Xeon Phi にオフロードする方法

バックグラウンド

新しいGCC 5.1リリースを使用して、OpenMP ブロックを Intel MIC (つまり、Xeon Phi) にオフロードしようとしましたが、うまくいきませんでした。GCCオフロードページに続いて、"intelmic" およびホスト コンパイラ用の "accel" ターゲット コンパイラをビルドするスクリプトをまとめましbuild.sh。コンパイルは正常に完了したようです。

次に、スクリプトを使用して、以下にリストされている単純なプログラムenv.shをコンパイルしようとします。hello.cただし、このプログラムはホスト上でのみ実行され、ターゲット デバイスでは実行されないようです。

GCC のコンパイルだけでなく、一般的なオフロードにも慣れていないため、間違っている可能性があることが複数あります。ただし、既に言及されているリソースに加えて、次のことを調査しました (リンクを投稿するのに十分な担当者がいません)。

  • Xeon Phi のオフロード
  • Xeon Phi チュートリアル
  • インテル Xeon Phi オフロード プログラミング モデル

最大の問題は、通常 Intel コンパイラを参照していることです。コピーを購入する予定ですが、現在コピーはありません。さらに、開発パイプラインの大部分はすでに GCC と統合されており、(可能であれば) その状態を維持したいと考えています。

最新の MPSS 3.5 ディストリビューションをインストールし、Ubuntu で動作するように必要な変更を加えました。システム内の Xeon Phis のステータスを正常に通信して確認できます。

私たちの努力では、コードがマイク エミュレーション モードで実行されている兆候も見られませんでした。

質問

  1. 実際に Xeon Phi にオフロードするホスト/ターゲット GCC コンパイラの組み合わせを構築した人はいますか? もしそうなら、どのリソースを使用しましたか?
  2. ビルド スクリプトに欠けているものはありますか?
  3. テストソースコードに問題はありますか? それらはエラーなしでコンパイルされ (以下で説明するものを除く)、48 スレッド (つまり、ホスト システムの論理スレッドの数) で実行されます。
  4. Google 検索ではあまり情報が得られないため、次のステップについて提案がある人はいますか (GCC オフロードをあきらめること以外に)。これはバグですか?

ありがとう!

build.sh

env.sh

hello.c (バージョン 1)

このコードを次のようにコンパイルしました。

hello_omp.c (バージョン 2)

ほとんど同じことですが、代わりに

構文。実際、micでは問題が発生しますが、任意のデバイス番号 (つまり 0) を使用すると、ホスト上でコンパイルおよび実行されます。このコードは、同じ方法でコンパイルされました。

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

c++ - インテル Xeon Phi オフロード コード + STL ベクトル

STL ベクトルに格納されたデータをインテル Xeon Phi コプロセッサーにコピーしたいと考えています。私のコードでは、計算に必要なデータを含むベクトルを含むクラスを作成しました。ホストでクラスオブジェクトを作成し、ホストでもデータを初期化してから、このオブジェクトをコプロセッサーに送信したいと考えています。これは、私がやりたいことを示す簡単なコードです。オブジェクトをコプロセッサー・ベクターにコピーした後、空になります。何が問題になる可能性がありますか? どのように正しく行うのですか?