本篇结构
- 前言
- 概论
- CPU简介
- GPU简介
- 并行计算
- CPU/GPU对比
- 适于GPU计算的场景
- GPU开发环境
- 参考博文
一、前言
因为工作需要,需要从github上找一个CUDA的DBSCAN聚类实现,刚开始从github上获取到的代码只支持二维数据,为了适配多维数据,要对代码简单改造,这就需要了解CUDA编程模式。之前没有接触过GPU编程相关概念,甚至于没有学过c语言,加上脑袋笨重,费了好些功夫,才让CUDA DBSCAN运行起来。
为了方便自己后面回顾,所以将涉及到的知识点简单串联起来,并加以记录。
如果可以,也希望给其他朋友一些can参考(肯定是有很多不足,还望海涵)。
二、概论
由于其设计目标的不同,GPU和CPU分别针对了两种不同的应用场景。
CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。
而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
于是CPU和GPU就呈现出非常不同的架构(图可以从CUDA官网找到https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#axzz4YFZTibzg):
三、CPU简介
CPU (Central Processing Unit) 即中央处理器,是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。
CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。
CPU是基于低延时的设计,简单来说包括:计算单元、控制单元和存储单元,架构可参考下图:
CPU的特点是:
(1)CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算
当今的CPU可以达到6