优化了reducesum算子的速度与吞吐量 #7
Loading…
Reference in New Issue
No description provided.
Delete Branch "meiying/GPUKernelContest:main"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
具体优化内容:
1.使用多级归约,先将数据分为多块,进行块内归约,再将块内归约的结果进行归约。
2.在此基础上,通过调整线程块的大小和每个线程处理的元素数量来提升GPU利用率以及内存访问速度;
3.我们分别尝试了64,128,256,512,最终确定256为最佳线程块大小;
4.同时,每个线程处理两个元素,但采用交错加载保证每次都是访问连续地址;
5.最后的warp内归约使用手动归约以提升访问和计算速度;
性能提升(设备:曦云 C500 显存32G):
默认实现:
数据规模 时间(ms) 吞吐量(G/s)
134217728 0.436 307.500
536870912 1.386 387.400
1073741824 2.684 400.075
优化后:
数据规模 时间(ms) 吞吐量(G/s)
134217728 0.065 2054.420
536870912 0.065 8308.843
1073741824 0.075 14276.052