作者hardman1110 (笨小孩)
看板Python
标题[问题] 如何呼叫c++函式并传入、回传numpy array
时间Tue Jan 16 15:41:52 2018
环境:
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特别处里吧?
以上 还请各位大大指教>.<
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.230.27
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1516088514.A.11B.html
1F:→ uranusjr: ctypes 和 CFFI 都只能针对 C 喔, C++ 虽然理论上可以但 01/16 16:36
2F:→ uranusjr: 会处理 name mangling 到疯掉; 看你的状况或许可以考虑 01/16 16:37
3F:→ uranusjr: Boost-Python 01/16 16:37
4F:→ johnjohnlin: 楼上说的 ctypes 问题,用 extern "C" 包可以解决 01/16 21:46
5F:→ johnjohnlin: 至於 numpy,C API 的文件很少,要查一阵子 01/16 21:46
6F:→ johnjohnlin: 光是 linker, header 要用哪些就很难找了 01/16 21:47
7F:→ uranusjr: 如果是已有的 C++ lib 这样做就会需要维护两份 API 定义 01/16 23:33
8F:→ uranusjr: (extern C 一个, ctypes 那边一个) 会稍微麻烦, 如果可 01/16 23:33
9F:→ uranusjr: 以这样做的话 CFFI 只要一份定义维护起来会方便一点 01/16 23:34
10F:→ hardman1110: 感谢各位解惑 我会尝试看看cffi 希望直接吃numpy最好 01/17 17:25
11F:→ peiga: Pytorch tensor 很像 numpy 而且支持 cuda 加速 01/19 21:50