CUDA相关知识科普

显卡

显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。就像电脑联网需要网卡,主机里的数据要显示在屏幕上就需要显卡。因此,显卡是电脑进行数模信号转换的设备,承担输出显示图形的任务。具体来说,显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来。原始的显卡一般都是集成在主板上,只完成最基本的信号输出工作,并不用来处理数据。随着显卡的迅速发展,就出现了GPU的概念,显卡也分为独立显卡和集成显卡

GPU

GPU这个概念是由Nvidia公司于1999年提出的。GPU是显卡上的一块芯片,就像CPU是主板上的一块芯片。那么1999年之前显卡上就没有GPU吗?当然有,只不过那时候没有人给它命名,也没有引起人们足够的重视,发展比较慢。自Nvidia提出GPU这个概念后,GPU就进入了快速发展时期。简单来说,其经过了以下几个阶段的发展:1)仅用于图形渲染,此功能是GPU的初衷,这一点从它的名字就可以看出:Graphic Processing Unit,图形处理单元;2)后来人们发现,GPU这么一个强大的器件只用于图形处理太浪费了,它应该用来做更多的工作,例如浮点运算。怎么做呢?直接把浮点运算交给GPU是做不到的,因为它只能用于图形处理(那个时候)。最容易想到的,是把浮点运算做一些处理,包装成图形渲染任务,然后交给GPU来做。这就是GPGPU(General Purpose GPU)的概念。不过这样做有一个缺点,就是你必须有一定的图形学知识,否则你不知道如何包装。

GPU和显卡的关系

一句话理解就是:GPU是显卡上的一块芯片

CUDA

CUDA(Compute Unified Device Architecture),通用并行计算架构,是一种运算平台。它包含CUDA指令集架构以及GPU内部的并行计算引擎。你只要使用一种类似于C语言的CUDA C语言,就可以开发CUDA程序,从而可以更加方便的利用GPU强大的计算能力,而不是像以前那样先将计算任务包装成图形渲染任务,再交由GPU处理。CUDA 不仅仅是一个 GPU 计算的框架,它对下抽象了所有的英伟达出品的 GPU,对上构建了一个通用的编程框架,它实质上制定了一个 GPU 和上层软件之间的接口标准。**一句话理解CUDA就是提供了软件与硬件之间通信的接口。**在所有的半导体公司中,制定出软件与硬件之间的标准,而且现在还算成功的,只有 3 个,一个是 x86 指令集,一个是 ARM 指令集,还有一个就是 CUDA 了。

NVIDIA的不同系列的产品

GeForce系列:GeForce 系列是 NVIDIA 面向个人电脑和游戏市场的产品线。这些 GPU专为游戏和多媒体应用程序而设计,提供高性能的图形处理能力,以实现更好的游戏体验和图形渲染效果。GeForce产品系列包括高端、中端和入门级别的图形卡,适用于各种游戏需求。

Quadro系列:Quadro 系列是专业工作站 GPU,专为专业图形和计算应用程序而设计。这些产品通常用于视频编辑、计算机辅助设计(CAD)、科学计算、虚拟现实和仿真等领域,提供更高的精度、可靠性和性能,以满足专业用户的需求。

Tesla系列:Tesla 系列是面向高性能计算和数据中心应用的GPU加速器。这些产品旨在加速科学计算、深度学习、人工智能等高性能计算工作负载,提供高度并行的计算性能和大规模数据处理能力。Tesla GPU 通常用于大规模数据中心、研究机构和企业级计算集群。

NVIDIA A100系列:NVIDIA A100 Tensor Core GPU 是 NVIDIA 最新的数据中心加速器,专为深度学习和高性能计算而设计。它采用了最新的架构和 Tensor Core 技术,提供卓越的 AI 性能和加速计算,适用于云计算、超级计算机和机器学习领域。

NVIDIA Jetson系列:Jetson 系列是嵌入式 AI 计算平台,旨在为边缘设备提供深度学习和计算能力。这些产品适用于机器人、自动驾驶汽车、智能摄像头、工业自动化等应用,使设备能够进行实时的AI推断和处理。

NVIDIA DGX系列:DGX 系列是 NVIDIA 的深度学习工作站和数据中心解决方案,集成了多个 NVIDIA GPU 和深度学习软件,旨在为深度学习研究人员和数据科学家提供高性能的深度学习平台。

NVIDIA Drive系列:Drive 系列是 NVIDIA 面向自动驾驶和智能交通解决方案的产品线。这些产品包括 Drive AGX 系统,用于自动驾驶汽车和自动驾驶解决方案的开发。

NVIDIA不同产品型号列举

GeForce 系列(面向个人电脑和游戏市场):

GeForce RTX 3090

GeForce RTX 3080

GeForce RTX 3070

GeForce RTX 3060 Ti

GeForce RTX 3060

GeForce GTX 1660 Ti

GeForce GTX 1660 Super

GeForce GTX 1650
Quadro 系列(专业工作站 GPU):

Quadro RTX 8000

Quadro RTX 6000

Quadro RTX 5000

Quadro P5000

Quadro P4000

Quadro K2200

Quadro K1200
Tesla 系列(数据中心加速器):

Tesla V100

Tesla P100

Tesla K80

Tesla T4

Tesla A100
NVIDIA A100 系列(数据中心加速器):

NVIDIA A100 80 GB

NVIDIA A100 40 GB
NVIDIA Jetson 系列(嵌入式 AI 计算平台):

NVIDIA Jetson Xavier NX

NVIDIA Jetson Xavier AGX

NVIDIA Jetson Nano

NVIDIA Jetson TX2
NVIDIA DGX 系列(深度学习工作站和数据中心解决方案):

NVIDIA DGX A100

NVIDIA DGX Station A100

NVIDIA DGX-1
NVIDIA Drive 系列(自动驾驶和智能交通解决方案):

NVIDIA Drive AGX Xavier

NVIDIA Drive AGX Pegasus

NVIDIA Drive PX2

提供多GPU的产品系列型号列举

NVIDIA Tesla系列 :Tesla是专为数据中心和高性能计算而设计的GPU加速卡,它们通常支持多GPU配置。例如,NVIDIA Tesla V100、Tesla P100 和Tesla A100都可以在数据中心服务器上配置多张卡以提供更大的并行计算性能。
NVIDIA Quadro系列 :Quadro是专业工作站GPU,支持多GPU配置,以加速专业图形和计算应用程序。多GPU配置通常用于CAD、虚拟现实和科学计算工作站。
NVIDIA DGX系列 :DGX系列是深度学习工作站和数据中心解决方案,通常包括多张GPU卡,以提供大规模的深度学习计算性能。例如,NVIDIA DGX A100可以配置多张A100 GPU卡。
NVIDIA NVLink技术:NVIDIA的NVLink技术允许多张GPU卡之间进行高速互联,以实现更好的通信和协作。这种技术通常在支持NVLink的GPU卡上使用,如NVIDIA Tesla V100和A100。

NVIDIA CUDA Toolkit

NVIDIA CUDA 编译器(nvcc) :这是 CUDA 编程的核心工具,用于将 CUDA C/C++ 代码编译成GPU可执行文件。它支持将 CPU 代码与 GPU 代码集成在一起,并生成针对不同GPU架构的可执行文件。
CUDA 库 :CUDA Toolkit 包括一系列高性能的GPU加速库,例如 cuBLAS(基本线性代数子程序库)、cuFFT(快速傅立叶变换库)、cuDNN(深度神经网络库)等。这些库可用于在GPU上执行常见的数学和深度学习操作。
CUDA 运行时库 :CUDA 运行时库包括 GPU 加速的运行时函数,用于管理 GPU 设备、内存分配和数据传输。它们使 GPU 程序的执行更加灵活和方便。
CUDA 驱动程序 :CUDA Toolkit 需要与支持的 NVIDIA GPU 驱动程序配合使用。这些驱动程序允许操作系统与 GPU 通信,并支持 CUDA 程序的执行。
CUDA Visual Profiler :这是一个性能分析工具,可帮助开发者识别和优化CUDA应用程序中的性能瓶颈。它提供了可视化的性能数据和分析工具,以帮助改进应用程序的性能。
NVIDIA Nsight 系列工具 :CUDA Toolkit 包括一系列 Nsight 工具,如 Nsight Eclipse Edition(用于集成开发环境)、Nsight Visual Studio Edition(用于 Visual Studio)、Nsight Compute(用于性能分析)等。这些工具用于帮助开发者更轻松地编写、调试和分析 CUDA 程序。
CUDA 样例代码和文档:CUDA Toolkit 包含大量示例代码和详细的文档,以帮助开发者入门并学习如何使用 CUDA 进行编程。
NVIDIA GPU 加速库:除了 CUDA 库之外,NVIDIA 也提供了其他 GPU 加速库,如 NVIDIA Math Kernel Library(cuBLAS 和 cuFFT 的加速版本)、NVIDIA Performance Primitives(NPP)等。

NVIDIA CUDA Driver
GPU 驱动程序 :这是 CUDA Driver 的核心部分,它包括适用于特定 NVIDIA GPU 的驱动程序。GPU 驱动程序负责与 GPU 通信,管理 GPU 的资源和执行 CUDA 程序。它允许操作系统和应用程序与 GPU 进行通信和控制。
CUDA 驱动程序 :这是 CUDA Toolkit 的一部分,但也包含在 CUDA Driver 中。CUDA 驱动程序包括 CUDA 运行时库和 CUDA 编译器。它允许开发者在计算机上编写和运行 CUDA 程序,以利用 GPU 进行并行计算。
NVIDIA 控制面板 :NVIDIA 控制面板是一个图形用户界面(GUI)工具,用于配置和调整与 NVIDIA GPU 相关的设置,如显示设置、性能选项和电源管理。
NVIDIA System Management Interface(nvidia-smi) :这是一个命令行工具,用于监视和管理系统中的 NVIDIA GPU。nvidia-smi 允许用户查看 GPU 的状态、温度、内存使用情况以及其他性能信息,并执行一些基本的管理操作。
NVIDIA 显卡驱动程序文档 :NVIDIA 提供了有关其 GPU 驱动程序的详细文档,以帮助开发者和管理员了解驱动程序的功能、配置选项和使用方法。
NVIDIA CUDA 驱动程序文档:NVIDIA 也提供了有关 CUDA 驱动程序的文档,其中包括有关 CUDA 运行时库、CUDA 编译器和其他与 CUDA 相关的内容的信息。

CUDA Toolkit与CUDA Driver的区别

CUDA Driver 和 CUDA Toolkit 是两个不同但密切相关的 NVIDIA 软件包,用于支持 GPU 编程和 GPU 加速计算,它们有以下主要区别:
CUDA Driver:
功能:CUDA Driver 是 NVIDIA GPU 驱动程序的一部分,负责管理和控制 GPU 硬件。它是操作系统与 GPU 之间的接口,允许操作系统与 GPU 通信、分配 GPU 资源以及执行 GPU 上的计算任务。CUDA Driver 使 GPU 可以正常工作,但它不提供 CUDA 编程接口或编程工具。
CUDA Toolkit:
功能:CUDA Toolkit 是用于 GPU 编程的软件包,提供了 CUDA 编程接口、编译器、运行时库、性能分析工具和示例代码等一系列工具和库。CUDA Toolkit 允许开发者编写并行计算代码,并将其在 NVIDIA GPU 上执行。它还包括与 GPU 相关的库,如 cuBLAS、cuFFT 和 cuDNN,用于加速数学和深度学习任务。
总的来说,CUDA Driver 是用于管理和控制 GPU 硬件的底层软件,而 CUDA Toolkit 是用于在 GPU 上进行编程的开发工具集。开发者需要同时安装 CUDA Driver 和 CUDA Toolkit 才能充分利用 NVIDIA GPU 进行高性能并行计算。

绘制图形知识科普

现在的显示器分辨率是 1080p,就是说这个显示器上的所有的图形,都是由水平方向 1920 行,垂直方向 1080 列的光点矩阵组成,算一下 1920x1080,也就是 207 万个光点组成。这些光点会被记录成一个二维数组,就是一张图。每一个光点,专业上称为像素,是由红绿蓝三种基本颜色调和而成。而这三个颜色,都是以 0-255 之间的一个数字表示。也就是一个像素,就是 3 个数字,例如一个红色的像素,就是(255,0,0)。那么,要生成一张红色的图,在 1080p 的分辨率下,就需要提供 207 万个(255,0,0)红色像素的数组。

而且这只是一张静态的图像,如果是视频,每秒有 60 帧图像,那一秒就需要处理上亿个像素了。其实,在 GPU 处理图像,特别是 3D 图像的时候,倒不是一个像素一个像素处理的,而是把 3D 图形转换成可以在 2D 屏幕上展现出来的,由顶点构成的无数个三角形。然后,根据每个三角形的三个顶点,把这个三角形所覆盖区域换算成像素,然后再做颜色效果,基本上就得到了屏幕上的最终效果。下面是用 GPU 处理一个 3D 桌子图像的绘制示意图,你大概可以理解这个处理过程。

可以看到,绘图任务需要并行处理海量数据,这对擅长做串行数据处理的 CPU 来说,既不合适,又负担很重。于是在 1980-1990 年代,图形加速卡这种外设开始出现。当然除了硬件方面,在绘制图形方面也有专门的软件工具,例如OpenGL,OpenGL(Open Graphics Library)是一种跨平台的图形编程接口,用于渲染2D和3D图形。它是一个开放标准,由一组函数和命令组成,允许开发者利用计算机的图形硬件来创建图形应用程序。

相关推荐
小武~5 天前
ubuntu 系統使用過程中黑屏問題分析
ubuntu·gpu·黑屏
weiwei228448 天前
NVIDIA Kernel级性能分析工具Nsight Compute入门详解
gpu·cuda·nsight compute
云道轩9 天前
阿里云和华为云Rocky LINUX 9.X镜像就绪及低端可用英伟达GPU
阿里云·华为云·云计算·gpu·rocky linux
杰克逊的日记12 天前
gpu与cpu各厂商的优劣
运维·cpu·gpu
weiwei2284420 天前
NVIDIA系统级性能分析工具Nsight Systems入门详解
gpu·cuda·nsight systems
weiwei228441 个月前
CUDA编程初探
gpu·cuda
数据智能老司机1 个月前
GPU 编程实战——使用 PyCUDA 与 CuPy 功能
人工智能·python·gpu
都都学算法1 个月前
【CUDA编程】hello world 级入门(一)
gpu
杰克逊的日记1 个月前
GPU运维常见问题处理
linux·运维·gpu
胡耀超2 个月前
基于Docker的GPU版本飞桨PaddleOCR部署深度指南(国内镜像)2025年7月底测试好用:从理论到实践的完整技术方案
运维·python·docker·容器·ocr·paddlepaddle·gpu