1

私は pycuda を使用する初心者です。これまでのところ、本「Cuda by example」からカーネルの書き方についていくつかの基本的なことを学びました。次のタスクは、既に C++ で記述されているクラスを内部で使用することです。カーネルの。この .h ファイルを pycuda にインポートするにはどうすればよいですか? この .h を転送するためにブースト python を使用する必要があるので、python の他のモジュールと同様にインポートできますか? 問題は、カーネル内でこの特別な変数だけが必要だということです。このクラスは導関数の計算に使用されます。このクラスがどのように構築されているかを確認できるように、いくつかの行を書きます。

adoublecuda.h:

namespace adtl {
class adouble {
public:
    // ctors
    __device__ __host__ inline adouble();
    __device__ __host__ inline adouble(const double v);
    __device__ __host__ inline adouble(const adouble& a);

    __device__ __host__ inline adouble operator - () const;
    __device__ __host__ inline adouble operator + () const;

...等。

#include "adoublecuda.h" と入力するだけで C-CUDA 内でこのクラスを使用し、PyCUDA に同じものを含めたいと考えています。このクラスはカーネル内でのみ使用しています (main 内で adouble 変数は必要ありません)。このヘッダー ファイルを PyCuda にインクルードするには、boost python を使用する必要がありますか?

アドバイスをいただければ幸いです。助けていただきありがとうございます。

4

1 に答える 1

1

デバイスコード内でのみ使用され、メタプログラミングを行うつもりがない場合は、Python または PyCUDA を使用して動作させる必要はありません。デバイス コードを CUBIN オブジェクトにコンパイルし (したがって を使用nvcc -cubin)、その CUBIN ファイルを を使用してロードするだけですdriver.module_from_file()

この完全な例は、私の古い回答で見ることができます。

于 2012-06-29T10:55:36.653 に答える