作者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/m.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