计算机软硬件(杂):GPU与CPU的对比

初步了解一下GPU和CPU的区别,尤其是GPU为什么能够加速运算

简要对比

背景

==CPU(central processing unit)==:一台计算机包含处理器、输入输出部件、内存、总线等部件,其中,CPU是一台计算机中用于执行指令的核心部件, 由数百万个晶体管构成,可以有多个核也就是多核。

==GPU(graphics processing unit)==:也是一种处理器,由许多更小、更专业的内核组成。将一个处理任务划分并跨多个内核处理时。

  • GPU 最初设计用于为计算机图形和视频游戏机创建图像,但自 2010 年初以来,GPU 还用于加速涉及量数据的计算。
  • CPU 永远无法完全被 GPU 取代:GPU 通过允许应用程序内的重复计算并行运行,而主程序继续在 CPU 上运行,从而补充了 CPU 架构。CPU 可以被认为是整个系统的任务主管,协调广泛的==通用==计算任务,而 GPU 执行范围更窄的更专业的任务(通常是数学任务)。与 CPU 相比,GPU 可以利用并行性的力量在相同的时间内完成更多的工作。
  • 简言之:CPU更通用且智能,GPU功能窄但是特定任务可以很快。

区别

  • 图:GPU有更多晶体管,更多计算单元
  • 图:在 CPU 上,每个线程都会最小化数据访问时间(白条)。在单个时间片内,线程尽可能多地完成工作(绿色条)。为了实现这一点,CPU 需要低延迟,这需要大缓存和复杂的控制逻辑。缓存在每个核心只有几个线程时工作得最好,因为线程之间的上下文切换很昂贵
  • 而GPU则可以频繁切换线程完成运算,同时运行上千个进程,从而大幅提高数据吞吐量。

共同点:两者都是关键的计算引擎;两者都是基于硅的微处理器。区别:

  • CPU 具有庞大而广泛的指令集,可以管理计算机的每个输入和输出, 适用于各种各样的工作负载,尤其是那些延迟或每核性能很重要的工作负载。作为一个强大的执行引擎,CPU 将其较少数量的内核集中在单个任务和快速完成任务上。
  • CPU串行计算,GPU 最适合重复性和高度并行的计算任务,可以加速 CPU 在给定时间内可以处理的数据量。除了视频渲染,GPU 在机器学习、金融模拟和风险建模以及许多其他类型的科学计算方面表现出色。
  • 数量,单个CPU的核数通常较少,但如果向同一台服务器添加 4 到 8 个 GPU 可以提供多达 40,000 个额外的内核。
  • 单个 CPU 内核比单个 GPU 内核更快(根据 CPU 时钟速度衡量)和更智能(根据可用指令集衡量)
  • ……

显卡

关于显卡

显卡是包含GPU(主要部件)的一个拓展卡,一些点:

  • 显卡也称独立显卡,具有独立的随机存取存储器(RAM)、冷却系统和专用电源调节器等。
    • 俗称的显存也就是显卡的运行内存
  • 集成显卡是集成到主板或其他系统上的视频硬件,成本低、体积小、简单、能耗低。集成显卡的性能通常不如显卡,因为集成显卡内部的图形处理单元需要与 CPU 共享系统资源
  • 随着显卡处理能力的提高,对电力的需求随之增加。当前的高性能显卡往往会消耗大量电力
  • 一些图形卡可以链接在一起,以允许跨多个卡扩展图形处理。这是使用主板上的 PCIe 总线或更常见的数据桥来完成的。一般情况下,卡必须是同一型号才能联动,大多数低端卡都不能这样联动。
  • 截至 2016 年,显卡中使用的 GPU(图形芯片或芯片组)的主要供应商是 AMD 和 Nvidia
  • OpenCLCUDA等计算平台允许使用显卡进行通用计算

OpenCL与CUDA

OpenCL(开放计算语言)是一个框架,用于编写跨异构平台执行的程序,包括CPU GPU DSP及其他处理器或硬件加速器。OpenCL 指定用于对这些设备和应用程序编程接口进行编程的编程语言API(基于C99、C++14和C++17 )来控制平台并在计算设备上执行程序。OpenCL 为使用基于任务和数据的并行性的并行计算提供标准接口

CUDA 由Nvidia创建,之前的 API(如Direct3D和OpenGL)需要高级图形编程技能,CUDA 则可以与C、C++和Fortran等编程语言一起使用,这种可访问性使并行编程专家更容易使用 GPU 资源。CUDA(或计算统一设备架构)是一种并行计算平台和应用程序编程接口(API),它允许软件使用某些类型的图形处理单元(GPU) 进行通用处理,这种方法称为 GPU 上的通用计算 ( GPGPU ) )。CUDA 是一个软件层,可以直接访问 GPU 的虚拟指令集和并行计算元素,以执行计算内核。

cuda python:CUDA® Python 为 CUDA 驱动程序和运行时 API 提供 Cython/Python 包装器;现在可以使用 PIP 和 Conda 安装。Python 开发人员将能够利用大规模并行 GPU 计算来获得更快的结果和准确性

参考

  1. 书籍《计算机组成与体系结构》
  2. https://www.heavy.ai/technical-glossary/cpu-vs-gpu
  3. CPU vs. GPU: Making the Most of Both
  4. https://developer.nvidia.com/blog/cuda-refresher-reviewing-the-origins-of-gpu-computing/