《cuda并行程序设计》勘误(2)
来源:互联网 发布:淘宝客服如何算提成 编辑:程序博客网 时间:2024/05/22 11:01
注:本人代码是对长度为1024的数组排序; block数量为1,threads数量为256
p135页代码应改为:
__device__ void merge_array(u32 *src,u32 *dest,u32 num_lists,u32 num_elements,u32 tid){u32 reduction_shift=3;u32 reduction_size=8;u32 per_list=num_elements/num_lists;u32 data=src[tid*per_list];u32 s_idx=tid>>reduction_shift;u32 num_reductions=num_lists/reduction_size;__shared__ u32 list_index[256];list_index[tid]=0;__shared__ u32 min_val[32];__shared__ u32 min_tid;for(u32 i=0;i<num_elements;i++){if(tid<num_lists){min_val[s_idx]=0xFFFFFFFF;min_tid=0xFFFFFFFF;}__syncthreads();atomicMin(&min_val[s_idx],data);if(num_reductions>0){__syncthreads();if(tid<num_reductions)atomicMin(&min_val[0],min_val[tid]);__syncthreads();}if(min_val[0]==data)atomicMin(&min_tid,tid);__syncthreads();if(tid==min_tid){list_index[tid]++;dest[i]=data;if(list_index[tid]<per_list)data=src[tid*per_list+list_index[tid]];elsedata=0xFFFFFFFF;}__syncthreads();}}
(在gtx970上此代码没有纯使用atomicMin()(即不采用规约)的算法快,余窃以为是因为在新的设备上256个线程的线程竞争规模能很好的处理,而此算法用到了多次线程同步,从而拖慢了速度)
0 0
- 《cuda并行程序设计》勘误(2)
- 《cuda并行程序设计》勘误(1)
- 《cuda并行程序设计》勘误(3)
- 【CUDA并行程序设计系列(2)】CUDA简介及CUDA初步编程
- 并行程序设计---cuda memory
- 【CUDA并行程序设计系列(3)】CUDA线程模型
- 【CUDA并行程序设计系列(4)】CUDA内存
- 【CUDA并行程序设计系列(1)】GPU技术简介
- 《基于CUDA的并行程序设计》阅读笔记(一)
- 《CUDA并行程序设计-GPU编程指南》读书笔记--(2)CUDA内存处理
- 《CUDA并行程序设计:GPU编程指南》
- 《CUDA并行程序设计:GPU编程指南》
- Intel汇编语言程序设计(第四版) 勘误
- CUDA-CODE5-并行编程(2)
- CUDA并行编程学习心得2
- 《基于CUDA的并行程序设计》学习笔记(二)
- 《基于CUDA的并行程序设计》学习笔记(一)
- CUDA编程(六)进一步并行
- ORTC以及WebRTC的未来【转】
- 设计模式-观察者模式
- java.lang.IllegalArgumentException: Malformed /uxxxx encoding
- CentOS7安装MongoDB3.4(yum安装)
- HttpURLConnection用法详解
- 《cuda并行程序设计》勘误(2)
- Redis相关教程收集
- 部署Zipkin分布式性能追踪日志系统的操作记录
- 构造函数和析构函数
- 02-HDFS的原理和使用操作、编程
- 让自己更值钱的要诀
- Jvm 内存模型之二撩裙边/方法执行
- 研读:Viola:Trustworthy Sensor Notifications for Enhanced Privacy on Mobile Systems
- iOS--CoreText基本用法