用cython包装c ++和CUDA代码

时间:2016-03-27 13:41:35

标签: python c++11 cuda cython

我想用cython包装c ++和CUDA代码。 我看了npcuda-example(https://github.com/rmcgibbo/npcuda-example),我改变了setup.py,如下所示。

ext = Extension('MyWrap',
            sources=['src/my_code.cu', 'python/my_wrap.pyx'],
            library_dirs=[CUDA['lib']],
            libraries=['cudart'],
            language='c++',
            runtime_library_dirs=[CUDA['lib']],
            # this syntax is specific to this build system
            # we're only going to use certain compiler args with nvcc and not with gcc
            # the implementation of this trick is in customize_compiler() below
            extra_compile_args={'clang++': ['-std=c++11','-O3'],
                                'nvcc': ['-std=c++11','-gencode','arch=compute_30,code=sm_30']},
            include_dirs = [numpy_include, CUDA['include'], 'src'],
            extra_link_args=["-std=c++11"])

而且,我为我的代码运行setup.py, 但是,我有一个nvcc错误"fatal error: 'mutex' file not found" 我猜“-std = c ++ 11”选项无法通过nvcc编译器。 如何将c ++和CUDA代码包装成c ++ 11代码?

1 个答案:

答案 0 :(得分:2)

感谢您的回答。 我解决了这个问题。命令" distutils.util.get_platform()"在我的Mac上返回mac os x 10.5。所以我将python anaconda更改为系统默认python,我可以编译c ++ 11代码。但我无法编译我的所有代码 根据Saullo Castro的回答,首先我使用CMake CUDA Package的CUDA_ADD_LIBRARY将我的代码构建到库中。我只使用这个库编译wrapper.pyx。然后我可以用cython包装我的c ++代码 谢谢!!