前提:传统的数组和矩阵都是通过numpy来设定,然后numpy来调用cpu计算!
cupy的作用:数组和矩阵都是通过cupy来设定,然后cupy来调用gpu并行计算!
区别与联系:
cupy的优势 :专门进行大型、高维数组/矩阵的快速计算(非常非常快)!
要想实现数组/矩阵的快速运算,要注意3点:
下面用一个很简单的例子即可体现上面的内容:循环矩阵相加
三组循环矩阵相加的耗时结果:
彼此差距非常明显!上文中需要注意的2、3点非常非常重要!
由本例也可看出,cupy的gpu并行计算潜力有多大!
本例的计算量还是太小,一个GTX-1050的笔记本显卡,都根本还没发挥其功力!如果将cupy应用到服务器上、应用到深度学习之中,潜力非常大!
本文集会持续更新cupy的相关操作,并实时将其与对应的numpy使用进行对比。
numpy教程网站
cupy教程网站
用cupy和numpy直接创建的数组/矩阵,类型是不一样的!无法相互之间进行运算。
用type查看二者的数据类型:
其实,如果只需要进行大量数组/矩阵间计算,然后将结果存储到某个" 容器 "之中,以cupy目前实现的函数功能来看,只用cupy来完成肯定是够的,完全可以一点没有numpy的影子。
但是,很多的" 第三方包是不认识cupy的数据类型 "的!本人就发现" matplotlib "就不识别cupy的数据类型!因此,如果除" 纯计算 "外还有别的需求,需要将cupy数据先转为numpy数据(numpy是转不了cupy的!)
cupy转numpy的函数: cupy.asnumpy()
结果:
有了这么简单的数据互转函数,只要计算量大,可以用cupy完全替换numpy!
直到需要使用其他第三方包的时候,再把cupy数据类型转回到numpy即可。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)