Cuda GPU上的可用共享内存量
如何知道GPU上可用的共享内存量? 我感兴趣的是我能在共享内存中存储多大的阵列。我的GPU是Nvidia GeForce 650 Ti。我正在使用VS2013和CUDA工具包进行编码 如果有人能解释一下,我如何能自己解决问题,而不仅仅是给出一个原始数字,我将不胜感激。两种方法:Cuda GPU上的可用共享内存量,cuda,shared-memory,Cuda,Shared Memory,如何知道GPU上可用的共享内存量? 我感兴趣的是我能在共享内存中存储多大的阵列。我的GPU是Nvidia GeForce 650 Ti。我正在使用VS2013和CUDA工具包进行编码 如果有人能解释一下,我如何能自己解决问题,而不仅仅是给出一个原始数字,我将不胜感激。两种方法: 阅读文档。您的GeForce 650 Ti是cc3.0 GPU。(如果您想了解如何发现,请参阅或阅读第2项) 对于cc3.0 GPU,每个线程块的最大值为48KB 以编程方式,通过运行cudaGetDeviceProp
cudaGetDeviceProperties
()。这个例子说明了这一点
cudaGetDeviceProperties
(如上所示)获得)同样为48KB。这将是对入住率的一个限制;此特定限制是每SM的可用总量除以threadblock使用的量。如果您的threadblock使用40KB的共享内存,则在cc3.0 GPU上,每个SM一次最多可以有一个threadblock驻留。如果您的threadblock使用20KB的共享内存,则每个SM可能有2个threadblock驻留,而忽略其他占用限制
cudaGetDeviceProperties
()。这个例子说明了这一点
cudaGetDeviceProperties
(如上所示)获得)同样为48KB。这将是对入住率的一个限制;此特定限制是每SM的可用总量除以threadblock使用的量。如果您的threadblock使用40KB的共享内存,则在cc3.0 GPU上,每个SM一次最多可以有一个threadblock驻留。如果您的threadblock使用20KB的共享内存,则每个SM可能有2个threadblock驻留,而忽略其他占用限制
如上所述,SM指的是“流式多处理器”,可识别。它也被称为“多处理器”,例如。如果您安装了PGI编译器,只需执行“pgiaccelinfo”,
然后,您不必阅读文档如果安装了PGI编译器,只需执行“pgiaccelinfo”,
然后,您不必阅读文档48KB/线程块。但可用的总内存是多少?这一点很重要,因为该值决定有多少块并行运行。如果没有足够的总共享内存,某些块的执行将不得不等到其他块完成作业并释放内存。答案包含在我已经指出的相同文档链接和相同编程方法中。但是我已经编辑了我的答案。什么是SM?请展开此多处理器。CUDA编程指南中解释了此概念。每个线程块48KB。但可用的总内存是多少?这一点很重要,因为该值决定有多少块并行运行。如果没有足够的总共享内存,某些块的执行将不得不等到其他块完成作业并释放内存。答案包含在我已经指出的相同文档链接和相同编程方法中。但是我已经编辑了我的答案。什么是SM?请展开此多处理器。CUDA编程指南中解释了这一概念。