很多年前就關注了numba,numba的gpu加速以前叫numba pro,是收費的,後來整合進了numba。但是很遺憾,我從來沒有成功配置過numba的cuda。終於在今天,完成了這一多年來一直失敗的配置過程。
廢話少說,配置cuda主要有以下幾點:
安裝cuda toolkit我比較喜歡新的,裝的是9.1版本。安裝完成後安裝程式會自動配置好環境變數。
設定numba所需的環境變數
環境變數設定好後看看numbapro_libdevice目錄下是否有名為libdevice.compute_xx.10.bc (xx=20,30,35,50)的檔案,如果沒有可以到matlab的bin目錄下去尋找。matlab裡面啥都有。。啥都有。。啥都有。。
環境設定好以後就可以試試numba的example了。numba的example很簡單,mandelbrot集,鏈結如下:
其中使用cpu的numba.autojit
無需配置,直接就能達到10倍以上的加速效果,而使用gpu的numba.cuda.jit(device=true)
可以加速至上千倍。
在只安裝了cuda toolkit的情況下直接執行上面的example會出現以下錯誤:
oserror traceback (most recent call last)
d:\winpython-64bit-3.6.3.0qt5\python-3.6.3.amd64\lib
\site-packages\numba
\cuda
\cudadrv
\nvvm.py in __new__(cls)
110 try:
--> 111 inst.driver = open_cudalib('nvvm', ccc=true)
112 except oserror as e:
d:\winpython-64bit-3.6.3.0qt5\python-3.6.3.amd64\lib
\site-packages\numba
\cuda
\cudadrv
\libs.py in open_cudalib(lib, ccc)
40 if path is none:
---> 41 raise oserror('library %s not found' % lib)
42 if ccc:
oserror: library nvvm not found
順著提示找到site-packages\numba\cuda\cudadrv\libs.py,發現其中有個test()函式。其中最重要的就2個函式,get_cudalib get_libdevice
,定義如下:
def
get_cudalib
(lib, platform=none):
if lib == 'nvvm'
and os.environ.get('numbapro_nvvm'):
return os.environ.get('numbapro_nvvm')
libdir = os.environ.get('numbapro_cudalib')
candidates = find_lib(lib, libdir, platform)
return max(candidates) if candidates else
none
defget_libdevice
(arch):
libdir = (os.environ.get('numbapro_libdevice') or
os.environ.get('numbapro_cudalib'))
pat = r'libdevice\.%s(\.\d+)*\.bc$' % arch
candidates = find_file(re.compile(pat), libdir)
return max(candidates) if candidates else
none
其中一共出現了3個環境變數,即前述的3個待新增的環境變數。新增好numbapro_cudalib
後,執行get_cudalib('cublas')
有:』d:\cuda\v9.1\bin\cublas64_91.dll』,則numbapro_nvvm
應該也指向dll檔案,即'd:\\cuda\\v9.1\\nvvm\\bin\\nvvm64_32_0.dll'
。
觀察get_libdevice
的定義和test()函式中的archs = 'compute_20', 'compute_30', 'compute_35', 'compute_50'
可知,其需要名為'libdevice.compute_xx.d+.bc'
的檔案。
我在裝好cuda9.1後發現libdevice資料夾裡面並沒有這些檔案,於是用listary搜尋了一下,發現matlab裡面就有!萬能的matlab\bin裡面的dll太全了!啥都有!啥都有!啥都有!
配置完成後,enjoy!
終於買到了 飛向成功 這本書
很久以前,乙個朋友就推薦我看這本書,主題就是 這本書強調人應當知道自己的優點 長處,然後在這方面繼續發揮 這才是成功之道。以前在莆田新華書店沒地方找,登記了缺書,還是沒有任何訊息,去深圳,溫州,上海出差時也沒有時間逛書店,前兩天終於從網上淘到,原價9元,打折後5元,但是快遞給花了9元,呵 鬱悶 此書...
Matlab TLD終於執行成功了,淚奔。。
最近被tld演算法真是搞得心酸,向很多已經解決問題的請教,不帶回的,說多了都是淚,不廢話,直接說重點。首先預設你已經安裝了matlab2010b vs2010 opencv,我的opencv版本是2.4.6,之前是win764位,沒成功,換了乙個32位好了。在matlab裡神奇的竟然可以直接利用li...
nutch配置成功
nutch配置成功,現在進行關鍵的技術選型。根據專案特殊情況及實現中文搜尋可能存在的問題,提出三套技術方案,除自己外,另安排一人選擇第三套方案進行實施測試,預期一周後進行根據測試情況選擇具體的實施方案。由自己負責第一套方案的測試,目前需進行的工作 1 綜合比較nutch和heritrix,選擇合適的...