CUDA相关知识科普

news/2024/11/17 3:51:14/

显卡

显卡(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图形。它是一个开放标准,由一组函数和命令组成,允许开发者利用计算机的图形硬件来创建图形应用程序。


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

相关文章

LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)

文章目录 前置知识1005.K次取反后最大化的数组和题目描述分情况讨论贪心算法 134. 加油站题目描述暴力解法贪心算法 135. 分发糖果题目描述暴力解法贪心算法 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【23】:贪心算法专题-1(分发饼…

catface,使用Interface定义Controller,实现基于Http协议的RPC调用

catface 前言cat-client 模块EnableCatClientCatClientCatMethodCatNoteCatResponesWrapperCatClientConfigurationCatClientProviderCatClientFactoryCatSendInterceptorCatHttpCatPayloadResolverCatObjectResolverCatLoggerProcessorCatResultProcessorCatSendProcessorAbst…

一套成熟的实验室信息管理系统(云LIS源码)ASP.NET CORE

一套成熟的实验室信息管理系统,集前处理、检验、报告、质控、统计分析、两癌等模块为一体的网络管理系统。它的开发和应用将加快检验科管理的统一化、网络化、标准化的进程。 LIS把检验、检疫、放免、细菌微生物及科研使用的各类分析仪器,通过计算机联…

力扣(LeetCode)算法_C++—— 两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 示例 2: 输入:nums1 …

【MySQL】MySQL 数据库基础

MySQL 数据库基础 一. 数据库的操作1. 显示当前的数据库2. 创建数据库3. 使用数据库4. 删除数据库 二. 常用数据类型1. 数据类型2. 字符串类型3. 日期类型 三. 表的操作1. 查看表结构2. 创建表4. 删除表 一. 数据库的操作 1. 显示当前的数据库 SHOW DATABASES;MySQL 不区分大…

华为云云服务器评测 | 微信小程序使用JSAPI实现微信支付,从商户注册到成功支付全流程说明(含完整测试demo)

目录 概述 博文和Demo说明 营业执照说明 认证过的小程序(免去每年300认证费方案) 商户注册 获取支付支持参数(商户号,API密匙...) 后端开发 前置说明 前置准备 项目目录结构 主要功能代码 下单接口 支付…

Stream API

Stream API执行流程 Stream API(java.util.stream)把真正的函数式编程风格引入到Java中,可以极大地提高程序员生产力,让程序员写出高效、简洁的代码 实际开发中项目中多数数据源都是来自MySQL、Oracle等关系型数据库,还有部分来自MongDB、Redis等非关系型数据库 …

直播平台源码开发搭建APP的DASH协议:流媒体技术其中一环

在直播平台源码APP中,有着许许多多、多种多样的功能,比如短视频功能,帮助我们去获取信息,看到全世界用户身边发生的事情或是他们的生活;又比如直播功能,为用户提供了实时的娱乐享受,还让一些用户…