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

CUDA相关知识科普
显卡 显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。就像电脑联网需要网卡,主机里的数据要显示在屏幕上就需要显卡。因此,显卡是电脑进…...

恒运资本:总市值和总资产区别?
总市值和总财物是财政术语中经常被提到的两个概念,很多人会将它们混淆。在金融领域中,了解这两个概念的差异十分重要。本文将从多个视点深入分析总市值和总财物的差异。 1.定义 总市值是指公司发行的一切股票的商场总价值。所谓商场总价值…...

CTF安全竞赛介绍
目录 一、赛事简介 二、CTF方向简介 1.Web(Web安全) (1)简介 (2)涉及主要知识 2.MISC(安全杂项) (1)介绍 (2)涉及主要知识 3…...

DC/DC开关电源学习笔记(四)开关电源电路主要器件及技术动态
(四)开关电源电路主要器件及技术动态 1.半导体器件2.变压器3.电容器4.功率二极管5.其他常用元件5.1 电阻5.2 电容5.3 电感5.4 变压器5.5 二极管5.6 整流桥5.7 稳压管5.8 绝缘栅-双极性晶体管1.半导体器件 功率半导体器件仍然是电力电子技术发展的龙头, 电力电子技术的进步必…...

数据可视化与数字孪生:理解两者的区别
在数字化时代,数据技术正在引领创新,其中数据可视化和数字孪生是两个备受关注的概念。尽管它们都涉及数据的应用,但在本质和应用方面存在显著区别。本文带大探讨数据可视化与数字孪生的差异。 概念 数据可视化: 数据可视化是将复…...
C++ socket编程(TCP)
服务端保持监听客户端, 服务端采用select实现,可以监听多个客户端 客户端源码 在这里插入代码片 #include <iostream> //#include <windows.h> #include <WinSock2.h> #include <WS2tcpip.h> using namespace std; #pragma co…...
ldd用于打印程序或库文件所依赖的共享库列表
这是一个Linux命令行指令,将两个常用的命令 ldd 和 grep 组合使用。我来逐一为您解释: ldd: 这是一个Linux工具,用于打印程序或库文件所依赖的共享库列表。通常,当你有一个可执行文件并且想知道它链接到哪些动态库时,你…...

vue+elementUI el-table实现单选
if (selection.length > 1) {this.$refs.table.clearSelection();this.$refs.table.toggleRowSelection(selection.pop());}...

前端组件库造轮子——Message组件开发教程
前端组件库造轮子——Message组件开发教程 前言 本系列旨在记录前端组件库开发经验,我们的组件库项目目前已在Github开源,下面是项目的部分组件。文章会详细介绍一些造组件库轮子的技巧并且最后会给出完整的演示demo。 文章旨在总结经验,开…...

单片机第二季:温度传感器DS18B20
目录 1,DS18B20介绍 2,DS18B20数据手册 2.1,初始化时序 2.2,读写时序 3,DS18B20工作流程 4,代码 1,DS18B20介绍 DS18B20的基本特征: (1)内置集成ADC,外部数字接…...

抓包工具fiddler的基础知识
目录 简介 1、作用 2、使用场景 3、http报文分析 3.1、请求报文 3.2、响应报文 4、介绍fiddler界面功能 4.1、AutoResponder(自动响应器) 4.2、Composer(设计请求) 4.3、断点 4.4、弱网测试 5、app抓包 简介 fiddler是位于客户端和服务端之间的http代理 1、作用 监控浏…...
监控基本概念
监控:这个词在不同的上下文中有不同的含义,在讲到监控MySQL或者监控Redis时,这里只涉及数据采集和可视化,不涉及告警引擎和事件处理。要是监控系统的话,不但包括数据采集和可视化,而且也包括告警和事件发送…...

【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
文章目录 🍀排序的概念及引用🐱👤排序的概念🐱👓排序运用🐱🐉常见的排序算法 🌴插入排序🎋基本思想:🛫直接插入排序📌算法步骤&…...

【Linux】高级IO --- Reactor网络IO设计模式
人其实很难抵制诱惑,人只能远离诱惑,所以千万不要高看自己的定力。 文章目录 一、LT和ET模式1.理解LT和ET的工作原理2.通过代码来观察LT和ET工作模式的不同3.ET模式高效的原因(fd必须是非阻塞的)4.LT和ET模式使用时的读取方式 二…...

Agisoft Metashape相机标定笔记
Lens Calibration(镜头标定) 使用Metashape进行自动相机标定是可能的。Metashape使用LCD显示屏作为标定目标(可选:使用打印的棋盘格图案,但需保证它是平坦的且单元格是正方形)。 相机标定步骤支持全相机标定矩阵的估计ÿ…...
vue-cropper在ie11下选择本地图片后,无显示、拒绝访问的问题
问题:vue-cropper在ie11下选择本地图片后,网页上并未显示出图片,打开F12有报错:拒绝访问blabla的。但是在chrome下一切正常。 开发环境:node14.17.5 , vue2 , vue-cropper0.6.2 , macOS big sur 11.4(M1). 解决办法&…...

Excel VSTO开发11-自定义菜单项
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 11 自定义菜单项 自定义菜单项可以在插件启动时候添加,即增加到ThisAddIn_Startup() 内。 下面以具体代码说明&#x…...

stm32之30.DMA
DMA(硬件加速方法)一般用于帮运比较大的数据(如:摄像头数据图像传输),寄存器-》DMA-》RAM 或者 RAM-》DMA-》寄存器提高CPU的工作效率 源码-- #include "myhead.h" #include "adc.h"#…...

【LeetCode75】第四十九题 数组中的第K个最大元素
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目很简单,就是给我们一个数组,让我们返回第K大的元素。 那么很直观的一个做法就是我们直接对数组进行降序排序…...

嵌入式面试笔试刷题(day14)
文章目录 前言一、进程控制块1.PCB控制块的作用2.PCB的存储位置 二、进程的三级映射三、return , exit, pthread_exit四、pthread_join作用五、互斥锁和信号量的区别六、怎么判断链表是否有环总结 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
Git 命令全流程总结
以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结,按操作场景分类整理: 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...