5

CUDA を使用して、MATLAB で記述されたコードの最適化を試みます。私は最近 CUDA のプログラミングを始めましたが、それがどのように機能するかについての一般的な考えを持っています。

たとえば、2 つの行列を足し合わせたいとします。CUDA では、スレッドを使用して結果行列の各要素の答えを計算するアルゴリズムを作成できました。しかし、この手法はおそらく MATLAB が既に行っている手法と似ているのではないでしょうか? その場合、効率は技術に依存せず、ハードウェア レベルのみに起因するのではないでしょうか。

4

4 に答える 4

3

手法は似ているかもしれませんが、CUDA では何百ものスレッドが同時に実行されることを思い出してください。MATLAB がスレッドを使用しており、それらのスレッドがクアッド コアで実行されている場合、同じクロック サイクルで CUDA で数百のスレッドを実行することができますが、クロック サイクルごとに実行されるスレッドは 4 つだけです。

はい、あなたの質問に答えるために、はい、この例の効率は技術とは無関係であり、ハードウェアのみに起因します。

于 2010-12-09T21:53:47.657 に答える
1

答えは明白です。すべての効率はハードウェア レベルです。matlab がどのように機能するかは正確にはわかりませんが、CUDA の利点は、matlab とは異なり、複数のスレッドを同時に実行できることです。

余談ですが、問題が小さい場合、または多くの読み書き操作が必要な場合、CUDA はおそらく追加の頭痛の種になるだけです。

于 2010-12-09T22:20:59.393 に答える
0

簡単なこととして、MatlabPCTでgpuArrayサポートを使用することをお勧めします。ここで確認できます http://www.mathworks.de/de/help/distcomp/using-gpuarray.html

gpuArrays、乗算、最小値、最大値などを追加する場合、それらが使用する実装は問題ない傾向があります。abs(y-Hx)。^ 2のような小さな行列のバッチ操作のようなものを作成するには、それを実行する小さなカーネルを作成する方がよいことがわかりました。

于 2012-09-27T13:14:53.690 に答える
0

CUDA は matlab を公式にサポートしています。

[リンクが必要]

mex ファイルを利用して、MATLAB から GPU で実行できます。

ボトルネックは、データが CPU-RAM から GPU に転送される速度です。そのため、転送を最小限に抑えて大きなチャンクで実行すると、速度が大幅に向上します。

于 2010-12-11T05:36:22.680 に答える