前提:傳統的數組和矩陣都是通過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)