CUDA编程入门系列(一) 什么是GPU运算?

一、GPU架构

        下图为Tesla C2050的GPU架构,其核心由16个组所构成,其中红色方框为单个组的示例,称为SM(Stream Multiprocessor), 每个SM里面又有32个SP(Stream Processor)(即小绿快)

下图为Fermi的GPU架构,其由16个SM组成,每个SM中含有32个SP core。

 

下图为其他类型的GPU架构,其有三级的结构,第一级为GPC(图像处理簇),第二级为SM, 第三级为SP,其中每个GPC由16个SM组成,每个SM里有32个SP。

二、什么是GPU计算 

        NVIDIA公司发布了CUDA,它是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。
        GPU并不是一个独立运行的计算平台,而需要与CPU协同工作,可以看成是CPU的协处理器,因此当我们在说GPU并行计算时,其实是指的基于CPU+GPU的异构计算架构。
        在异构计算架构中,GPU与CPU通过PCle总线连接在一起来协同工作。CPU所在位置称为为主机端(host),而GPU所在位置称为设备端(device).

三、为什么要使用GPU计算

        GPUs的并行计算引擎强大,可以大幅度加快计算速度,例如15倍左右

        机器学习以及人工智能需要训练模型,需要大量的计算,特别是稠密矩阵向量计算,GPU可以快十倍以上。 GPU最成功的一个应用就是深度学习领域,基于GPU的并行计算已经成为训练深度学习模型的标配。

四、CPU与GPU的分工与协作

        GPU包括更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算。
        CPU的运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合挫制密集型任务。
        CPU上的线程是重量级的,上下文切换开销大,GPU由于存在很多核心,其线程是轻量级的。
        基于CPU+GPU的异构计算平台可以优势互补,CPU负责处理逻辑复杂的串行程序,而GPU重点处理数据密集型的并行计算程序,从而发挥最大功效。

        CPU和GPU通过PCIe总线连接在一起来协同工作.CPU和GPU各自拥有自己的内存。

 

五、CUDA程序架构

        其中Host代表CPU,Device代表GPU。一般在CPU做初始化和逻辑控制,如果需要并行控制的话,就把数据放到GPU上进行运算,再返回到CPU上进行处理。

六、语言选取

         CUDA是NVIDIA公司所开发的GPU编程模型,它提供了GPU编程的简易接口,基于CUDA编程可以构建基于GPU计算的应用程序。
        CUDA提供了对其它编程语言的支持,如C/C++,Python,Fortran等语言,这里我们选择CUDA C/C++接口对CUDA编程进行讲解。

七、编译器

        CUDA: NVIDIA, latest CUDAv10, nvcc
        Windows, Mac OSX, Linux
        Linux:Fedora, Ubuntu, RHEL, CentOs
        推荐Linux :1)容易写编译脚本, Makefile; 2)很多命令行可以尝试;3)轻量级操作环境;4)免费

八、CUDA工具

        编译器:nvcc(C/C++)
        调试器: nvcc-gdb
        性能分析: nsight, nvprof
        函数库: cublas, nvblas, cusolver, cufftw, cusparse, nvgraph

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值