2012-04-06 17 views
1

NVidiaではGPUモードで、ATIまたはIntelではCPU(ソフトウェア)モードでソフトウェアを実行したいと考えています。どうすればこれを達成できますか?CUDAアプリケーションをソフトウェアモードでATIまたはIntelカードで実行するにはどうすればよいですか?

PhysXのように動作します。

現在、ATIカードマシンでnvcuda.dllが見つからないというエラーが表示されます。

OpenCLに助言しないでください。 This質問は私のものに似ています。しかし、OpenCLの答えは私にとっては受け入れられません。

私はWindows 7の+のVisual Studioによ
+1

CUDAには「ソフトウェアモード」はありません。 CUDAランタイムによって検出された使用可能なGPUがない場合は、独自のCPUコードパスを提供して使用する必要があります。 – talonmies

+0

@talonmiesは技術的には正解ですが、そこには素晴らしいものがいくつかあります:http://code.google.com/p/gpuocelot/ –

+0

@scottM:私はオセロットについてよく知っていますが、ここでは役に立たないです。オシロスコープはCUDAランタイムの再実装に依存しています。同じアプリケーションでCUDAランタイムを*と*一緒に使用することはできません。 – talonmies

答えて

8

答えにこれを変換する:

、実行時にGPUのコードを実行するために、どのようなハードウェアを把握しますGPUのオセロットと呼ばれるソフトウェアがあります:http://code.google.com/p/gpuocelot/

あなたはオセロットを経由してすべての通話を実行し、とするとよいですか。ホームページから

オセロットはPTX仮想命令セットのための様々なCUDAプログラムのバックエンドターゲットと 分析モジュールを提供する、異種 システムのためのモジュールの動的コンパイル・フレームワークです。 オセロットは現在 で、NVIDIA GPU、AMD GPU、および x86-CPUでCUDAプログラムをフルスピードで再コンパイルせずに実行することができます。

+1

nvcuda.dllがマシンに常駐しているかどうかを判断する必要があります。もしそうなら、nvcuda.dllを動的にロードし、cuDevice * APIを使ってデバイスに問い合わせることができます。十分なデバイスがある場合、CUDARTを参照するDLLを動的にロードできます。 GPUオシロスコープは、複数のマシンでCUDAコードを実行するための手段です。 PhysXはこれをしません。 PhysXにはCUDAコードパスとマルチスレッドCPUパスがあります。 –

+0

@ GregSmithしかし、nvcuda.dllがマシンに常駐しているかどうかはどのように判断しますか?あなたは答えとしてコメントを投稿し、私はそれを受け入れるでしょう – Dmitriy

+0

誰もがオセロットのためのPhysXバックエンドを作ったことはありませんが、それは不可能だと言っているわけではありません。 私は誰かがこれを取ることを望んでいました。 –

1

などOTOYによるような非NVIDIAハードウェア上でCUDAを実行するための取り組みが今ありますhttp://venturebeat.com/2016/03/09/otoy-breakthrough-lets-game-developers-run-the-best-graphics-software-across-platforms/

は、基本的にそれはCUDAアプリケーションが書かれてできるようにする他のバックエンド(金属、Vilkan、DirectXの、OpenGLの)への呼び出し変換CUDAがさまざまなプラットフォームで動作するためのものです。正しい場所にnvcuda.dllを置くだけで、アプリをすぐに稼働させることができるのか、開発者がソフトウェアをデプロイする前に何かを変更しなければならないかどうかはわかりません。

これまで公開されていないafaikはありません。

関連する問題