問題タブ [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 投票する
3 に答える
7893 参照

c++ - OpenMP で利用可能な GPU を使用するにはどうすればよいですか?

OpenMP を使用して GPU で実行するコードを取得しようとしていますが、うまくいきません。私のコードでは、forループを使用して行列乗算を実行しています。1 回は OpenMP プラグマ タグを使用し、もう 1 回は使用しません。(これは、実行時間を比較できるようにするためです。) 最初のループの後で呼び出しますomp_get_num_devices()(これは、実際に GPU に接続しているかどうかを確認するための主なテストです。) 何を試しても、omp_get_num_devices()常に 0 を返します。

私が使用しているコンピューターには、2 つのNVIDIA Tesla K40M GPUが搭載されています。CUDA 7.0 と CUDA 7.5 はコンピューターでモジュールとして利用でき、CUDA 7.5 モジュールは通常アクティブです。gcc 4.9.3、5.1.0、および 7.1.0 はすべてモジュールとして利用でき、通常は gcc 7.1.0 モジュールがアクティブです。でコードをコンパイルしています$ g++ -fopenmp -omptargets=nvptx64sm_35-nvidia-linux ParallelExperimenting.cpp -o ParallelExperimenting。CPU を使用して OpenMP コードを正常に並列化しましたが、GPU では並列化できませんでした。

ここでの主な目標はomp_get_num_devices()、OpenMP で GPU を検出して使用できることの証明として 2 を返すことです。ここで私が受け取った助けは大歓迎です。

GPUが正しく使用されているかどうかを確認するために使用しているコードは次のとおりです。

これは、deviceQuery サンプル CUDA コードを実行した結果です。