1

我是使用 pycuda 的初学者,到目前为止,我已经从“Cuda by example”一书中学到了一些如何编写内核的基本知识,我的下一个任务是使用一个已经用 C++ 编写的类,里面的内核。如何将此 .h 文件导入 pycuda?我是否必须使用 boost python 来传输这个 .h 以便可以像 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;

...ETC。

我在 C-CUDA 中使用这个类,只需输入 #include “adoublecuda.h”,现在我想在 PyCUDA 中包含同样的东西。我只在内核内部使用这个类(我不需要 main 内部的双变量)。那么我是否必须使用 boost python 才能将此头文件包含到 PyCuda 中?

任何建议将不胜感激,感谢您帮助我!

4

1 回答 1

1

如果它仅在设备代码内部使用,并且您不打算进行任何元编程,那么您实际上不需要使用 Python 或 PyCUDA 做任何事情来使其工作。只需将您的设备代码编译为一个 CUBIN 对象(所以使用nvcc -cubin),然后使用driver.module_from_file().

您可以在我的这个较旧的答案中看到一个完整的示例。

于 2012-06-29T10:55:36.653 回答