看板 Python 關於我們 聯絡資訊
各位大大好 最近因為有需要做大量的矩陣運算 且需要使用大量的迴圈 所以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
Sunal: 其實numpy就已經是用c加速了 10/15 07:57
是沒有錯 numpy本來就用c加速 但是我的情形是需要做大量的單一矩陣對單一矩陣的運算 所以會用到很多迴圈而且沒有辦法vectorize 所以才會想說用外部dll來加速 ※ 編輯: swampni (180.176.50.59), 10/15/2018 11:56:38
sma1033: 迴圈計算很慢不是結構性的問題嗎?應賅要先消除迴圈? 10/15 15:12
sma1033: 把可以分開平行算的東西都拆開來平行算不是比較有效嗎? 10/15 15:14
我要算的東西有點像是一張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
neil987: 這應該在C/CPP板問 10/16 13:35
neil987: 然後找找看有沒有g++64.exe 10/16 13:37
yoyololicon: 要不要換用DL的frame work,pytorch之類?會比numpy快 10/22 21:36