【发布时间】:2012-06-04 07:30:25
【问题描述】:
我想编译parallel.cu和python_wrapper.cpp,其中python_wrapper.cpp使用Boost.python将parallel.cu中的方法暴露给python。
我是 cuda 和 Boost.python 的新手。
从他们的手册和谷歌中,我找不到如何让他们说话。
一些网站说,我应该做类似的事情
nvcc -o parallel.cu
g++ -o python_wrapper.cpp
g++ parallel.o python_wrapper.o
但我知道编译Boost.python 代码的唯一方法是使用bjam。
已经尝试将nvcc 集成到bjam 中,但我无法让它们工作。
parallel.cuh
__global__ void parallel_work();
int do_parallel_work();
python_wrapper.cpp
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include "parallel.cuh"
BOOST_PYTHON_MODULE(parallel_ext){
using namespace boost::python;
def("parallel", do_parallel_work);
}
如何编译这些文件?
我听说过PyCuda,但我需要在我的.cu 文件中包含Boost 和thrust 库。
另外,如果可能的话,我想坚持一个标准的命令行驱动的编译过程。
【问题讨论】:
-
在没有 bjam 的情况下编译 Boost.Python 代码是完全可能的(而且我认为它比尝试使用 bjam 更容易)。您基本上只需要编译一个链接到 Python 和 Boost.Python 共享库的共享库,并使用 Python 和 Boost.Python 标头的包含路径。
-
我建议使用已经存在的库来将 CUDA 与 Python 集成。仔细看看 PyCUDA。另外,看看 ArrayFire(我正在研究的那个)。谷歌“gpu python”。这些会有帮助吗?
标签: boost cuda boost-python bjam nvcc