CUDA刷新:GPU计算生态系统
CUDA刷新:GPU计算生态系统
CUDA Refresher: The GPU Computing Ecosystem
这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键概念、工具和优化,以供初级或中级开发人员使用。
易于编程和性能的巨大飞跃是CUDA平台被广泛采用的关键原因之一。CUDA平台成功的第二大原因是拥有广泛而丰富的生态系统。
与任何新平台一样,CUDA的成功依赖于CUDA生态系统可用的工具、库、应用程序和合作伙伴。任何新的计算平台都需要开发人员将应用程序移植到新的平台。至这样做,开发人员需要最先进的工具和开发环境。
在应用程序开始扩展之后,在数据中心级别需要更多的工具。英伟达致力于为开发者和企业提供最先进的工具和生态系统服务。
Figure 1: 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是一个必备的工具,通过检查并发运行的数千个线程来洞察内存访问问题。
还有许多第三方解决方案,包括:
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计算生态系统的更多相关文章
- GPU计算的后CUDA时代-OpenACC(转)
在西雅图超级计算大会(SC11)上发布了新的基于指令的加速器并行编程标准,既OpenACC.这个开发标准的目的是让更多的编程人员可以用到GPU计算,同时计算结果可以跨加速器使用,甚至能用在多核CPU上 ...
- Julia:高性能 GPU 计算的编程语言
Julia:高性能 GPU 计算的编程语言 0条评论 2017-10-31 18:02 it168网站 原创 作者: 编译|田晓旭 编辑: 田晓旭 [IT168 评论]Julia是一种用于数学计 ...
- CUDA刷新器:CUDA编程模型
CUDA刷新器:CUDA编程模型 CUDA Refresher: The CUDA Programming Model CUDA,CUDA刷新器,并行编程 这是CUDA更新系列的第四篇文章,它的目标是 ...
- GPU计算的十大质疑—GPU计算再思考
http://blog.csdn.NET/babyfacer/article/details/6902985 原文链接:http://www.hpcwire.com/hpcwire/2011-06-0 ...
- OpenGL实现通用GPU计算概述
可能比較早一点做GPU计算的开发者会对OpenGL做通用GPU计算,随着GPU计算技术的兴起,越来越多的技术出现,比方OpenCL.CUDA.OpenAcc等,这些都是专门用来做并行计算的标准或者说接 ...
- (Matlab)GPU计算简介,及其与CPU计算性能的比较
1.GPU与CPU结构上的对比 2.GPU能加速我的应用程序吗? 3.GPU与CPU在计算效率上的对比 4.利用Matlab进行GPU计算的一般流程 5.GPU计算的硬件.软件配置 5.1 硬件及驱动 ...
- python3使用pycuda执行简单GPU计算任务
技术背景 GPU的加速技术在深度学习.量子计算领域都已经被广泛的应用.其适用的计算模型是小内存的密集型计算场景,如果计算的模型内存较大,则需要使用到共享内存,这会直接导致巨大的数据交互的运算量,通信开 ...
- [转]如何远程连接运行OpenGL/Cuda 等GPU程序
发现一篇神文,解决了困扰许久的远程桌面OpenGL/GPU 等问题... 原地址在这:http://www.tanglei.name/how-to-run-gpu-programs-using-rem ...
- 多GPU计算
多GPU计算已经可以说,只要是个成熟的模型,都使用了这一点. 例如: gluoncv:https://github.com/dmlc/gluon-cv/blob/master/scripts/dete ...
随机推荐
- 【SpringMVC配置失效】Springboot2.x拦截器配置不无生效
一.环境 maven springboot版本2.x <parent> <groupId>org.springframework.boot</groupId> &l ...
- Ubuntu下修改Nexus 5的boot.img--改user模式为debug模式
博客地址:http://blog.csdn.net/qq1084283172/article/details/52422205 在学习Android逆向的时候,总会用到Android的调试模式.一般情 ...
- hdu4994 博弈,按顺序拿球
题意: 给你n堆东西,两个人博弈的去拿,每次最少一个,最多是一堆,必须按顺序那,也就是只有把第一堆的东西拿完了才能去拿第二堆东西,谁先拿完谁胜,问新手是否能胜利. 思路: 显然 ...
- Python中shodan模块的使用
关于shodan的安装和使用,传送门--> 渗透测试之Shodan的安装和使用 常用 Shodan 库函数 shodan.Shodan(key) :初始化连接API Shodan.count(q ...
- HackingLab基础关
目录 1:Key在哪里? 2:再加密一次你就得到key啦~ 3:猜猜这是经过了多少次加密? 4:据说MD5加密很安全,真的是么? 5:种族歧视 6:HAHA浏览器 7:key究竟在哪里呢? 8:key ...
- Portswigger web security academy:DOM Based XSS
Portswigger web security academy:DOM Based XSS 目录 Portswigger web security academy:DOM Based XSS DOM ...
- 『居善地』接口测试 — 5、使用Requests库发送POST请求
目录 1.请求正文是application/x-www-form-urlencoded 2.请求正文是raw (1)json格式文本(application/json) (2)xml格式文本(text ...
- CRM系统自动化业务流程的好处
CRM系统的自动化可以简单化企业大部分工作,而且覆盖销售,市场,服务和财务部门,使团队有大量时间花在业务流程上. CRM系统自动化的建立是为了更好地使工作更为简单且便于管理,自动化释放出来员工的时间, ...
- 【Web前端HTML5&CSS3】08-盒模型补充
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 盒模型补充及田径场实战 1. 盒子大小 2. 轮廓 3. 阴影 4. 圆角 圆 椭圆 盒模型补充及田径场实战 1 ...
- 关于在pycharm上使用git(保姆级别教程)
文件 → 设置 先在pycharm上面登录github账号,版本控制 → GitHub → '+' → 通过GitHub登录 会自动跳转至浏览器,然后点击"Authorize in GitH ...