[问题] 如何呼叫c++函式并传入、回传numpy array

楼主: hardman1110 (笨小孩)   2018-01-16 15:41:52
环境:
OS:win10 ubuntu16
Version: python 3.5 up
Lib: CUDA
问题描述:
需要用CUDA来加速,查了一下python call c++的方法主要有以下5种:
1. Extending Python with C or C++
2. SWIG 3. ctypes 4. Cython 5. cffi
为了可携性与实现难易度,打算选ctype
(不知道有没有错....感觉只需要加载.dll or .so很方便)
问题:
1. 要如何从python 喂numpy array给c++档案并且一样回传numpy array呢?
2. 有用到CUDA应该不需要在python code特别处里吧?
以上 还请各位大大指教>.<
作者: uranusjr (←這人是超級笨蛋)   2018-01-16 16:36:00
ctypes 和 CFFI 都只能针对 C 喔, C++ 虽然理论上可以但会处理 name mangling 到疯掉; 看你的状况或许可以考虑Boost-Python
作者: johnjohnlin (嗯?)   2018-01-16 21:46:00
楼上说的 ctypes 问题,用 extern "C" 包可以解决至于 numpy,C API 的文件很少,要查一阵子光是 linker, header 要用哪些就很难找了
作者: uranusjr (←這人是超級笨蛋)   2018-01-16 23:33:00
如果是已有的 C++ lib 这样做就会需要维护两份 API 定义(extern C 一个, ctypes 那边一个) 会稍微麻烦, 如果可以这样做的话 CFFI 只要一份定义维护起来会方便一点
楼主: hardman1110 (笨小孩)   2018-01-17 17:25:00
感谢各位解惑 我会尝试看看cffi 希望直接吃numpy最好
作者: peiga (宝蓝海孩)   2018-01-19 21:50:00
Pytorch tensor 很像 numpy 而且支持 cuda 加速

Links booklink

Contact Us: admin [ a t ] ucptt.com