Intro to Parallel Programming CUDA - Udacity 458
https://www.youtube.com/playlist?list=PLGvfHSgImk4aweyWlhBXNF6XISY3um82_
这是udacity的一个cuda并行编程的视频笔记,网址在上,翻墙即得。
顺便附上源码:https://github.com/aramadia/udacity-cs344
这是原视频的Unit3, 之前的笔记暂未整理,有空附上。
Reduce
reduce操作: 对二元可结合运算(没有先后顺序),前一项结果作为后一项输入。
- a) Binary
- b) Associativity
并行reduce: 两两结合, 复杂度:log2(n)
编程实现:
比如我们要reduce 1024*1024的矩阵
我们会运行1024个block, 每个block开1024个线程。
每个block中将后一半加到前一半,直到值归到第一个线程,将1024*1024 reduce为1024,再用一个block reduce到一个值。
kernel:
reduce with global memory:

本文是Udacity的CUDA并行编程课程笔记,介绍了Reduce、Scan和Histogram的概念与实现。Reduce操作通过二元可结合运算进行并行计算,复杂度为log2(n)。Scan包括Hillis & Steele’s算法和Blelloch扫描算法,不同算法具有不同的计算复杂度。Histograms部分探讨了直方图统计的不同方法,包括原子操作、线程局部直方图和按键排序后再归约。
Reduce & Scan & Histogram&spm=1001.2101.3001.5002&articleId=81429511&d=1&t=3&u=a88fe4a075854b26a9275d7fa6777a38)
4万+

被折叠的 条评论
为什么被折叠?



