REDUCE-2:顺序寻址优化 为了解决内存访问冲突问题,这个版本采用了更高效的寻址技术。与让线程访问间隔较远元素的交替寻址不同,顺序寻址让每个线程处理连续的数据元素。 通过访问相邻的内存位置,REDUCE-2降低了缓存未命中和内存库冲突的概率,提升了内存带宽利用效率,并改善了归约操作的整体性能。 结果 REDUCE-2 结果 线程利用率问题 这种方法基本上解决了内存冲突问题。在解决了明显的计算和内存问题后,需要进一步提升算法的智能化程度以获得更好的性能表现。 代码的其余部分与REDUCE-2完全相同,这意味着第一次迭代仍然会激活512个线程开始归约操作,因为s=blockDim.x/2 = 512。这种方法让更多线程参与有效工作,避免了计算资源的浪费。
基于这个进一步设计了一些缩小的搜索空间,Reduce-1代表删除了1x1卷积、Reduce-2代表删除了3x3 average pooling, Reduce-3代表删除了以上两者。