[問題] 如何呼叫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