問題タブ [amd-processor]
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 に対して正しく機能していない可能性があります。
cuda - 複数のプロセスからの GPU カーネルの同時実行
複数のプロセス間で単一の GPU を共有したいアプリケーションがあります。つまり、これらの各プロセスは、同じ GPU を対象とする独自の CUDA または OpenCL コンテキストを作成します。Fermi のホワイト ペーパー [1] によると、アプリケーション レベルのコンテキスト切り替えは 25 マイクロ秒未満ですが、起動は GPU での起動時に効果的にシリアル化されるため、Fermi はこれにはうまく機能しません。Kepler のホワイト ペーパー [2] によると、複数の CUDA ストリーム、MPI プロセス、またはプロセス内のスレッドから最大 32 の同時接続を可能にする Hyper-Q と呼ばれるものがあります。
私の質問: 誰かがこれを Kepler GPU で試し、そのカーネルが個別のプロセスからスケジュールされたときに同時に実行されることを確認しましたか? これは単なる CUDA 機能ですか、それとも Nvidia GPU の OpenCL でも使用できますか? AMD の GPU は同様のものをサポートしていますか?
[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf
opencl - OpenCLデータ転送とDMA
AMD APPプログラミングガイドには、次のように書かれています(p.no 4-15):
転送の場合<=32kB:ホストからデバイスへの転送の場合、データはCPUによってランタイムに固定されたホストメモリバッファにコピーされ、DMAエンジンはデータをデバイスメモリに転送します。デバイスからホストへの転送では、逆のことが行われます。
上記のDMA、CPU DMAエンジン、またはGPU DMAエンジンですか?
java - JavaでAMDCPUキャッシュヒット率を収集する方法は?
私はJavaでプログラムを書いています
このプログラムでは、データの配列を読み取って変更しています。これはコードの例です:
ところで、INDEX配列には、プリフェッチを防ぐためにランダムな順序でDATA配列のインデックスが含まれています。INDEX配列でランダムインデックスを使用して、すべてのキャッシュアクセスを強制的に見逃しています。
次に、ヒット率に関する情報を収集して、CPUキャッシュの動作を確認します。
この目的のために開発されたツールはありますか?そうでない場合、何かテクニックはありますか?
compilation - カードがインストールされていない AMD および NVIDIA OpenCL カーネルのオフライン コンパイル
グラフィックス カードをインストールせずに OpenCL カーネルのオフライン コンパイルを実行する方法を見つけようとしていました。SDKをインストールしました。
NVIDIAまたはAMDの両方にグラフィックスカードをインストールせずに、OpenCLカーネルをコンパイルした経験がある人はいますか?
ありがとう
windows-7 - OpenCL、AMD Radeon、Windows7上のVisualStudio 2010-開始するには?
私はOpenCLの完全な初心者であり、ビデオカード(AMD Radeon 6970)で実行されるプログラムのコーディング方法を学び始めたいと思っていました。AMDのアプリSDKをインストールしましたが、これを開始する必要がありますか?
含まれているサンプルソリューションを作成してみましたが、次のようになりました。
エラーC1083:インクルードファイルを開くことができません:'d3dx10.h':そのようなファイルまたはディレクトリはありませんc:\ users \ ... \ simpledx10 \ SimpleDX10.hpp
DX11をインストールしているからだと思います。最初は自分で簡単なプログラムを作成するだけだと思いましたが、Stack Overflowとgoogleを検索した後、それを機能させるために必要なものがすべてわかりませんでした。
完全な初心者がAMDビデオカードを使用してWindowsでOpenCLを動作させるための便利なガイドはありますか?
gcc - マルチコア AMD では並列コードが遅い
gcc を使用して intel (linux) でコンパイルされた並列化されたコード (openmp) は、2 倍のコアを持つ AMD よりも Intel コンピューターではるかに高速に実行されます。すべてのコアが使用されていることがわかりますが、AMD では約 10 倍の CPU 時間がかかります。intel コンパイラの「cripple AMD」について聞いたことがありますが、gcc を使用しています。前もって感謝します
python-2.7 - Geany Windows764ビットでのPython2.7へのNumPyのインポート
AMDプロセッサで実行されている64ビットのWindows7を使用しています。
python-2.7.3.amd64をインストールしました。
NumPyの適切な(非公式の)バイナリをインストールしました。
numpyをインポートし、Pythonコマンドラインからその関数を呼び出し始めると、すべてが正常に機能します。
ただし、Geanyエディターで同じことを行うと、エラーメッセージが表示され、Pythonはnumpyという名前のモジュールを実行しなくなりました。
ImportError:numpyという名前のモジュールがありません
pythonとnumpyの両方を2回再インストールしましたが、何も変更されていません。
Geanyには、UN-Officialバージョンのnumpyまたは64ビットのWindowsの性質、あるいはその両方との非互換性があるという事実から、問題が発生する可能性があるのではないでしょうか。
たぶん私はそれにnumpyを導入するためにGeanyでいくつかのさらなる構成をしなければなりませんか?このジレンマを解決するための提案をいただければ幸いです。
c - AMD xop チェックのサポート
次の問題があります。
いくつかの命令を使用して、xop チェックに関連するいくつかのテストがありBulldozer (xop)
ます。
そして、このテストはBulldozer
プロセッサ上でのみ実行する必要があります。プロセッサがコンパイル時に命令を
サポートしていることを確認するにはどうすればよいですか?xop
言語: C
、OS: Linux
;
gcc - AMD Opteron 4280のGCC最適化オプション:ベンチマーク
2 *XeonX5650を搭載したローカル計算サーバーから2*Opteron 4280を搭載した別のローカル計算サーバーに移行しています...今日、新しいマシン(AMD 1)ですばらしいCプログラムを起動しようとしましたが、パフォーマンス>50%、すべての可能なパラメーターを同じに保ちます(乱数ジェネレーターのシードでも)。私はこの問題を掘り下げ始めました。「amdopteron4200コンパイラオプション」をグーグルで検索すると、GCC 4.6.3コンパイラで使用できる「フラグ」(オプション)という2つの提案がありました。私はこれらの旗で遊んで、ここの下のプロットで私の発見を要約しました...
写真のアップロードは許可されていないので、チャートはこちらhttps://plus.google.com/117744944962358260676/posts/EY6djhKK9ab
誰か(コーディングの人)がこのテーマについてコメントをくれるかどうか疑問に思っています。特に、「... -march =bdver1-fprefetch-loop-arrays」と「...-fprefetch」という事実に興味があります。 -loop-arrays -march = bdver1 "は別のランタイムで生成されますか?また、「-funroll-all-loops」がすでに「-O3」または「-Ofast」に含まれているかどうかもわかりません。このフラグをもう一度追加しても、まったく違いが生じるのはなぜですか。Intelプロセッサにフラグを追加すると、パフォーマンスがさらに低下するのはなぜですか( "-ffast-math"のみを除きます。これは明らかです。これは、私が理解しているように、定義上、浮動小数点演算の精度が低く、高速であるためです。 )?
マシンと私のプログラムについてもう少し詳しく説明します。2*XeonX5650マシンはgcc4.4.3を搭載したUbuntuサーバーで、2(マザーボード上のCPU)X6(それぞれの実際のコア)* 2(ハイパースレッディング)=24スレッドマシンです。 、そして私の「実験」またはベンチマーク中に何かが実行されていました...
2 * Opteron4280マシンはgcc4.6.3を搭載したUbuntuサーバーであり、2(マザーボード上のCPU)X4(各あたりの実際のコア=ブルドーザーモジュール)* 2(AMDブルドーザースレッド=コアの種類)=18スレッドマシン、そして私はそれを私の素晴らしい「ベンチマーク」のためだけに使用していました...
私のベンチマークプログラムは単なるモンテカルロシミュレーションであり、最初はIOを実行し、その後、〜10^5のモートカルロループを実行して結果を取得します。したがって、整数と浮動小数点の両方の計算プログラムであると想定し、時々ループして、ランダムに生成された「結果」が私にとって十分に「良い」かどうかを確認します...プログラムはシングルスレッドであり、私はランダムジェネレータシードを含むすべてのベンチマーク(明らかですが、とにかく言及する必要があります)に対してまったく同じパラメータで起動していました(したがって、結果は100%同一でした)...プログラムはメモリインテンシブではありません。結果として得られるランタイムは、標準の「/ usr / bin/time」コマンドによる単なる「ユーザー」時間です。