Cuda异步计算并行编程设计和优化

基于Cuda开发GPUGPU程序时,最重要的仍然是内核的设计,这是Cuda性能优化的难点,提供了不少岗位,养活了一大批工程师。这里以一个相对简单的的求平方和算法为例,从编程和优化,调试几个维度,介绍利用cuda开发并行计算程序时的关注点。

算法描述

平方和算法是一种缩减算法,缩减算法指的是从多个数据中提炼出较少的数据的一类算法,在统计中求和,找最值,均值,和方差等应用中,以及在图像处理中求一副图像的总亮度等,都是缩减算法。公式为:

sum = \sum_{i = 0}^{n-1} x^2_i

CUDA并行编程方法

得益于数量巨大的核心数量,GPU具有强大的并行计算能力,但是它的局限性也很明显,GPU从单核的结构和ISA性能上讲,计算能力远不如CPU,优势是胜在核多。CPU有复杂的存储器缓冲系统,先进的指令缓存系统和强大的分支预测能力。而GPU中的标量处理器结构相对简单,甚至都不要求是图灵完备的(早期的GPU甚至都不支持条件分支)。CPU支持顺序执行,高效循环和跳转,而GPU相对简单的结构使它较适合处理顺序的,单一的,少循环,少跳转的语句。所以在由GPU和CPU构成的异构系统中,GPU不能独立运行。CUDA编程作为一种实现也不例外。CUDA开发的典型模式为:首先由主机分配主机端和设备端的内存,之后再将计算数

你可能感兴趣的:(GPU,CUDA,GPGPU,CUDA)