我有一个卷积神经网络的C++类实现。该类是建立在一个模板库(mshadow)上,该库生成CUDA代码,因此它采用头文件形式。因此,它只能在使用nvcc编译的文件中使用。我现在正在尝试用Python包装这个类,以便更轻松地加载和保存参数、数据等。
我该如何使用Cython包装C++类呢?我看了一下npcuda-example,它演示了如何在C++类周围编写一个包装器pyx文件。不幸的是,在这个例子中,pyx文件编译成cpp文件。这对我来说行不通,因为我需要在pyx文件中包含类头,并使用nvcc编译它。
我相信如果有一种方法可以强制包装器pyx文件编译成cu文件,那么我可以使用npcuda-example中的setup.py,这样当distutils尝试编译扩展时,就会调用nvcc。
有什么想法吗?