【CUDA编程】学习笔记(一) Hello CUDA

前言

本系列博客做为CUDA编程学习的笔记,因为最近比较忙,内容从简,只做一些大体的记录。作为初学者,错误之处还请见谅。

一、什么是GPU

GPU的全称是Graphics Processing Unit,即图形处理器,是进行图像运算的微处理器。
GPU具有高速的浮点运算能力和带宽,并且应用广泛。
从浮点运算来讲,GPU的运算速度是等价位CPU的几十倍。

GTX980理论计算能力是4.6TFLOPs,即4.6×10^12/s
⾄强E5 2640 v2的浮点计算能力约为0.2TFLOPs
前者大约是后者的23倍

带宽角度可以看下面这个例子:

GTX980的显存带宽是224GB/s
DDR3 2133的显存带宽是16.6GB/s
前者大约是后者的13.5倍

二、英伟达GPU的架构(简要)

【CUDA编程】学习笔记(一) Hello CUDA_第1张图片
上图可以发现,CPU有若干个核心,每个CPU有一个本地的存储,处理器之间共享一块全局内存。而GPU一个处理器有一组核心构成。简单的说,一个是多核,一个是众核。
图中GPU一个Processor和Memory构成一个Streaming Multi-processor(SM)
【CUDA编程】学习笔记(一) Hello CUDA_第2张图片

三、Hello CUDA

下面简单介绍一下CUDA编程的语法:
【CUDA编程】学习笔记(一) Hello CUDA_第3张图片
大体有这么几个过程:分配显存→数据从主机复制到GPU→调用内核函数→数据从GPU复制回主机→释放显存
【CUDA编程】学习笔记(一) Hello CUDA_第4张图片

四、阿姆达尔定律

【CUDA编程】学习笔记(一) Hello CUDA_第5张图片
其中rs = ts / (ts + tp)

你可能感兴趣的:(CUDA编程)