CUDA刷新:GPU计算生态系统

CUDA Refresher: The GPU Computing Ecosystem

这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键概念、工具和优化,以供初级或中级开发人员使用。

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

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

在应用程序开始扩展之后,在数据中心级别需要更多的工具。英伟达致力于为开发者和企业提供最先进的工具和生态系统服务。

Figure1: CUDA Ecosystem: The building blocks to make the CUDA platform the best developer choice.

英伟达最近宣布了最新的A100架构和DGX A100系统的基础上,这一新的架构。新的A100 GPU还配备了丰富的生态系统。

图1显示了在15年多的时间里进化的更广泛的生态系统组成部分。在这篇文章中,将详细介绍每个生态系统组件。

Programming languages and APIs

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

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

· PyCUDA—Use CUDA API operations from a Python interface. 使用来自Python接口的CUDA API操作。

· Altimesh Hybridizer—Generate CUDA C source code from .NET assemblies (MSIL) or Java archives (java bytecode). 从.NET程序集(MSIL)或Java存档(Java字节码)生成CUDAC源代码。

· OpenACC—Use directives to program GPUs and compiler-generated CUDA code before executing on CUDA GPUs. 使用指令对gpu进行编程,并在对CUDA gpu执行之前编译生成的CUDA代码。

· OpenCL—Use low-level API operations to program CUDA GPUs. 使用低级API操作来编程CUDA gpu。

Alea-GPU—Program CUDA GPUs with the .NET framework. 使用.NET框架的Alea GPU程序CUDA GPU。

Libraries

库对于为任何编程环境中广泛使用的公共例程提供性能下降是必不可少的。针对目标计算架构进行了很好的优化,并且具有较高的软件质量。还节省了应用程序开发时间,并提供了开始使用GPU加速的最简单方法。

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

NVIDIA CUDA工具包附带了大量常用库。许多合作伙伴还在CUDA平台上贡献了许多库。以下是一些广泛使用的库的列表:

· Mathematical libraries: cuBLAS, cuRAND, cuFFT, cuSPARSE, cuTENSOR, cuSOLVER

· Parallel algorithm libraries: nvGRAPH, Thrust

· Image and video libraries: nvJPEG, NPP, Optical Flow SDK

· Communication libraries: NVSHMEM, NCCL

· Deep learning libraries: cuDNN, TensorRT, Jarvis, DALI

· Partner libraries: OpenCV, FFmpeg, ArrayFire, MAGMA

Profiling and debugging tools分析和调试工具

任何编程体系结构的重要元素之一是编写、调试和优化程序的健壮而高效的工具。CUDA生态系统是健壮的,NVIDIA花费了大量的精力来确保拥有快速、轻松、高效地编写所需的所有工具。

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

NVIDIA Nsight这是一个低开销的分析、跟踪和调试工具。提供了一个基于GUI的环境,可以跨NVIDIA平台(如大型多GPU x86服务器、Quadro工作站等)进行扩展。

CUDA GDB这是linuxgdb的一个扩展,提供了一个基于控制台的调试接口,可以从命令行使用。CUDA GDB可以在本地系统或任何远程系统上使用。基于GUI的插件也可用,例如DDD、EMACS或Nsight Eclipse Edition。

CUDA-Memcheck是一个必备的工具,通过检查并发运行的数千个线程来洞察内存访问问题。
还有许多第三方解决方案,包括:

· ARM Forge

· TotalView Debugger

· PAPI CUDA Component

· TAU Performance System

· VampirTrace

Datacenter tools and cluster management数据中心工具和群集管理

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

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

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

· Container registry

· Scheduling and orchestration

· Cluster management tools

· Monitoring tools

Containers

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

调度和编排

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

主要的标准集群管理工具都支持NVIDIA gpu。一些例子包括Bright Cluster, Ganglia, StackIQ, and Altair PBS Works作品。

监视工具

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

CUDA ecosystem and GPU-accelerated applications

在2006年CUDA发布之后,开发人员已经在CUDA上移植了许多应用程序。

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

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

NVIDIA维护一个目录,列出所有GPU加速应用程序。这个列表只是GPU计算加速的应用程序的一个子集。很多申请都是内部的,不在这份名单上。

GPUs everywhere

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

用于游戏和笔记本电脑的GeForce GPU

专业可视化的Quadro GPU

数据中心GPU

嵌入式soc的Tegra

跨所有产品线的单一计算体系结构和CUDA的向后兼容性使该平台成为开发人员的选择。可以访问笔记本电脑和PC、工作站、服务器和嵌入式设备中的GPU,并在任何地方运行相同的CUDA代码。地球上的每一个云服务提供商都为CUDA支持的gpu供电。

Summary

NVIDIA致力于为CUDA开发者提供广泛而丰富的生态系统支持。一个庞大的工程师团队一直在努力确保能得到所有正确的工具。以下是CUDA开发人员可以利用的优势:
使用丰富的编程语言支持和开发环境工具(如调试器、探查器等)开发CUDA代码。
通过优化、测试和维护库来降低应用程序的加速。

使用经过优化和测试的容器及其在NVIDIA NGC上的可用性,易于部署。

支持在集群环境中扩展应用程序的工具。

使用CUDA加速了更广泛的应用。

CUDA刷新:GPU计算生态系统相关推荐

  1. 基于CUDA的GPU计算PI值

    访问[WRITE-BUG数字空间]_[内附完整源码和文档] 基于CUDA的GPU计算PI值.本项目使用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程分块对性能的影响. ...

  2. CUDA之GPU计算的起源

    科学发现和业务分析推动了对更多计算资源的永不满足的需求.许多应用程序--天气预报.计算流体动力学模拟,以及最近的机器学习和深度学习--需要比当前可用的计算能力高一个数量级,更复杂的算法需要更多的计算能 ...

  3. CUDA编程(一):GPU计算与CUDA编程简介

    CUDA编程(一):GPU计算与CUDA编程简介 GPU计算 GPU硬件资源 GPU软件资源 GPU存储资源 CUDA编程 GPU计算 NVIDIA公司发布的CUDA是建立在GPU上的一个通用并行计算 ...

  4. CUDA:主导GPU计算的革命

    G80计算架构 真正的革命来自于2006年,NVIDIA在这一年推出了基于DX10统一渲染体系的旗舰图形处理器G80,当人们为其强悍的3D效能惊叹时,有谁又会想到NVIDIA这次会给那些GPU通用运算 ...

  5. python调用显卡计算_Anaconda GPU计算入门指南

    摘要:随着人工智能时代的到来,计算能力变得越来越重要.GPU计算已经成为了必然的趋势,对于机器学习爱好者来说要想训练一个高质量的神经网络,使用GPU无疑是最佳选择. GPU计算已成为数据科学领域的重要 ...

  6. CUDA之GPU生态系统

    易于编程和性能的巨大飞跃是 CUDA 平台被广泛采用的关键原因之一.CUDA 平台成功的第二大原因是拥有广泛而丰富的生态系统. 与任何新平台一样,CUDA 的成功取决于可用于 CUDA 生态系统的工具 ...

  7. 两种GPU计算平台:CUDA 与 OpenCL

    目录 1.硬件层面 2.操作系统 3.软件和社区 4.编程模型 5.CUDA 的优点和局限性 优点 限制 6.OpenCL 的优点和限制 优点 限制 7.补充一点 参考 1.硬件层面 图形加速器的三大 ...

  8. [转]浅析GPU计算——cuda编程

    在<浅析GPU计算--CPU和GPU的选择>一文中,我们分析了在遇到什么瓶颈时需要考虑使用GPU去进行计算.本文将结合cuda编程来讲解实际应用例子.(转载请指明出于breaksoftwa ...

  9. [转]Cuda笔记【1】GPU计算DEMO

    声明 本文是看小破站某cuda入门教程留下来的笔记,多上PPT上内容,夹杂一点自己的理解,和代码注释 教程地址:https://www.bilibili.com/video/av74148375 gi ...

最新文章

  1. springcloud上传文件_Spring Cloud实战:服务链路追踪Spring Cloud Sleuth
  2. linux下的 ifconfig 和 ip 命令
  3. Harbor容器仓库的镜像上传
  4. 网工学Python——初识面向对象
  5. 构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型
  6. A Greeting from Qinhuangdao Gym - 102769A 2020ccpc秦皇岛分站赛
  7. kafka再均衡监听器测试
  8. Java消息服务~JMSReplyTo示例
  9. 二分求值(二分适合求答案在两个数之间的题目)
  10. [转载] Java中final关键字
  11. shell编程四剑客之 grep
  12. PADS软件如何导出BOM
  13. WPF复制异常问题(OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)))
  14. python 视频清晰度_python识别视频黑屏或者低清晰度
  15. torch.nn.Embedding(num_embeddings, embedding_dim)的理解
  16. acs代表什么_ACS 是什么意思
  17. IO流,小白入门基础知识
  18. jQuery弹出插件thickbox使用心得
  19. 英汉互译教程---生词
  20. 3g html5手机网站,手机网站新模式 3G门户HTML5概念版问世

热门文章

  1. 2022-2028年中国装配式装修行业市场研究及前瞻分析报告
  2. 2022-2028年中国丁基橡胶行业市场深度分析及投资前景展望报告
  3. 2022-2028年中国内衣用热熔胶膜行业发展现状调查及市场分析预测报告
  4. HMM(隐马尔科夫)用于中文分词
  5. LeetCode简单题之自除数
  6. 深度学习编译器综述The Deep Learning Compiler
  7. Mobileye高级驾驶辅助系统(ADAS)
  8. NVIDIA GPU上的随机数生成
  9. 机器学习PAL基本概念
  10. Technology Document Guide of TensorRT