使用 cuda 的 cython 扩展
Posted
技术标签:
【中文标题】使用 cuda 的 cython 扩展【英文标题】:cython extensions using cuda 【发布时间】:2014-06-04 22:08:46 【问题描述】:我有一个作为 C++ 类的 conv net 实现。该类构建在生成 CUDA 代码的模板库 (mshadow) 之上,因此它采用头文件的形式。因此,它只能在使用 nvcc 编译的文件中使用。我现在正在尝试将这个类包装在 Python 中,以便更轻松地加载和保存参数、数据等。
如何使用 Cython 包装 C++ 类?我查看了npcuda-example,它演示了如何围绕 C++ 类编写包装 pyx 文件。不幸的是,在此示例中,pyx 文件编译为 cpp 文件。这对我不起作用,因为我需要在 pyx 文件中包含类头并使用 nvcc 编译它。
我相信我可以使用 npcuda-example 中的 setup.py,如果有某种方法可以强制包装器 pyx 文件编译为 cu 文件,以便在 distutils 尝试编译扩展时调用 nvcc。
有什么想法吗?
【问题讨论】:
【参考方案1】:在 npcuda-example 中,wrapper.pyx 将通过定义结合 *.cu
cdef extern from "src/manager.hh"
我猜这正是你想要的?
【讨论】:
以上是关于使用 cuda 的 cython 扩展的主要内容,如果未能解决你的问题,请参考以下文章