CUDA相关知识科普

news2024/10/2 12:18:35

显卡

显卡(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.coloradmin.cn/o/983305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT是如何辅助高效撰写论文及使用ChatGPT注意事项

ChatGPT发布近1年,各大高校对它的态度也发生了极大转变,今年3月发布ChatGPT禁令的牛剑等世界顶级名校也在近期解除了ChatGPT禁令,发布了生成式人工智能使用指南。 ChatGPT一定程度上可以解放科研人员的劳动力,与其直接禁止不如教…

【深入理解Linux内核锁】六、信号量

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、信号量介绍2、信号量的API3、API实现3.1 semaphore3.2 sema_init3.3 down…

口袋参谋:高流量权重标题,都是利用了这套工具玩法!

​近来无事,与几位电商大佬们一起喝茶聊天。在谈到提升宝贝流量最直接的方式,大家异口同声的说到:“搜索流量!” 根据我近十年的电商经验,一个好的标题,不仅要契合宝贝核心关键词,同时也要契合…

网络技术十:交换机端口安全技术

交换机端口安全技术 802.1X 定义 起源于WLAN协议802.11,解决局域网终端的接入认证问题 认证方式 本地认证:由设备端内置本地服务器对客户端进行认证 远程集中认证:由远程的认证服务器对客户端进行认证 端口接入控制方式 基于端口认证…

配电房智能化系统

配电房智能化系统依托电易云-智慧电力物联网,综合利用现代先进技术,通过对配电房的监控、数据采集、自动控制和管理,实现对配电房的安全、可靠、高效、节能和环保监控的综合管理系统。 配电房智能化系统功能: 1.运行状态实时监测…

【C++漂流记】简易理解引用的基本语法和使用及其注意实现

引用是C中的一种数据类型,它允许我们使用一个已经存在的变量来创建一个新的名称或别名,以便可以通过这个别名来访问和修改原始变量的值。引用的本质是一个别名或者一个变量的别名。 文章目录 基本语法引用的注意事项引用做函数参数引用的本质常量引用 基…

04 卷积神经网络搭建

一、数据集 MNIST数据集是从NIST的两个手写数字数据集:Special Database 3 和Special Database 1中分别取出部分图像,并经过一些图像处理后得到的[参考]。 MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。所有图…

vue表格不显示列号123456

我在网上找了半天,都是如何添加列号123456的,没有找到不显示列号的参考,现在把这个解决了,特此记录一下。 没有加右边的就会显示,加上右边的就隐藏了

python+django协同过滤算法的音乐推荐系统研究vue

本系统提供给管理员对用户、音乐分类、歌手、热门歌曲等诸多功能进行管理。本系统对于用户输入的任何信息都进行了一定的验证,为管理员操作提高了效率,也使其数据安全性得到了保障。本音乐推荐研究以Django作为框架,B/S模式以及MySql作为后台…

QtCreator CMakeLists.txt添加模块(Modules)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql) target_link_libraries(HookeViscometer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql) 蓝色部分为添加的Q…

13分钟聊聊并发包中常用同步组件并手写一个自定义同步组件

本篇文章通过AQS自己来实现一个同步组件,并从源码级别聊聊JUC并发包中的常用同步组件 本篇文章需要的前置知识就是AQS,阅读本篇文章大概需要13分钟 自定义同步组件 为了更容易理解其他同步组件,我们先来使用AQS自己来实现一个常用的可重入…

(数字图像处理MATLAB+Python)第十二章图像编码-第三、四节:有损编码和JPEG

文章目录 一:有损编码(1)预测编码A:概述B:DM编码C:最优预测器 (2)变换编码A:概述B:实现变换编码的主要问题 二:JPEG 一:有损编码 &am…

Kafka3.0.0版本——消费者(消费者总体工作流程图解)

一、消费者总体工作流程图解 角色划分:生产者、zookeeper、kafka集群、消费者、消费者组。如下图所示: 生产者发送消息给leader,followerr主动从leader同步数据,一个消费者可以消费某一个分区数据或者一个消费者可以消费多个分区数据。如下图…

9月6日上课内容 redis高可用

RDB 持久化 RDB持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),用二进制压缩存储,保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。 1. 触发条件 RDB持久化…

解锁前端Vue3宝藏级资料 Vue3全面解析 第二章 Vue3 基础语法指令

本章主要介绍vue3中的基础指令使用方式和一些开发技巧。分为基础指令,逻辑指令,列表指令,事件,MVVM数据绑定与监听。本章中所有代码例子都是在使用Vite 创建的 vue项目中来完成的。 基础语法指令 2.1 基础指令2.1.1 设置变量2.1.2…

记一次生产环境服务卡死排查记录

接现场运维报告某java服务CPU狂飙,服务处于卡死无响应状态 询问现场运维什么场景造成的,答复是偶发现象,没有规律,和请求高峰期并没有关系。 因为服务是负载均衡的(A、B两台),临时处理让运维重…

【AIGC系列】Stable Diffusion 小白快速入门课程大纲

一、前言 本文是《Stable Diffusion 从入门到企业级应用实战》系列课程的前置学习引导部分,《Stable Diffusion新手完整学习地图课程》的课程大纲。该课程主要的培训对象是: 没有人工智能背景,想快速上手Stable Diffusion的初学者;想掌握St…

这些国外客户真直接

最近在某平台上遇到的客户,很大一部分都是非英语国家的客户,然而他们也有很多共性的习惯。 第一种:直接表达自己对这个产品感兴趣,然后接下来就没有下文了,而之所以可以看得懂,则是借助平台本身的翻译系统&…

三维数字沙盘电子沙盘虚拟现实模拟推演大数据人工智能开发教程第15课

三维数字沙盘电子沙盘虚拟现实模拟推演大数据人工智能开发教程第15课 现在不管什么GIS平台首先要解决的就是数据来源问题,因为没有数据的GIS就是一个空壳,下面我就目前一些主流的数据获取 方式了解做如下之我见(主要针对互联网上的一些卫星…

解锁前端Vue3宝藏级资料 第三章 Vue Router路由器的使用

Vue Router 是 Vue.js 的官方路由器。通过使用 Vue Router,你可以构建一个包含多个页面的应用程序。它可以样多个页面之间流畅地跳转,而无需每次移动到另一个页面时都要重新加载整个页面。Vue Router 路由是使用 Vue.js 构建单页应用项目的必备库。官网地…