終於成功配置numba cuda

2021-08-13 16:25:17 字數 2692 閱讀 5282

很多年前就關注了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,選擇合適的...