[問題] Numpy串接外部dll

看板Python作者時間6年前 (2018/10/15 00:40), 6年前編輯推噓3(303)
留言6則, 4人參與, 6年前最新討論串1/1
各位大大好 最近因為有需要做大量的矩陣運算 且需要使用大量的迴圈 所以numpy會非常的慢 也因此選擇使用c++寫一個外部的dll然後導入python 但是 在過程中發現使用64bits與32bits的DLL在速度上有非常大的差異 32bits大概比64bits的DLL快5倍 但原本python的開發環境是64bits 有點不想要換成32bits 而且這本身感覺就有點奇怪 不知道是不是我哪裡弄錯了呢? 希望各位大大救救我(跪 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.50.59 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1539535220.A.3D5.html

10/15 07:57, 6年前 , 1F
其實numpy就已經是用c加速了
10/15 07:57, 1F
是沒有錯 numpy本來就用c加速 但是我的情形是需要做大量的單一矩陣對單一矩陣的運算 所以會用到很多迴圈而且沒有辦法vectorize 所以才會想說用外部dll來加速 ※ 編輯: swampni (180.176.50.59), 10/15/2018 11:56:38

10/15 15:12, 6年前 , 2F
迴圈計算很慢不是結構性的問題嗎?應賅要先消除迴圈?
10/15 15:12, 2F

10/15 15:14, 6年前 , 3F
把可以分開平行算的東西都拆開來平行算不是比較有效嗎?
10/15 15:14, 3F
我要算的東西有點像是一張rgb圖 然後我要算每一個PIXEL對另外一個PIXEL的關係 但這個關係的函式很複雜 沒有辦法利用vectorize的方式一次大量算 所以才會想說能不能用外部DLL的方式來加速 實作上也是證明可以 那關於我的問題我後來發現好像是我32bits跟64bits編譯用的編譯器不同的關係 32bits用g++ 64bits用cl 後來用cl編了一次32bits的也是很慢 但是最糟糕的就是我怎樣都沒辦法用g++編出64bits的DLL 載了好幾個不同版本的mingw64都不行 所以雖然在這裡問好像怪怪的 但有大大可以指點一下要怎麼用g++編譯出64bits的DLL嗎? 另外用cl跟g++在執行速度上會有如此巨大的差異又可能是甚麼原因呢? 也謝謝上面兩位願意給我意見^ ^ ※ 編輯: swampni (180.176.50.59), 10/16/2018 00:30:31

10/16 13:35, 6年前 , 4F
這應該在C/CPP板問
10/16 13:35, 4F

10/16 13:37, 6年前 , 5F
然後找找看有沒有g++64.exe
10/16 13:37, 5F

10/22 21:36, 6年前 , 6F
要不要換用DL的frame work,pytorch之類?會比numpy快
10/22 21:36, 6F
文章代碼(AID): #1Rmt5qFL (Python)
文章代碼(AID): #1Rmt5qFL (Python)