問題タブ [amd-app]
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.
c++ - AMD GPU での OpenCL 時間測定の問題
最近、2 種類のカーネル ランタイム測定を比較しましたが、紛らわしい結果がいくつか見られます。
GPU と Ubuntu Linux が統合された AMD Bobcat CPU (E-350) を使用しています (CL_PLATFORM_VERSION
はOpenCL 1.2 AMD-APP (923.1)
)。
基本的な gettimeofday のアイデアは次のようになります。
これは、カーネルが約 5466 ミリ秒を必要とすることを示しています。
/ / /clGetEventProfilingInfo
で行った2回目の測定。QUEUED
SUBMIT
START
END
4 つの時間値を使用して、さまざまな状態で費やした時間を計算できます。
- キューに入れられた時間: 0.06 ミリ秒、
- 送信に費やした時間: 2733 ミリ秒、
- 実行に費やした時間: 2731 ミリ秒 (実際の実行時間)。
合計すると 5466 ミリ秒になることがわかりますが、半分の時間送信済み状態のままなのはなぜですか?
そして、面白いことは次のとおりです。
サブミットされた状態は、異なるカーネルまたは異なるワークロードであっても、常に実際の実行時間の半分です (したがって、一定のセットアップ時間にはなりません)。
CPU の場合、送信された状態で費やされた時間は 0 であり、実行時間は gettimeofday の結果と同じです。
CPU と GPU を使用する Windows を搭載した Intel Ivy Bridge でカーネルをテストしましたが、その影響は見られませんでした。
誰も手がかりを持っていますか?
GPU がカーネルを 2 回実行する (gettimeofday が実際の実行時間の 2 倍になる) か、関数 clGetEventProfilingInfo が AMD GPU に対して正しく機能していない可能性があります。
opencl - AMD GPU 上の OpenCL 2.0
AMD Fury X で OpenCL 2.0 を初期化しようとしています__OPENCL_VERSION__
。どう見ても120です。私は自分のドライバーと両方の内部を見てい#define __OPENCL_VERSION__ 120
ます#define __OPENCL_VERSION__ 200
が、そこに見つけることができます。
バージョン 2.0 を有効にするには、どこかに特別なフラグが必要ですか? 次のプラットフォームとデバイスがあります。
Advanced Micro Devices, Inc. による OpenCL プラットフォーム 'AMD Accelerated Parallel Processing'、バージョン OpenCL 2.0 AMD-APP (1912.5)、FULL_PROFILE
デバイス: Advanced Micro Devices, Inc. 'Fiji' (ドライバー バージョン: 1912.5 (VM))
OpenCL バージョン: OpenCL 2.0 AMD-APP (1912.5)
OpenCL「C」バージョン: OpenCL C 2.0
編集
ああ、ばか。-cl-std=CL2.0
のコンパイラオプションで指定すると役立つようclCreateProgramWithSource
です。それは期待される動作であるはずですか?
opencl - AMD APP SDK (OpenCL) が AMD CPU を検出しない
OpenSUSE Leap x86_64 を搭載した PC に AMD FX-8350 CPU と NVIDIA GeForce GTX 960 GPU を搭載しています。CUDA と OpenCL を使用したいので、最初に Cuda Toolkit 7.5 をインストールしました。それはうまくいきました。
次に、AMD CPU で OpenCL を動かしたいので、AMD APP SDK 3.0 をインストールしました。それはうまくいったようです。$AMDAPPSDKROOT
エコー/opt/AMDAPPSDK-3.0
と$LD_LIBRARY_PATH
エコー/opt/AMDAPPSDK-3.0/lib/x86_64/
。
その後、次のコマンドを使用して、基本的な deviceQuery コード (基本的にはこれですが、プラットフォーム名を表示するように変更されています)をコンパイルして実行しました。
コードはコンパイルおよび実行されますが、出力には NVIDIA GPU 情報のみが表示されます。
解決策が見つからないようです。問題は何でしょうか?