5

NVIDIA CUDA2023春训营(一)GPU 与 CUDA 简介

 1 year ago
source link: https://alex-mcavoy.github.io/nvidia/cuda-spring-bootcamp/1c5747fe.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

NVIDIA CUDA2023春训营(一)GPU 与 CUDA 简介

2023-02-06NVIDIACUDA春训营

3
1.3k 1 分钟

在 GPU 出现之前,对于各种绘制计算机图形所需的运算,包括顶点设置、光影、像素操作等,都是由 CPU 配合特定软件实现的

图形处理器(Graphic Processing Unit,GPU)本质上是一组图形函数的集合,专门用于处理绘制计算机图形所需的运算,而这些函数由硬件实现,因此,GPU 从某种意义上讲就是为了在图形处理过程中充当主角而出现的

近年来,GPU 最成功的一个应用就是深度学习领域,基于 GPU 的并行计算已经成为训练深度学习模型的标配

GPU 的运算类型

适合 GPU 运算的运算类型有以下六种:

  1. 大量的轻量级运算:大量数据或同一数据多次调用同一公式或计算过程,公式本身并不复杂,只是执行的次数较多
  2. 高度并行:各数据间运算互不影响,耦合度较低
  3. 计算密集型:少量的 IO 读取与大量的计算
  4. 控制简单:逻辑简单的运算
  5. 多阶段执行:运算程序可分解为多个小程序或者同一程序可分多个阶段执行
  6. 浮点型运算:浮点数参与的运算

异构计算架构

GPU 并不是一个独立运行的计算平台,其需要与 CPU 协同工作,可以看成是 CPU 的协处理器,因此当在谈及 GPU 并行计算时,其实是指基于 CPU+GPU 的异构计算架构,GPU 与 CPU 通过 PCIe 总线连接在一起来协同工作,CPU 所在位置称为为主机(host)端,而 GPU 所在位置称为设备(device)端

01-1.png

CPU 上的线程是重量级的,上下文切换开销大,但是 GPU 由于的核心远多于 CPU,其线程是轻量级的,因此,基于 CPU+GPU 的异构计算平台可以优势互补,CPU 负责处理逻辑复杂的串行程序,而 GPU 重点处理数据密集型的并行计算程序,从而发挥最大功效

统一计算设备架构(Compute Unified Device Architecture,CUDA)是一种由 NVIDIA 推出的通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题,其包含 CUDA 指令集架构以及 GPU 内部的并行计算引擎

同时,CUDA 提供了 GPU 编程的简易接口,基于 CUDA 编程可以构建基于 GPU 计算的应用程序,支持 C/C++,Python,Fortran 等编程语言

简单来说,CUDA 是建立在 NVIDIA 的 GPUs 上的一个通用并行计算平台和编程模型,基于 CUDA 编程可以利用 GPUs 的并行计算引擎来更加高效地解决比较复杂的计算难题

CUDA 编程模型

CUDA 编程模型是一个异构模型,需要 CPU 和 GPU 协同工作

在 CUDA 中,host 端和 device 端是两个极为重要的概念,host 端指代 CPU 及其内存,device 端指代 GPU 及其显存,一个 CUDA 程序中既包含 host 程序,又包含 device 程序,它们分别在 CPU 和 GPU 上运行

同时,host 端与 device 端之间可以进行通信,从而实现两者间的数据拷贝

01-2.png

对于 CUDA 程序,其在 host 端与 device 端的执行流程如下:

  1. 分配 host 端内存,并进行数据初始化
  2. 分配 device 端内存,并从 host 端将数据拷贝到 device 端上
  3. 调用 CUDA 的核函数在 device 端上完成指定的运算
  4. 将 device 端上的运算结果拷贝到 host 端上
  5. 释放 device 端和 host 端上分配的内存
感谢您对我的支持,让我继续努力分享有用的技术与知识点!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK