终于成功配置numba cuda
2017-12-16 23:21
351 查看
很多年前就关注了numba,numba的gpu加速以前叫numba pro,是收费的,后来整合进了numba。但是很遗憾,我从来没有成功配置过numba的cuda。终于在今天,完成了这一多年来一直失败的配置过程。
安装CUDA Toolkit 我比较喜欢新的,装的是9.1版本。安装完成后安装程序会自动配置好环境变量。
设置numba所需的环境变量
NUMBAPRO_CUDALIB:path_to_cuda\bin (eg: D:\CUDA\v9.1\bin)
NUMBDPRO_NVVM: path_to_cuda\nvvm\bin\nvvm.dll (eg: D:\CppLib\CUDA\v9.1\nvvm\bin\nvvm64_32_0.dll)
NUMBAPRO_LIBDEVICE: path_to_cuda\nvvm\libdevice (eg: D:\CppLib\CUDA\v9.1\nvvm\libdevice)
环境变量设置好后看看NUMBAPRO_LIBDEVICE目录下是否有名为libdevice.compute_xx.10.bc (xx=20,30,35,50)的文件,如果没有可以到matlab的bin目录下去寻找。matlab里面啥都有。。啥都有。。啥都有。。
环境设置好以后就可以试试numba的example了。numba的example很简单,Mandelbrot集,链接如下:
https://github.com/harrism/numba_examples
其中使用cpu的
顺着提示找到site-packages\numba\cuda\cudadrv\libs.py,发现其中有个test()函数。其中最重要的就2个函数,
其中一共出现了3个环境变量,即前述的3个待添加的环境变量。添加好
观察
我在装好cuda9.1后发现libdevice文件夹里面并没有这些文件,于是用Listary搜索了一下,发现matlab里面就有!万能的matlab\bin里面的dll太全了!啥都有!啥都有!啥都有!
配置完成后,enjoy!
numba cuda的配置
废话少说,配置cuda主要有以下几点:安装CUDA Toolkit 我比较喜欢新的,装的是9.1版本。安装完成后安装程序会自动配置好环境变量。
设置numba所需的环境变量
NUMBAPRO_CUDALIB:path_to_cuda\bin (eg: D:\CUDA\v9.1\bin)
NUMBDPRO_NVVM: path_to_cuda\nvvm\bin\nvvm.dll (eg: D:\CppLib\CUDA\v9.1\nvvm\bin\nvvm64_32_0.dll)
NUMBAPRO_LIBDEVICE: path_to_cuda\nvvm\libdevice (eg: D:\CppLib\CUDA\v9.1\nvvm\libdevice)
环境变量设置好后看看NUMBAPRO_LIBDEVICE目录下是否有名为libdevice.compute_xx.10.bc (xx=20,30,35,50)的文件,如果没有可以到matlab的bin目录下去寻找。matlab里面啥都有。。啥都有。。啥都有。。
环境设置好以后就可以试试numba的example了。numba的example很简单,Mandelbrot集,链接如下:
https://github.com/harrism/numba_examples
其中使用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 def get_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!
相关文章推荐
- 终于成功配置numba cuda
- 终于解决Lomboz的配置,成功编辑运行JSP
- 关于loadrunner在win10系统下的安装+配置+破解总结——终于破解成功啦!耶
- 终于将你配置成功了~~~
- 在OpenSuse10.2中配置电信互联星空帐号实现dsl上网,终于成功。
- 终于看到配置成功的Android模拟器是什么样子
- 终于成功配置了sendmail为本地用户转发邮件
- redhat linux上的samba服务器配置(成功了的,找了好久好久,终于解决了,)
- 在自己机器上配置.text95终于成功了
- 终于配置成功了,不过只是走了一小步而已。
- 终于配置成功了苹果的开发环境难于配置(系统和开发环境)
- AAA基本配置:终于成功完成了真实的ACS4.1与模拟PIX软件的交互 实验成功
- 终于把Live writer配置成功了
- 终于配置PetStore成功
- 庆祝一下:配了2周终于把skyeye+uClinux配置成功!
- c++:eclipse 开发c++环境配置(保你编译成功)
- 关于推送证书配置第一次失效,第二次重新配置成功的研究
- 今天配置tomcat下servlet不成功
- 如何配置一个最基本的web富文本编辑器?--之wangEditor(验证成功)
- spring的成功配置样式