問題タブ [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.
cuda - CUDA3.2の複数のGPUとCuda4.0の問題
複数のGPUを初めて使用します。単一のGPUのコードを作成しましたが、複数のGPUを使用してさらに高速化したいと考えています。私はMSVS2008とcudatoolkit4.0を搭載した2つのGTX470を使用しています
私は2つの問題に直面しています。
最初の問題は、私のコードが4.0ビルドルールでは正常に実行されず、3.2ビルドルールでは正常に動作することです。また、multiGPUのSDKの例はVS2008に基づいて構築されておらず、エラーが発生します
エラーC3861:'cudaDeviceReset':識別子が見つかりません
私の2番目の問題は、3.2で作業する必要がある場合、ドキュメントによると、スレッドを個別に起動し、個別の割り当てを行う必要があることです。複数のGPUのスレッドを起動するための最も簡単なライブラリは何ですか。例を挙げてください。複数のGPUにアクセスするためのセットアップ用。
opengl - WindowsXPでの異種マルチGPU構成によるシームレスなマルチスクリーンOpenGLレンダリング
Windows XP(64ビット)では、OpenGLを使用して、異なるGPUを備えた異なるグラフィックカードに接続された2つの画面(たとえば、異なる世代の2つのNVIDIA)にレンダリングすることは不可能のようです。この場合、レンダリングは1つの画面でのみ機能します。一方、Direct3Dでは問題なく動作し、両方の画面でレンダリングされます。なぜこれなのか誰もが知っていますか?またはもっと重要なこと:OpenGLで両方の画面にレンダリングする方法はありますか?
Windows 7では、異なるブランドのGPU(AMDやIntelなど)を使用しても、両方の画面でレンダリングが機能することを発見しました。これは、私が間違っていなければ、Direct3Dコンポーザー上で実行されるディスプレイモデルが原因である可能性があります。これは単なる推測であり、それが実際の理由であるかどうかは本当にわかりません。
Direct3Dが解決策である場合、1つのアイデアは、OpenGLを使用してすべてのレンダリングをテクスチャに実行し、次にこのテクスチャをDirect3Dを使用してレンダリングすることです。ただし、速度が遅すぎないことを前提としています。
opengl - CUDA OPENGL 相互運用性: cudaGLSetGLDevice
CUDA 4.0 のプログラミング ガイドに従って、他のランタイム呼び出しの前に cudaGLSetGLDevice を呼び出します。しかし、次の cuda 呼び出しである cudaMalloc は、「すべての CUDA 対応デバイスがビジーまたは使用不可です」を返します。
また、NVIDIA フォーラム (http://forums.nvidia.com/index.php?showtopic=186399) で、ユーザーは次のように述べています。 . a) CUDA コンテキストと OpenGL コンテキストが異なるデバイス上にある場合、CUDA/GL 相互運用を行うことはできません (文書化されておらず、私の経験ではサポートされていません) b) Windows 以外のマシンでは GL デバイス アフィニティを行うことはできません.c ) コンシューマー デバイスでは GL デバイス アフィニティを実行できません (Quadro/Tesla のみ)"
これは本当ですか?私の最終的な作業は、Linux マルチ GPU システムで実行する必要があります。使用するグラフィック ライブラリを変更する必要がありますか? そして、この場合、あなたは何を提案しますか?
OS: Opensuse 11.4 64 ビット
グラフィックカード: GeForce 9600M GT
ドライバー: 275.21
cuda - マルチ GPU Cuda 計算
私はマルチ GPU プログラミングの初心者で、マルチ GPU コンピューティングについていくつか質問があります。たとえば、内積の例を見てみましょう。2 つの大きな配列 A[N] と B[N] を作成する CPU スレッドを実行しています。これらの配列のサイズのため、内積の計算を 2 つの GPU に分割する必要があります。どちらも Tesla M2050 (計算能力 2.0) です。問題は、CPU スレッドによって制御される do ループ内でこれらの内積を数回計算する必要があることです。各内積には、前の内積の結果が必要です。2 つの異なる GPU を別々に制御する 2 つの異なるスレッドの作成について読んだことがありますが (cuda の例で説明されているように)、それらの間でデータを同期して交換する方法についての手がかりがありませんでした。別の代替手段はありますか?あらゆる種類のヘルプ/例をいただければ幸いです。よろしくお願いします!
communication - OpenCL サブバッファ、なぜ重要なのですか?
マルチ GPU OpenCL コードを実装しようとしています。私のモデルでは、GPU は通信してデータを交換する必要があります。
サブバッファを処理することが 1 つの解決策であることがわかりました (場所は覚えていませんが、しばらく経ちました)。OpenCLでサブバッファが重要な理由をできるだけ簡単に説明できる人はいますか? 私が理解できる限り、バッファのみを使用してまったく同じことを行うことができます。
どうもありがとう、ジョルゴス
補足質問: GPU 間でデータを交換する最良の方法は何ですか?
cuda - マルチGPUの基本的な使い方
たとえば、次のコード (ベクトルの合計) のパフォーマンスを向上させるために、2 つのデバイスを使用するにはどうすればよいですか? より多くのデバイスを「同時に」使用することはできますか? はいの場合、さまざまなデバイスのグローバル メモリ上のベクトルの割り当てをどのように管理できますか?
前もって感謝します。ミケーレ
cuda - CUDA SDKの例は、マルチGPUシステムでさまざまなエラーをスローします
私はUbuntuPreciseを実行し、2つのTeslaC2075とディスプレイデバイスであるQuadro600を搭載したDellPrecisionRackを持っています。最近、デスクトップコンピューターでいくつかのテストを終了し、ワークステーションに移植しようとしました。
CUDAが存在しなかったので、このガイドに従ってインストールし、この提案に従ってSDKMakefileを適合させました。
私が今直面しているのは、単一のサンプル(10個の異なるサンプルのようにテストした)が実行されていないということです。これらは私が得ているエラーです:
ご覧のとおり、ほとんどのエラーは、エラーコード10を返すcudaGetDeviceCount呼び出しの問題を示しています。マニュアルによると、問題は次のとおりです。
残念ながら、私が見つけた唯一の解決策は、デバイスの電源プラグをチェックすることを提案しました。私はそれをしました、そしてそれは何も悪いことではありませんでした。ワークステーションを再起動しても役に立ちません。
構成の詳細をお知らせします。コメントを残してください!
cuda - CUDA simpleP2P の失敗
24 個の GPU を搭載した Tesla M2070 クラスターがあります。simpleP2P SDK の例を実行しようとしましたが、デバイスが UVA をサポートしているにもかかわらず、次のエラーが表示されます。OS; Linux 64 ビット。
Checking for multiple GPUs...
CUDA-capable device count: 3
GPU0 = "Tesla M2070" はピアツーピア (P2P) に対応しています
GPU1 = 「Tesla M2070」はピアツーピア (P2P) に対応しています GPU2 = 「Tesla M2070」はピアツーピア (P2P) に対応しています
Checking GPU(s) for support of peer to peer memory access...
Tesla M2070 (GPU0) -> Tesla M2070 (GPU1) からのピア アクセス: いいえ
Tesla M2070 (GPU1) -> Tesla M2070 (GPU0) からのピア アクセス: いいえ
Two or more SM 2.0 class GPUs are required for ./simpleP2P to run.
Support for UVA requires a GPU with SM 2.0 capabilities.
Peer to Peer access is not available between GPU0 <-> GPU1, waiving test.
PASSED
最後に PASSED と表示されていますが、ある GPU から別のフラグへのピア アクセスは値が表示されていません。
mpi - MPI受信/動的ベクトル長の収集
構造体のベクトルを格納するアプリケーションがあります。これらの構造体は、メモリやギガフロップスなどのシステム上の各GPUに関する情報を保持します。システムごとに異なる数のGPUがあります。
一度に複数のマシンで実行されるプログラムがあり、このデータを収集する必要があります。私はMPIに非常に慣れていませんが、ほとんどの部分を使用できますが、これらの動的なサイズのベクトルを収集/受信MPI_Gather()
する方法を知りたいです。
クラスタ内の各マシンは、のインスタンスにデータを入力しますMachineData
。これらのインスタンスをそれぞれ収集したいのですが、収集の方法がわかりませんnviVec
。またamdVec
、マシンごとに長さが異なるためです。