前提:传统的数组和矩阵都是通过numpy来设定,然后numpy来调用cpu计算!
cupy的作用:数组和矩阵都是通过cupy来设定,然后cupy来调用gpu并行计算!
区别与联系:
- 区别:numpy自动调用cpu来进行"数组和矩阵间"的计算,计算任务默认单进程;cupy自动调用gpu来进行"数组和矩阵间"的计算,gpu中默认并行计算!
- 联系:二者的函数和实操的功能基本完全一样,一般只需把np.xxx()改成cp.xxx()即可。当然,cupy还未完全写完,有些numpy的函数它还未实现(基本用不到)。
cupy的优势:专门进行大型、高维数组/矩阵的快速计算(非常非常快)!
在windows上通过pip安装需要注意cuda的版本,nvcc -V可查看cuda版本,笔者是cuda9.0版本的,安装cupy的指令为pip install cupy-cuda90.
cuda10.0:
pip install cupy-cuda100
@cupy.util.memoize(for_each_device=True) def load_kernel(kernel_name, code, **kwargs): code = Template(code).substitute(**kwargs) kernel_code = cupy.cuda.compile_with_cache(code) return kernel_code.get_function(kernel_name)