36

質問はそれ自体を物語っていると思います。私はいくつかの深刻な計算を行うことに興味がありますが、貿易によるプログラマーではありません。私は自分がやりたいことを成し遂げるのに十分なPythonをつなぎ合わせることができます。しかし、Pythonでプログラムを作成し、GPUにCUDAを使用して実行させることはできますか?または、PythonとCを組み合わせて使用​​する必要がありますか?

Klockner(sp)の「pyCUDA」Webページの例には、PythonとCの両方が混在していたため、答えがわかりません。

誰かがOpenclについてチャイムを鳴らしたい場合は、お気軽に。ほんの数週間前にこのCUDAビジネスについて聞いたのですが、このようなビデオカードを使用できるとは知りませんでした。

4

8 に答える 8

20

CUDAmatTheanoを見てください。どちらも、GPU プログラミングについてあまり知らなくても、GPU で実行されるコードを作成するためのアプローチです。

于 2010-06-20T00:53:32.770 に答える
18

PyCUDA では、計算カーネルは常に「CUDA C コード」として記述する必要があると思います。PyCUDA は、そうでなければ退屈な簿記の多くを担当しますが、Python コードから計算 CUDA カーネルを構築しません。

于 2010-06-01T04:42:08.550 に答える
8

pyopenclは、PyCUDAの興味深い代替手段を提供します。PyCUDA の「姉妹プロジェクト」として説明されています。これは、OpenCL の API の完全なラッパーです。

私の知る限り、OpenCL には Nvidia を超える GPU で実行できるという利点があります。

于 2010-06-01T07:40:02.277 に答える
5

すでに素晴らしい答えですが、別のオプションはClytherです。Python のサブセットを OpenCL カーネルにコンパイルすることで、C を使用しなくても OpenCL プログラムを作成できます。

于 2010-06-27T23:55:51.370 に答える
4

有望なライブラリはCopperhead代替リンク)です。GPUで実行する関数を装飾する必要があります(その後、オプトイン/オプトアウトして、その関数のCPUまたはGPUの最適な機能を確認できます。 )。

于 2011-06-27T00:29:47.643 に答える
1

pyCUDA のcumath モジュールを介してアクセスできる、計算カーネルが既に記述された優れた基本的な数学構造のセットがあります。より複雑な、または特定の/カスタムのことをしたい場合は、カーネル定義にCのタッチを書く必要がありますが、pyCUDAの良いところは、重いCリフティングを行うことです; バックエンドで多くのメタプログラミングを行うため、深刻な C プログラミングについて心配する必要はありません。与えられた例の 1 つは、内積を計算するための Map/Reduce カーネルです。

dot_krnl = ReductionKernel(np.float32, neutral="0", reduce_expr="a+b", map_expr="x[i]*y[i]", arguments="float *x, float *y")

これらの各引数内の小さなコード スニペットは C 行ですが、実際にプログラムを記述します。これReductionKernelは map/reducish 型関数のカスタム カーネル型ですが、さまざまな型があります。公式の pyCUDA ドキュメントの例の部分は、より詳細になります。

幸運を!

于 2011-02-25T23:16:08.813 に答える
0

私も同じことを疑問に思っていて、いくつか検索しました。あなたの質問に答えているように見える以下のリンクの記事を見つけました。ただし、これは 2014 年に質問されたもので、Nvidia の記事には日付がありません。

https://developer.nvidia.com/how-to-cuda-python

このビデオでは、セットアップ、最初の例、そして非常に重要なプロファイリングについて説明しています。ただし、通常の一般的な計算パターンをすべて実装できるかどうかはわかりません。私ができる限りNumPyには制限がないので、できると思います。

于 2016-08-29T06:24:27.007 に答える
0

Scikits CUDA パッケージは、numpy 配列操作として表すことができる操作に低レベルの知識や C コードを必要としない場合、より良いオプションになる可能性があります。

于 2014-04-04T18:29:52.563 に答える