問題タブ [multi-gpu]

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

opencl - clGetEventProfilingInfo() タイムスタンプは同期されていますか?

マルチ GPU 環境でコードをプロファイリングしようとしていますclGetEventProfilingInfo()が、異なる GPU からのタイムスタンプを関連付けることができないようです。単純なコード サンプルは、2 つの GPU を使用すると 1 つを使用する場合よりも 2 倍高速ですが、タイム スタンプは、1 つの GPU が他の GPU が開始する前にほとんどの作業を実行したことを示しています。

[仕様] http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetEventProfilingInfo.html )は、そのようなタイムスタンプは「ナノ秒単位の現在のデバイス時間カウンター [...]" .

これらを同期する必要はないと想定する必要がありますか?


ご参考までに:

  • NVIDIA ドライバー バージョン 295.40、Linux カーネル 2.6.35 で 2 つの NVIDIA GTX 580 を使用しています。
  • すでにクロノス フォーラムでこの質問をしましたが、まだ返信がありません。
0 投票する
1 に答える
740 参照

cuda - CUDAマルチGPU:同じカーネルの実行(デュアルチップデバイス)

GTX690(デュアルチップ)ボードで同じカーネルを実行する必要があるコードを書いています。計算はかなり分離可能であるため、デバイス間のデータ交換は必要ありません。結果をCPUにマージするだけです。各デバイスでコードを実行する方法と、各デバイスのメモリスペースにI/Oデータスペースを提供する方法を理解しています。

両方のデバイスで実行されているカーネルが使用する定数を設定しようとすると、問題が発生します。デバイスごとにアレイを作成する必要がありますか?もしそうなら、カーネル内でどのデバイスが実行されているかを確認して、配列から適切な定数にアクセスできるようにするにはどうすればよいですか?

これが私が使っているコードです。(設定により)1つのチップのみを使用する場合は正しく機能しますnumDev = 1が、両方では機能しません。

カーネルでは、d_cellSizeZ定数を使用します。では、同じカーネルから各デバイスを適切に使用するために、どのように定数を作成する必要がありますか?

もう1つの質問は、デバイス間でデータを交換しようとすると、PCIバスを通過するのでしょうか、それともデュアルチップボードに内部パスが存在するのでしょうか。

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

cuda - Cudaドライバーの初期化に失敗しました

私は2つのGPUシステム、Geforce8400GSとGeforceGT520を持っています。両方のGPUでcudaプログラムを実行できます。Cuda driver initialization failed.しかし、cuda-gdbを使用してデバッグすると、「また、でプログラムを実行するとcuda-gdb、 GPUが1つしかない」というエラーが表示されますcudaGetDeviceCount。を使用していない場合は、どちらのGPUでもプログラムを実行できますcuda-gdb。誰かがこれを手伝ってくれますか?

Ubuntu11.04を実行しています。

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

java - APU+GPU の OpenCL

私はこのシステムを組み立てることを考えています:

  • AMD CPU (Radeon HD 6550D を内蔵した A8-3870 APU: 400 ストリーム プロセッサ:xxx GFLOPS) 約 110$
  • AMD グラフィックス カード: HD 7750 (512 ストリーム プロセッサ: 819 GFLOPS ピーク パフォーマンス) 約 170 ドル
  • 適切な RAM (1600MHz バス) とメインボード

OpenCL や同様のプログラムを使用して、公式サイトで言及されている 819+xxx GFLOPS のピーク パフォーマンスを達成できますか?

OpenCL/Jocl ですべての 912 コアを使用できますか?ポットに CPU コアを追加することは重要ですか?

C++ と Java のどちらが、コンピュータ上に存在する複数の GPU または APU を使用するための最も成果の高いライブラリを持っていますか?

apu と gpu の両方をキャンセルして 1 つの Nvidia GTX-660 を購入するとどうなりますか? これで勝てる?

私はVSの質問をしようとしていません。予算が少ないので、科学計算 (時間の 75%) とゲーム (時間の 25%) には何が良いかを知る必要があります。「科学計算」とは、流体力学+固体物理学のシミュレーションを意味します。ゲームとは、openCL と PhysX があることを意味します。

複数の GPU を使用した OpenCL コードの非常に最小限の単純な例を挙げていただけますか?

ありがとうございました。

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

gpu - 複数の GPU の場合、すべてのモニターに実際にレンダリングするのはどれですか?

マルチ GPU/マルチモニター設定でのレンダリングがどのように機能するかについて、誰かが説明したり、説明 (または少なくともいくつかの手がかり) を指摘したりできますか?

たとえば、NVIDIA Quadro 4000 ビデオ カードを 5 枚インストールし、それらに 9 台のディスプレイを接続しました。表示はまったくグループ化されていません。合計解像度が 4098x2304 であることを Windows 7 で調整しました。カードはSLIにも接続されていません。

4096x2304 のウィンドウを 1 つの Stage3d コンテキスト (dx9 を使用) として認識し、ビデオ カードが 1 つしかない巨大なディスプレイであるかのように、この非常に珍しい設定で動作する Flash アプリを入手しました。

レンダリングは内部でどのように機能しますか? ビデオカードは実際に何をしていますか?彼らはリソースを共有していますか? 誰がすべてのものをレンダリングしますか? アプリでほとんど何もしないのに 29.9 fps になるのはなぜですか?

ありがとうございました。

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

cuda - 単一のストリームでピアリングされたGPUを使用する

現在のプロジェクトでは、信号処理と視覚化にGPUを使用しています。私はすでにストリームを使用して非同期操作を可能にしています。信号はフレームで処理され、各フレームのストリームの処理ステップは次のとおりです。

  1. memcpyからデバイスへ
  2. シグナルコンディショニング
  3. 画像処理
  4. 視覚化

現在、手順は単一のGPUで行われていますが、私のマシンにはマルチGPUカード(GeForce GTX 690)が搭載されており、2つのデバイス間で操作を分散したいと思います。基本的に、操作1、2、3、および4を単一の非同期ストリームとして実行しながら、デバイスAでステップ1と2を実行し、デバイスBでステップ3と4を実行したいと思います。望ましい結果は、次のようなストリーミングレイアウトです。

これどうやってするの?

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

windows - セカンダリ GPU を使用して Windows で CUDA カーネルの実行時間制限をオーバーライドするにはどうすればよいですか?

Nvidia の Web サイトから、タイムアウトの問題について説明しています。

Q: カーネルの最大実行時間は? Windows では、個々の GPU プログラムの起動の最大実行時間は約 5 秒です。この時間制限を超えると、通常、CUDA ドライバーまたは CUDA ランタイムを介して報告される起動エラーが発生しますが、場合によってはマシン全体がハングし、ハード リセットが必要になることがあります。これは、Windows の「ウォッチドッグ」タイマーが原因で、プライマリ グラフィックス アダプタを使用するプログラムが最大許容時間を超えて実行された場合にタイムアウトになります。

このため、CUDA は、ディスプレイに接続されておらず、Windows デスクトップが拡張されていない GPU で実行することをお勧めします。この場合、システムには、プライマリ グラフィックス アダプターとして機能する NVIDIA GPU が少なくとも 1 つ含まれている必要があります。

ソース: https://developer.nvidia.com/cuda-faq

nvidia は、複数の (nvidia) gpu を使用し、適切な構成を行うことで、これを防ぐことができると考えているか、少なくとも強く示唆しているようです。

しかし、どのように?これまでに多くの方法を試しましたが、GK110 GPU にはまだ面倒なタイムアウトがあります。(1) セカンダリ PCIE 16X スロットを接続する。(2) どのモニターにも接続されていません (3) ドライバー コントロール パネルで専用の physX カードとして使用するように設定されています (他の人が推奨するように) が、ブロックアウトはまだ存在します。

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

cuda - マザーボードがMultiple-GPUをサポートしているかどうかを確認する方法は?

複数のGPUを統合して使用する研究プロジェクトに取り組んでいます。最初に複数のGPUを搭載したデスクトップをセットアップすることを考えています。

私は現在、IntelI5-570CPUとNvidiaGTS250GPUを搭載したMSIP55CD53マザーボードを持っています。既存のデスクトップに追加するために、少なくとももう2枚のNvidiaグラフィックカードを購入したいと思います。

実行可能かどうか、どのグラフィックカードを購入すればよいかを知るために検索できるリソースはありますか?

どうもありがとう。

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

memory - cudaMemGetInfo は、GTX 690 の両方のデバイスで同じ量の空きメモリを返します

メモリ使用量を追跡しようとしているときに、Geforce GTX 690 で問題が発生しました。簡単なテスト プログラム:

テストは次のように出力します。

問題は、割り当て後、デバイス 1 の空きメモリの量がデバイス 0 とまったく同じになることです。これは当てはまりません。したがって、問題は cudaMemGetInfo および/または cudaSetDevice にある必要があります。誰かが同じ問題に取り組んでいますか、それとも誰かが指摘できる根本的な問題がテストに他にありますか?

Windows 7、Visual Studio 2010、Cuda SDK 5.0 でコードを実行し、コード生成でコンパイル: compute_30,sm_30

編集 22.4.2013

この問題の実験を続けましたが、cudaGetDevice 呼び出しの結果から確認できるように、cudaSetDevice は正常に動作しているようです。メモリ割り当てテストの後にデバイス 0 のリセットを追加しましたが、cudaMemGetInfo によって返される空きメモリのサイズが両方のデバイスで再び同じになっているようです。自分のコードで cuda_error_t のすべての戻り値をチェックしたところ、すべての関数呼び出しが cudaSuccess を返しました。上記のセットアップで GTX 690 で同様の問題に遭遇した人はいますか?

最新のテスト コード:

テスト出力:

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

cuda - OptiX の複数の GPU (非同期起動は可能ですか?)

修士論文にいくつかの課題があります。あなたが私を助けてくれるか、正しい方向に向けてくれることを願っています。

OptiX を使用して、Knaus と Zwicker ( http://www.cs.jhu.edu/~misha/ReadingSeminar/Papers/Knaus11.pdf ) による新しいアプローチを使用してプログレッシブ フォトン マッピングを実装しています。このアプローチにより、PPM の各反復/フレームが独立し、マルチ GPU により適したものになります。

私が (単一の GPU で) 行うことは、OptiX を使用して多数のフォトンをトレースし、それらをバッファーに格納することです。次に、光子は CUDA と推力を使用して空間ハッシュ マップに並べ替えられ、GPU を離れることはありません。レンダラーのボトルネックであるため、GPU で空間ハッシュ マップの作成を行いたいと考えています。最後に、このバッファは間接放射輝度推定中に使用されます。つまり、これは、レイ トレーシング、フォトン トレーシング、フォトン マップの生成、および最終的に画像を作成するという複数のパス アルゴリズムです。

OptiX が複数の GPU をサポートできることは理解しています。各コンテキストの起動は GPU 間で分割されます。バッファへの書き込みはシリアル化され、各デバイスにブロードキャストされるように見えるため、バッファの内容は同じです。

私がやりたいのは、1 つの GPU で 1 つのフレームを処理し、2 番目の GPU で次のフレームを処理することです。次に、たとえば CPU または GPU のいずれかで、結合パスで結果を結合できます。各デバイスで各パスを並行して実行できる場合も許容されます (各パス間で同期)。これはどういうわけか可能ですか?

たとえば、2 つの異なるホスト スレッド上の各デバイスにマッピングする 2 つの OptiX コンテキストを作成できますか。これにより、光子が 1 つのデバイス上にあると仮定して、前と同じように CUDA/thrust 空間ハッシュ マップを生成し、パイプラインの最後で生成された 2 つの画像をマージできます。ただし、プログラミング ガイドには、マルチスレッド コンテキスト処理はサポートされていないと記載されています。複数のプロセスを使用することもできますが、プロセス間通信に多くの混乱があります。このアプローチでは、シーン ジオメトリの作成、PTX ファイルのコンパイルなどの作業も重複して行う必要があります。

ありがとう!