并行医学图像重建:从图形处理器到网格系统
1. 图形处理器的并行化
1.1 GPU架构与CUDA
现代图形处理器(GPU)可作为数学协处理器,为CPU增添计算能力。GPU是一种并行机器,由单指令多数据(SIMD)多处理器(数量从1到32不等)组成,SIMD多处理器的流处理器被称为着色器单元。GPU(也称为设备)拥有自己的快速内存,容量高达4GB。主板上可同时安装1到4个GPU作为协处理器。例如,实验中使用的NVIDIA GeForce 8800 GTX,提供768MB设备内存,有16个多处理器,每个多处理器包含8个着色器单元。
NVIDIA通过CUDA(计算统一设备架构)为GPU提供了一个编程接口,将线程编程概念引入到C语言中。一组执行相同代码片段(即内核程序)的线程在一个多处理器上运行,该组中的每个线程在GPU的一个着色器单元上运行,每个单元对不同的数据元素执行内核程序。应用程序的所有线程块由调度器分配到各个多处理器上,GPU的设备内存由所有线程共享。
1.2 列表模式OSEM的CUDA实现
在GPU上对一个子集进行计算的步骤如下:
1. CPU读取子集事件并将其复制到GPU设备内存。
2. 每个线程计算cl的部分和,并直接将其添加到设备内存。每个线程处理的事件数量需综合考虑:一方面,应尽可能启动更多线程以有效隐藏内存延迟;另一方面,每个线程需在设备内存中保存部分结果,若为每个事件启动一个线程,会占用过多内存。因此,启动的线程数量应使所有部分结果仍能存入设备内存。
3. 每个线程计算fl + 1 = flcl的一个体素值。
4. 将fl + 1复制回CPU。
在计算cl时
超级会员免费看
订阅专栏 解锁全文
4092

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



