Cython扩展使用CUDA

3
我有一个卷积神经网络的C++类实现。该类是建立在一个模板库(mshadow)上,该库生成CUDA代码,因此它采用头文件形式。因此,它只能在使用nvcc编译的文件中使用。我现在正在尝试用Python包装这个类,以便更轻松地加载和保存参数、数据等。

我该如何使用Cython包装C++类呢?我看了一下npcuda-example,它演示了如何在C++类周围编写一个包装器pyx文件。不幸的是,在这个例子中,pyx文件编译成cpp文件。这对我来说行不通,因为我需要在pyx文件中包含类头,并使用nvcc编译它。

我相信如果有一种方法可以强制包装器pyx文件编译成cu文件,那么我可以使用npcuda-example中的setup.py,这样当distutils尝试编译扩展时,就会调用nvcc。

有什么想法吗?

1个回答

1
在npcuda-example中,wrapper.pyx将通过定义来组合*.cu文件。
cdef extern from "src/manager.hh"

我猜这正是你想要的吧?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接