在计算能力1.3 GPU cuda卡上, 我们运行以下代码
for(int i=1;i<20;++i)
kernelrun<<<30,320>>>(...);
我们知道每个SM有8个SP,可以运行1024个线程, 因此特斯拉C1060中有30个SM可同时运行30 * 1024个线程。
根据给定的代码,可以同时运行多少个线程? 如果kernelrun内核有48个寄存器,那么tesla C1060有哪些限制?
有16384个寄存器和16KB共享内存?
由于特斯拉C1060不支持并发内核执行,如何实现 我们可以同时在循环中执行内核吗? IS流可能吗? 在tesla C1060中只有一个并发复制和执行引擎?
答案 0 :(得分:1)
自2007年以来,NVIDIA一直在发送Occupancy calculator你可以自己回答这个问题。你应该尝试一下。
但是要回答你的问题,你的计算1.3设备中的每个SM每个SM有16384个寄存器,所以每个块的线程数如果你的内核被寄存器限制将大约是352(16384/45)向下舍入到最近的32)。还需要考虑注册页面分配粒度。