batchsize设置与矩阵运算速度有何关系?


batchsize.jpg

cs231n的课程中提到了batchsize设置为2的指数倍时会使得很多向量操作速度更快,那么原因是什么呢?是跟GPU的数据分配相关还是矩阵的优化算法有关?谁能大体说一下,谢谢!
已邀请:

星空下的巫师 - https://github.com/shicai/Caffe_Manual

赞同来自: xinmiao 十点睡七点起 王斌_ICT coolwyj babyjia

手机上操作不方便,简单回答一下。

这跟cuda调度有关。cuda中32个线程组成一个warp(可以想象成一个集成单元),每个warp里面的所有线程,同时只执行同一条指令。

当线程数目不够32,也要凑足32个,填充一些无用线程,造成gpu部分资源空着瞎转。无论资源分配或者矩阵计算,都要以这个原理为前提进行操作。如果你不按照32的倍数来,随时都有线程和资源做无用功,那就意味着gpu永远不可能达到最优计算性能。

十点睡七点起

赞同来自:

巫师的回答很准确

要回复问题请先登录注册