使用不同的nvidia图形卡,它具有不同的流量多处理器数量和每个流处理器中具有不同核心数量的处理器的不同规范。
根据设备的容量将线程块分配给单个处理器 1块32次经线或2块16次经线。
但我无法理解每个流处理器中的核心数量。 每个流处理器中具有更大数量内核的设备的意义是什么
我想我们需要更好地利用设备属性来实现更好的优化
cuda程序在设备中如何与流处理器和每个流处理器的核心流动?/
答案 0 :(得分:3)
每个流处理器中具有更大数量内核的设备的意义是什么?
每个SM的核心数大致转换为在任何给定时钟周期内可以处理多少个warp指令。可以在任何给定的时钟周期内处理单个warp指令,但需要32个内核才能完成(根据指令,可能需要多个时钟周期才能完成)。具有32“内核”的cc2.0 fermi SM每个时钟最多可以退出1个指令,平均值(实际上每2个时钟有2个指令)。具有192个内核的Kepler SMX每个时钟可以退出4个或更多指令。有关更精确的答案,请参阅编程指南的计算能力架构部分,并注意每个计算功能1.0 2.0 3.0都有一个部分。
cuda程序如何在设备中流入流处理器和每个流处理器的核心?? /
这个问题已在CUDA标签上多次回答。与内核启动相关联的网格中的每个线程块被分配给一个SM(当SM具有空闲时隙时)。然后SM将线程块“解包”到warps中,并在SM内部资源(例如“核心”和特殊功能单元)上调度warp指令,因为这些资源变得可用。