导入需要的包:
import pycuda.gpuarray as gpuarray
import pycuda.autoinit
import skcuda.linalg as sklin
创建两个矩阵:
a = numpy.random.randn(4, 4).astype(numpy.float32) #为了后续GPU上的计算顺利进行,矩阵数值设定为float32
b = numpy.random.randn(4, 4).astype(numpy.float32)
使用gpuarray将矩阵转换为GPU下可用的类型:
a_gpu = gpuarray.to_gpu(a)
b_gpu = gpuarray.to_gpu(b)
使用skcuda的线性代数库实现矩阵乘法:
sklin.init() # 使用skcuda线性代数库时要先调用内置函数进行初始化
multi_gpu = sklin.dot(a_gpu, b_gpu) # 矩阵乘法
a_inv = sklin.inv(a_gpu) # 矩阵求逆
multi = multi_gpu.get()
inv = a_inv.get()