CPU和GPU计算的优缺点分析

news/2024/9/23 6:34:06/

CPUGPU都是具有运算能力的芯片,CPU更像“通才”——指令运算(执行)为重+数值运算,GPU更像“专才”——图形类数值计算为核心。在不同类型的运算方面的速度也就决定了它们的能力——“擅长和不擅长”。芯片的速度主要取决于三个方面:微架构,主频和IPC(每个时钟周期执行的指令数)

  1. 微架构

CPU微架构的设计是面向指令执行高效率而设计的,因而CPU是计算机中设计最复杂的芯片。和GPU相比,CPU核心的重复设计部分不多,这种复杂性不能仅以晶体管的多寡来衡量,这种复杂性来自于实现:如程序分支预测,推测执行,多重嵌套分支执行,并行执行时候的指令相关性和数据相关性,多核协同处理时候的数据一致性等等复杂逻辑。

GPU其实是由硬件实现的一组图形函数的集合,这些函数主要用于绘制各种图形所需要的运算。这些和像素,光影处理,3D坐标变换等相关的运算由GPU硬件加速来实现。图形运算的特点是大量同类型数据的密集运算——如图形数据的矩阵运算,GPU的微架构就是面向适合于矩阵类型的数值计算而设计的,大量重复设计的计算单元,这类计算可以分成众多独立的数值计算——大量数值运算的线程,而且数据之间没有像程序执行的那种逻辑关联性。

因此从微架构上看,CPU擅长的是像操作系统、系统软件和通用应用程序这类拥有复杂指令调度、循环、分支、逻辑判断以及执行等的程序任务。它的并行优势是程序执行层面的,程序逻辑的复杂度也限定了程序执行的指令并行性,上百个并行程序执行的线程基本看不到。GPU擅长的是图形类的或者是非图形类的高度并行数值计算,GPU可以容纳上千个没有逻辑关系的数值计算线程,它的优势是无逻辑关系数据的并行计算。

  1. 主频

GPU执行每个数值计算的速度并没有比CPU快,从目前主流CPUGPU的主频就可以看出了,CPU的主频都超过了2GHz,甚至3GHz,而GPU的主频最高还不到2GHz,主流的也就1GHz。所以GPU在执行少量线程的数值计算时速度并不能超过CPU

目前GPU数值计算的优势主要是浮点运算,它执行浮点运算快是靠大量并行,但是这种数值运算的并行性在面对程序的逻辑执行时毫无用处。

  1. IPC(每个时钟周期执行的指令数)

这个方面,CPUGPU无法比较,因为GPU大多数指令都是面向数值计算的,少量的控制指令也无法被操作系统和软件直接使用。如果比较数据指令的IPCGPU显然要高过CPU,因为并行的原因。但是,如果比较控制指令的IPC,自然是CPU的要高的多。原因很简单,CPU着重的是指令执行的并行性。

另外,目前有些GPU也能够支持比较复杂的控制指令,比如条件转移、分支、循环和子程序调用等,但是GPU程序控制这方面的增加,和支持操作系统所需要的能力CPU相比还是天壤之别,而且指令执行的效率也无法和CPU相提并论。


总结一下:

CPU更适合处理逻辑控制密集的计算任务,而GPU适合处理数据密集的计算任务。并且由于现代CPU的发展,使得CPU与计算机主存的交换速度要远远大于GPU与计算机主存的交换速度,因此GPU更适合处理SIMDSingleInstruction MultiData,单数据多指令)的运算,即将数据放到显存中进行多次计算的计算任务。
目前比较流行CPU+GPU的协同计算模型,在这个模型中,CPUCPU协同工作,各司其职。CPU负责进行逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务。CPUGPU各自拥有相互独立的存储器地址空间:主机端的内存和设备端的显存。


http://www.ppmy.cn/news/307018.html

相关文章

GPU 计算能力(Compute Capability)那些事儿 以及 编译caffe/pytorch/tensorflow时怎样设置计算能力?

每日一歌,分享好心情: 你莫走 关于nvidia计算能力的一切,看完这篇文章足够用了… 一、常见gpu卡计算能力查询 https://developer.nvidia.com/cuda-gpus#compute 部分gpu计算能力: 二、计算能力是什么东东 计算能力&#xff…

NVIDIA 不同显卡对应的GPU计算能力

Fermi (CUDA 3.2 until CUDA 8) (deprecated from CUDA 9): SM20 or SM_20, compute_30 – Older cards such as GeForce 400, 500, 600, GT-630Kepler (CUDA 5 and later): SM30 or SM_30, compute_30 – Kepler architecture (generic – Tesla K40/K80, GeForce 700, GT-730…

近距离看GPU计算(2)

在《近距离看GPU计算》系列第一篇里我们介绍了GPU的一些基础知识及其如何从图形加速设备演化到通用计算平台。本文我们会具体从处理单元设计和存储层次结构两个方面探讨GPU不同于CPU的特点,再次确认我们反复申明的GPU更重视整体的Throughput而CPU更在乎具体任务的La…

C# 调用GPU计算(Alea库、英伟达GPU)

关于C#调用GPU计算&#xff0c;下面是stackoverflow的一段总结&#xff1a; 链接&#xff1a;<https://stackoverflow.com/questions/375011/utilizing-the-gpu-with-c-sharp> &#xff1a; Most of these answers are quite old, so I thought Id give an updated sum…

Tensorflow多GPU计算

下面的代码都是在tensorflow版本 1.8 运行的Tensorflow 使用GPU训练的时候一个小说明 1. tensorflow 默认占满所有可用GPU 2. 如果一台机器上有多个GPU&#xff0c;那么默认只会有第一块GPU参与计算&#xff0c;其余的会白白浪费掉单机单卡 常规操作&#xff0c;省略单机多卡…

boost.compute使用gpu计算(c++)

boost.compute https://github.com/boostorg/compute 编译错误 cl.h找不到 下载opencl的头文件&#xff0c;icd&#xff08;源码&#xff09;和demo https://gitee.com/zhanghe666/OpenCL-Headers.git https://gitee.com/zhanghe666/OpenCL-ICD-Loader.git https://gitee.co…

GPU平台并行计算

1、GPU架构概述 GPU是一种众核架构&#xff0c;非常适合解决大规模的并行计算。GPU是CPU的协处理器&#xff0c;必须通过PCIe总线与基于CPU的主机&#xff08;Host&#xff09;相连来进行操作&#xff0c;形成异构架构&#xff0c;如下图所示。其中CPU为主机端&#xff08;Hos…

Windows系统下实现Fortran语言的GPU计算

1.安装 visual studio2015ivf2017update4 2.安装Windows SDK 10&#xff0c;这一步取决于第三步安装PGI时是否提示需要安装WindowsSDK 3.安装PGI CE 18.4 注意事项&#xff1a; 1.三个软件必须安装在同一个盘下&#xff0c;否则安装后的PGI CE 无法编译。因为Windows10 SD…