PyCUDA数组点乘

mport pycuda.gpuarray as gpuarray
import pycuda.driver as drv
import pycuda.autoinit
import numpy
import time

n=10
a=numpy.float32(numpy.random.randint(1,5,(n,n)))
b=numpy.float32(numpy.random.randint(1,5,(n,n)))
       
tic=time.time()
axb=a*b

toc=time.time()-tic
print("Dot Product on CPU")
print(toc,"s")

start = drv.Event()
end=drv.Event()
start.record()
a_gpu = gpuarray.to_gpu(a)
b_gpu = gpuarray.to_gpu(b)
axbGPU = gpuarray.dot(a_gpu,b_gpu)
end.record()
end.synchronize()
secs = start.time_till(end)*1e-3
print("Dot Product on GPU")
print("%fs" % (secs))
if(numpy.sum(axb)==axbGPU.get()):
    print("The computed dor product is correct")

两个向量各有100个元素,用随机整数初始化以计算点乘,用Python 的time模块来计算点乘所需的时间。*运算符用于计算两个向量的元素相乘,其结果相加以计算整体点乘。请注意,numpy.dot方法只用于矩阵乘法,而不能用于点乘。
使用to_gpu方法将两个向量上传给GPU执行点乘计算。gpuarray类提供了一个点乘方法可以直接计算点乘,需要两个GPU数组作为参数,使用get()方法将计算结果下载回主机。计算结果和使用CUDA事件测量的时间显示在控制台。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给算法爸爸上香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值