CUDA 笔记 一些实用函数

在调优的时候能用得到,获取一些占用率相关的信息

cudaOccupancyAvailableDynamicSMemPerBlock ( size_t dynamicSmemSize, const void func, int numBlocks, int blockSize )**

返回在当前的numBlock下(numBlock/SM)每个block能用的SMem大小


cudaOccupancyMaxActiveBlocksPerMultiprocessor ( int numBlocks, const void func, int blockSize, size_t dynamicSMemSize )**

根据当前的使用的寄存器,SMem等信息判断每个SM上能驻存的Block数。


cudaOccupancyMaxPotentialBlockSize ( int minGridSize, int blockSize, T func, size_t dynamicSMemSize = 0, int blockSizeLimit = 0 ) [inline]**

根据当前信息算核函数达到最大占用率Occupy时的BlockSize和GridSize,因为只能分析静态信息,所以如果有动态信息,则需要用cudaOccupancyMaxPotentialBlockSizeVariableSMem


cudaOccupancyMaxPotentialBlockSizeVariableSMem ( int minGridSize, int blockSize, T func, UnaryFunction blockSizeToDynamicSMemSize, int blockSizeLimit = 0 ) [inline]**

当有动态SMem分配时计算最大Occupy时的BlockSize和GridSize,blockSizeToDynamicSMemSize是一个函数,传入BlockSize返回Smem Size