简介
毕业工作以来从事深度学习方面工作,但在实际项目中需要对项目进行加速,因此需要学习cuda,此笔记简略记录学习cuda的历程。
GPU基本概念
什么是cuda?
- CUDA是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务。
- 而我们常说的CUDA其实一个gpu编程库,他以c/c++为基础提供一些gpu编程接口。
GPU分类?
gpu类别是有很多种,按照不同的领域可以分为高性能计算的、专业制图的、桌面版本的,如下表所示:
类别 | 显卡 | 计算能力 | 单精度性能(TFLOPS) | 显存 | CUDA CORE |
---|---|---|---|---|---|
高性能计算 | TeslaV100,P100 | 暂无,6.0 | 14,9.3 | 16G,16G | 5120,3584 |
专业制图 | Quadro P6000 | 6.1 | 12 | 24G | 3840 |
桌面GPU | NVIDIA TITANX | 6.1 | 11 | 12 | 3584 |
每秒浮点运算次数:1TFLOPS = 每秒10^11次浮点运算。
影响GPU计算能力的因素?
- 时钟频率
- (CUDA cores) 并行计算的核心处理器的数目.
- 内存大小
- 内存带宽 (Bandwidth, 指数据传输的速度)
- GPU/CPU之间通讯的带宽.
GPU编程模型
gpu编程模型如下:
- 线程级并行(核函数)
- cpu+GPU同工作
- 内存+显存同时利用
- CPU和GPU通信
- 串行或部分并行(CPU)+并行(GPU)
CPU和GPU数据通信模型
- 首先cpu数据需要从内存拷贝到显存,中间的传输介质使用的是PCI bus。
然后执行gpu代码,gpu访问显存并完成计算。
gpu计算完将结果拷贝到cpu内存中。