1. GPU 简介
处理器一般包含以下几部分:Cache 缓存,ALU 计算单元,Control 控制中心,RAM 内存。
CPU(Central Processing Unit):中央处理器。适合进行逻辑,ALU计算核心较少。适合控制性密集任务。
GPU(Graphics Processing Unit):图形处理器。也称显卡(graphics card),适合进行密集数据运算,包含大量ALU计算核心。
1.2 CPU与GPU的主要区别:
一个典型的CPU拥有少数几个快速的计算核心,而一个典型的GPU拥有几百到几千个不那么快速的计算核心。
CPU中有更多的晶体管用于数据缓存(cache)和流程控制(control),但GPU中有更多的晶体管用于算术逻辑单元(ALU)。
GPU的浮点运算峰值比同时期的CPU高一个量级。而GPU的内存带宽峰值也比同时期CPU高一个量级。GPU是靠众多的计算核心来获得相对较高的计算性能的。
CPU与GPU都有一个动态随机存取存储器,通过PCle总线进行交互。
1.3 CPU+GPU异构架构
异构计算(heterogeneous computing): GPU本身并不能单独计算,CPU+GPU组成异构(heterogenerous)计算架构;
一块单独的GPU是无法独立完成所有计算任务的,它必须在CPU的调度下才能完成特定任务。
CPU起到控制作用,称为Host,主机。
GPU作为CPU的协处理器,一般称为Device,设备。
主机和设备之间都有自己的DRAM(Dynamic Random-Access Memory,动态随机存取内存),内存访问一般通过PCLe总线连接。
1.4 GPU性能指标
1.核心数
2.GPU显存容量 ,可计算量越大
3.GPU计算峰值,最大计算能力
GPU并不是计算能力越高,性能就越高,两者之间没有简单的正比关系。表征计算性能的一个重要参数式浮点数的运算峰值,即每秒最多能执行的浮点数运算次数,英文维 Floating-point operations per second,缩写维 FLOPS。GPU的浮点数运算峰值在10^12 FLOPs,即teraFLOPS量级。
浮点数运算峰值有单精度和双精度之分。对于计算双精度还是Tesla好,GeForce双精度就差很多。
4.显存带宽:运算单元与显存的传输速率,带宽越大,交换速率越大
GPU中的内存常称为显存。显存容量是制约应用程序性能的一个因素。
2. 什么是CUDA?(异构编程语言)
CUDA(compute unified device architecture):统一计算设备架构。CUDA是建立在NVIDIA的CPU上的一个通用并行计算平台和编程模型,是一个软件平台,配合GPU使用。目前支持CUDA编程的只有英伟达Nvidia公司推出的GPU,如Quadro OpenGL渲染,专业绘图设计,GeForce游戏娱乐,科学计算,Jetson嵌入式设备。
其他异构编程语言,如OpenCL(open computing language),OpenACC(open accelerators),和CUDA Fortan。
OpenCL是一个更为通用的为各种异构平台编写并行程序的框架,是AMD(Ad vanced Micro Devices)公司的 GPU 的主要程序开发工具。
2.1 CUDA运行时API
CUDA提供两层API接口:CUDA 驱动(driver)API 和 CUDA 运行时(runtime)API。
CUDA驱动API:是更底层的API,为程序员提供了更为灵活的编程接口。
CUDA运行时API:是在CUDA驱动API的基础上构建的一个更为高级的API。
从程序的可读性来看,用CUDA运行时API是更好的选择。在其他编程语言中使用CUDA的时候,驱动API很多时候是必需的。两种API调用性能几乎无差异。
CUDA的版本是GPU软件开发平台的版本,在CUDA C++程序中,既有运行于主机的代码,也有运行于设备的代码。其中,运行于主机的代码需要由主机 的C++编译器编译和链接。
2.2 GPU模式
GPU处于WDDM(windowsdisplaydrivermodel)模式。另一个可能的模式是TCC (tesla compute cluster)
2.3 GPU计算模式
Default :在默认模 式中,同一个GPU中允许存在多个计算进程,但每个计算进程对应程序的运行速度 一般来说会降低。
E.Process,指的是独占进程模式(exclusiveprocess mode),但不适用于处于WDDM模式的GPU。在独占进程模式下,只能运行一个计算进程独占该GPU。
参考文章:
cuda编程(一)cuda简介-CSDN博客