最大工作组大小与扭曲大小之间的关系是什么?假设我的设备有240个CUDA流处理器(SP)并返回以下信息 -
CL_DEVICE_MAX_COMPUTE_UNITS:30
CL_DEVICE_MAX_WORK_ITEM_SIZES:512/512/64
CL_DEVICE_MAX_WORK_GROUP_SIZE:512
CL_NV_DEVICE_WARP_SIZE:32
这意味着每个流多处理器(即计算单元)有8个SP。现在warp size = 32与这些数字有关吗?
答案 0 :(得分:110)
答案 1 :(得分:3)
warp size是多处理器并发执行的线程数。 NVIDIA多处理器可以使用硬件多线程同时从同一个块执行多个线程。
考虑warp大小很重要,因为所有内存访问都合并为warp大小的倍数(32字节,64字节,128字节),这样可以提高性能。
CUDA C Best Practices Guide包含有关这类优化的所有技术信息。
答案 2 :(得分:1)
直接答案很简单:在Nvidia中,由THREAD组成的BLOCK由程序员设置,WARP为32(由32个线程组成),这是计算单元同时执行的最小单位。 在AMD中,WARP被称为WAVEFRONT(" wave")。
在OpenCL中,WORKGROUPs意味着CUDA中的BLOCK,更重要的是,WORKITEMs意味着CUDA中的THREAD。