CUDA基础知识

一.CPU和GPU区别

其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache

1)性能(低延时性Latency)与吞吐量(Throughput)

■Cache, local memory: CPU > GPU

■Threads(线程数): GPU > CPU

Registers:GPU > CPU 多寄存器可以支持非常多的Thread,thread需要用到register,thread数目大,register也必须得跟着很大才行

2)CPU:基于低延时性设计(较大cache)

3)GPU:基于吞吐量设计

3. CUDA的结构

■CUDA软件体系可以分为三层结构

■CUDA函数库(CUDA Library)

■CUDA运行时API(Runtime API)

■CUDA驱动API(Driver API)

■CUDA应用程序可以通过直接调用底层的CUDA驱动来调用GPU硬件进行并行计算

■也可以使用对底层驱动进行了一定封装的CUDA运行时库来简化编程过程(二者不可混合使用)

■对一些标准的数学函数计算,也可以直接调用CUFFT、CUBLAS以及CUDPP等标准函数库进一步简化编程过程。                                     

4.CUDA API

CUDA可以通过两种方式调用底层GPU硬件:驱动API和运行API

5 CUDA硬件模式

1.)线程块 :

Kernel核: 可以理解为C/C++中的一个函数function

2)GPU

■SM(streammultiprocessor):  流处理器

■GPU:每个GPU有若干个SM,最少有1个,目前16个算大的,每个SM并行而独立运行

注意三个概念 :一个线程块(线程组) SM(流式的多核处理器),

6.CUDA编程模型

1)CUDA编程模型的原则

2)内存模型

CPU和GPU分别使用各自的内存。在GPU中的线程块中存在一个共享内存

7同步性synchronisation和屏障barrier

1)不同的线程在共享和全局内存中读写数据需要有先后的控制,所以引入了同步性的概念。

2)屏障的作用:用来控制多个线程的停止与等待,当所有线程都到达了屏障点,程序才继续进行

8)CUDA编程模型—示意图

1)GPU程序一般步骤

■1. CPU分配空间给GPU(cudaMalloc)

■2. CPU复制数据给GPU(cudaMemcpy)

■3. CPU加载kernels给GPU做计算

■4. CPU把GPU计算结果复制回来

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值