Heterogeneous Parallel Programming(异构并行编程)学习笔记(一)

本文是关于Heterogeneous Parallel Programming的学习笔记,主要介绍CUDA编程。内容涵盖GPU与CPU的区别、CUDA计算模型、并行线程阵列、内存模型、CUDA基本函数以及向量加法的示例。CUDA利用GPU的并行计算能力,通过Grid、Block、Thread三级结构实现并行,并通过cudaMalloc等函数管理设备内存。
摘要由CSDN通过智能技术生成

好记性不如烂笔记。以下是在Coursera学习Heterogeneous Parallel Programming时记录的一些要点。


Wiki对Heterogeneous Programming的解释如下:

Heterogeneous computing systems refer to electronic systems that use a variety of different types of computational units. A computational unit could be a general-purpose processor (GPP), a special-purpose processor (i.e. digital signal processor (DSP) or graphics processing unit (GPU)), a co-processor, or custom acceleration logic (application-specific integrated circuit (ASIC) or field-programmable gate array (FPGA)). 

简要的说,就是采用不同类型的计算节点协同进行计算。而Heterogeneous Parallel Programming则是建立在这种机制上的并行计算。这里使用的是的CUDA。CUDA是NVIDIA推出的建立在C语言和GPU基础上的计算框架。详细情况可参考《NVidia CUDA C Programming Guide》。


1. GPU与CPU

GPU与CPU的设计理念不同:GPU旨在提供高吞吐量,而CPU旨在提供低延迟的操作,如下图所示:


CPU需要降低指令的执行时间,所以有很大的缓存,而GPU则不然。单一的GPU线程执行时间相当长,因此总是多线程并行,这样提高了吞吐量。

综上,在串行计算部分应该使用CPU,而并行计算部分则应使用GPU。


2. CUDA计算模型

CUDA中计算分为两部分,串行部分在Host上执行,即CPU,而并行部分在Device上执行,即GPU。

相比传统的C语言,CUDA增加了一些扩展,包括了库和关键字。CUDA代码提交给NVCC编译器,该编译器将代码分为Host代码和Device代码两部分。Host代码即为原本的C语言,交由GCC或其他的编译器处理;Device代码部分交给一个称为实时(Just in time)编译器的组件,在给代码运行之前编译。


3. Device上的并行线程阵列

并行线程阵列由Grid——Block——Thread三级结构组成,如下图所示:


每一个Grid中包含N个Block,每一个Block中包含N个Thread。

这里需要提到SPMD概念:SPMD&#

随着超大规模集成电路技术的不断进步,单芯片上集成了越来越多的晶体管, 目前已达到10亿的量级。然而,受到CMOS工艺特征尺寸的限制,芯片的主频 在达到4GHz之后继续提升的空间有限,多核并行逐渐成为提升处理器计算性能, 同时也是充分利用丰富的片上资源的主要技术途径。4-8核的通用CPU目前已 成为市场主流,而一些专用的处理器如流处理器则包含数十到数百个处理核心。 本文选取目前非常流行也极具发展潜力的一种商用流处理器体系结构——GPU (Graphics Processing Unit)展开相关的研究。 GPU最初仅用于加速图形计算,因此其结构较通用CPU相对简单,不包含 诸如分支预测、乱序执行等耗费芯片资源的复杂逻辑功能,而将晶体管资源更有 效地用于增加并行执行的计算核心,以提升计算性能。GPU的峰值计算性能也因 此远高于同时期的通用CPU。随着GPU指令级功能的逐步完善以及其编程界面 的不断改进,GPU被越来越多地应用到非图形领域的计算,出现了一个全新的 研究领域——GPGPU(General Purpose Computation on GPUs)。利用CPU和GPU 构建异构并行系统,以CPU提供通用的基础计算环境,GPU作为加速阵列提供 强大的峰值计算能力,已成为高性能计算领域一个非常重要的发展趋势。目前, GPU已在高性能计算、桌面计算甚至嵌入式计算等多个领域得到了非常广泛的应 用,因此有关CPU-GPU异构系统以及GPU本身的一系列研究课题也得到广泛关 注,诸如编程模型、编译优化、可靠性优化以及低功耗优化等等。本课题从编程 和编译的角度展开,首先研究了CPU-GPU异构并行系统的编程模型,然后针对 GPU的存储访问展开了深入的分析和优化研究,最后给出了所研究模型的编译实 现和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值