IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> CUDA之GPU生态系统 -> 正文阅读

[Python知识库]CUDA之GPU生态系统

易于编程和性能的巨大飞跃是 CUDA 平台被广泛采用的关键原因之一。CUDA 平台成功的第二大原因是拥有广泛而丰富的生态系统。

与任何新平台一样,CUDA 的成功取决于可用于 CUDA 生态系统的工具、库、应用程序和合作伙伴。任何新的计算平台都需要开发人员将应用程序移植到新平台。为此,开发人员需要最先进的工具和开发环境。

应用程序开始扩展后,在数据中心级别需要更多工具。NVIDIA 致力于为开发者和企业提供最先进的工具和生态系统服务。
在这里插入图片描述

图 1:CUDA 生态系统:使 CUDA 平台成为最佳开发者选择的构建块

NVIDIA 近期发布了最新的A100 架构和基于这种新架构的DGX A100系统。新的 A100 GPU 还配备了丰富的生态系统。

图 1 显示了更广泛的生态系统组件,这些组件在超过 15 年的时间里演变。在这篇文章中,我深入介绍了每个生态系统组件的介绍性细节。

编程语言和 API

CUDA 1.0 开始时仅支持 C 编程语言,但多年来一直在发展。CUDA 现在允许使用多种高级编程语言对 GPU 进行编程,包括 C、C++、Fortran、Python 等。

NVIDIA 发布了 CUDA 工具包,它提供了使用 C/C++ 编程语言的开发环境。使用此工具包,您可以在 GPU 上开发、优化和部署应用程序。NVIDIA 还提供了一个 PGI 工具包来使用 Fortran 语言进行编程。

还有许多可用的第三方工具链:

PyCUDA—从 Python 接口使用 CUDA API 操作。
Altimesh Hybridizer —从 .NET 程序集 (MSIL) 或 Java 档案(java 字节码)生成 CUDA C 源代码。
OpenACC — 在 CUDA GPU 上执行之前,使用指令对 GPU 和编译器生成的 CUDA 代码进行编程。
OpenCL —使用低级 API 操作对 CUDA GPU 进行编程。
Alea-GPU —使用 .NET 框架对 CUDA GPU 进行编程。

Libraries

库对于为任何编程环境中广泛使用的通用例程提供直接性能至关重要。它们针对目标计算架构进行了很好的优化,并且具有很高的软件质量。它们还节省了应用程序开发时间,并提供了开始使用 GPU 加速的最简单方法。

NVIDIA 在 CUDA 平台之上提供了一个称为CUDA-X的层,它是库、工具和技术的集合。GPU 加速的 CUDA 库支持跨多个领域的嵌入式加速,例如线性代数、图像和视频处理、深度学习和图形分析。对于开发自定义算法,可以使用与常用语言和数值包的可用集成,以及已发布的开发 API 操作。

NVIDIA CUDA 工具包附带了大量常用库。以下是一些广泛使用的库的列表:

数学库: cuBLAS、cuRAND、cuFFT、cuSPARSE、cuTENSOR、cuSOLVER
并行算法库: nvGRAPH、Thrust
图像和视频库: nvJPEG、NPP、光流SDK
通讯库: NVSHMEM、NCCL
深度学习库: cuDNN、TensorRT、Riva、DALI
合作伙伴库: OpenCV、FFmpeg、ArrayFire、MAGMA

分析和调试工具

任何编程架构的重要元素之一是用于编写、调试和优化程序的强大且高效的工具。CUDA 生态系统非常强大,NVIDIA 付出了巨大的努力来确保用户拥有快速、轻松、高效地编写所需的所有工具。

以下是 CUDA 分析和调试工具的预览:

NVIDIA Nsight —这是一个低开销的分析、跟踪和调试工具。它提供了一个基于 GUI 的环境,可在各种 NVIDIA 平台上进行扩展,例如大型多 GPU x86 服务器、Quadro 工作站等。
CUDA GDB — 这是 Linux GDB 的扩展,它提供了一个基于控制台的调试界面,您可以从命令行使用它。CUDA GDB 可用于您的本地系统或任何远程系统。也可以使用基于 GUI 的插件,例如 DDDEMACSNsight Eclipse Edition
CUDA-Memcheck — 必备工具,通过检查同时运行的数千个线程来洞察内存访问问题。
还有许多第三方解决方案可用,包括:

ARM Forge
TotalView Debugger
PAPI CUDA Component
TAU Performance System
VampirTrace

数据中心工具和集群管理

NVIDIA GPU 为应用程序提供了巨大的加速,这些应用程序进一步扩展到大量 GPU。许多科学应用程序,如分子动力学和量子化学,以及人工智能应用程序需要一组 GPU 来将应用程序性能扩展到通过高速网络连接的数千个 GPU。现代数据中心是使用 NVIDIA GPU 和 Mellanox 高速互连构建的,以扩展应用程序以大规模扩展性能。

用户需要一个复杂的生态系统才能在数据中心轻松部署。企业需要工具来轻松管理和运行这些密集的数据中心。NVIDIA 与生态系统合作伙伴密切合作,为开发人员和 DevOps 提供适用于 AI 和 HPC 软件生命周期每一步的软件工具。

以下是 NVIDIA 为加强这一生态系统所做的一些努力:

容器注册
调度和编排
集群管理工具
监控工具

容器

容器是轻松部署应用程序的现代方式。NVIDIA 提供来自NVIDIA NGC 的所有深度学习和 HPC 容器。这些容器由 NVIDIA 测试、维护和优化。NGC 还提供了一种托管第三方容器的方法。组织还可以选择拥有私有容器存储库。

调度和编排

调度和编排是数据中心管理和运营的另一个重要方面。Kubernetes 是现代流行的容器编排系统,用于自动化应用程序部署、扩展和管理。NVIDIA GPU 上的 Kubernetes 扩展了具有 GPU 加速功能的行业标准容器编排平台。Kubernetes 为 NVIDIA GPU 资源调度提供了最先进的支持。

集群管理工具

主要的标准集群管理工具都支持 NVIDIA GPU。一些示例包括 Bright Cluster、Ganglia、StackIQ 和 Altair PBS Works。

监控工具

NVIDIA 还提供了一套名为DCGM的工具,用于管理和监控集群环境中的 GPU。NVIDIA 还公开了一个基于 API 的接口,以通过 NVML API 来监控 GPU。在这些工具的帮助下,数据中心运营团队可以持续执行主动健康监控、综合诊断、系统警报和治理策略,包括电源和时钟管理。这些工具既可以独立使用,也可以与任何行业标准工具套件集成使用。您还可以使用 NVML API 操作构建自己的工具。

CUDA 生态系统和 GPU 加速的应用程序

2006年CUDA发布后,开发者已经在CUDA上移植了很多应用。

开始移植应用程序的第一批开发人员是科学界。该社区移植了许多标准应用程序以及自己开发的代码。具有固有并行性的应用程序,如图像和视频处理,是移植到 CUDA 的首批用例之一。

深度学习是大规模并行化有助于加速应用程序的另一个例子。当今几乎每个深度学习框架都使用 CUDA/GPU 计算来加速深度学习训练和推理。

NVIDIA 维护一个目录以列出所有 GPU 加速应用程序。此列表只是已通过 GPU 计算加速的应用程序的一个子集。许多应用程序是内部应用程序,并没有出现在此列表中。

无处不在的 GPU

CUDA 的广泛采用要求每个需要 GPU 的开发人员开发 CUDA 代码和端口应用程序。许多年前,NVIDIA 决定在 NVIDIA 设计的每个 GPU 都将支持 CUDA 架构:

用于游戏和笔记本电脑的 GeForce GPU
用于专业可视化的 Quadro GPU
数据中心 GPU
用于嵌入式 SoC 的 Tegra
跨所有产品线的单一计算架构与 CUDA 的向后兼容性使该平台成为开发人员的选择。用户可以访问笔记本电脑和 PC、工作站、服务器和嵌入式设备中的 GPU,并在任何地方运行相同的 CUDA 代码。地球上的每个云服务提供商都为支持 CUDA 的 GPU 提供支持。

概括

NVIDIA 致力于为 CUDA 开发人员提供广泛而丰富的生态系统支持。一个庞大的工程师团队不断努力,以确保用户可以获得所有正确的工具。以下是 CUDA 开发人员可以利用的功能:

使用丰富的编程语言支持和调试器、分析器等开发环境工具开发 CUDA 代码。
通过调整、测试和维护的库对应用程序进行直接加速。
借助经过调整和测试的容器及其在 NVIDIA NGC 上的可用性,轻松部署。
支持在集群环境中扩展应用程序的工具。
使用 CUDA 加速了更广泛的应用程序。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:15:03  更:2021-12-15 18:15:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:59:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码