NVIDIA CUDA最新版是一款由英伟达推出的显卡驱动程序。NVIDIA CUDA官方版涵盖了GPU加速库、性能分析工具、开发工具、示例代码等功能,为编程人员提供了更好的运行环境。NVIDIA CUDA软件能够帮助用户提高gpu的运行能力,解决复杂的计算问题。
NVIDIA CUDA软件简介
CUDA的开发考虑了几个设计目标:
提供对标准编程语言(例如C)的一小部分扩展,这些扩展可实现并行算法的直接实现。使用CUDA C / C ++,程序员可以专注于算法的并行化任务,而不必花时间在其实现上。
在应用程序同时使用CPU和GPU的情况下支持异构计算。应用程序的串行部分在CPU上运行,并行部分被卸载到GPU。这样,CUDA可以增量地应用于现有应用程序。CPU和GPU被视为具有各自内存空间的单独设备。此配置还允许在CPU和GPU上同时进行计算,而不会争用内存资源。
具有CUDA功能的GPU具有数百个内核,这些内核可以共同运行数千个计算线程。这些内核具有共享资源,包括寄存器文件和共享内存。片上共享内存允许在这些内核上运行的并行任务共享数据,而无需通过系统内存总线发送数据。
NVIDIA CUDA功能介绍
1、高性能
CUDA软件平台经过高度优化,可在NVIDIA GPU上执行,并且比仅限CPU的选择速度快2至5倍。
2、特定领域的图书馆
高级库支持跨域的GPU加速,包括线性代数,图像处理,深度学习和图形分析。
3、开发一次,随处部署
CUDA软件平台可跨GPU系列工作,因此您可以在任何平台上开发,而无需担心最终的部署环境。
4、集成开发环境
IDE带有用于调试的图形和命令行工具,识别GPU和CPU上的性能瓶颈,并提供上下文相关的优化指导。
5、语言整合
使用您已知的编程语言开发应用程序,包括C,C ++,Fortran和Python。
NVIDIA CUDA软件特色
一、图书馆
1、使用cuBLAS中的新GEMM内核加速高性能计算(HPC)和深度学习应用程序。
2、通过cuFFT和NVIDIA Performance Primitives中多个GPU配置的性能优化,可更快地执行映像和信号处理应用程序。
3、使用cuSOLVER和nvGRAPH中的新算法解决HPC中常见的线性和图形分析问题。
二、合作团体
1、使用从子贴图到线程,块和网格的线程表达丰富的并行算法。
2、使用新的API和函数原语在应用程序内高效地管理和重用线程。
3、在开普勒体系结构及更高版本上用强大的编程模型替换warp-synchronous编程。
三、沃尔塔建筑
1、Tensor Cores比Pascal GPU执行速度快5倍,可以更快地执行AI应用程序。
2、利用下一代NVLink提供前代产品的2倍吞吐量来扩展多GPU应用。
3、使用沃尔多多进程服务(MPS)提高GPU利用率。
四、开发工具
1、通过识别在统一内存中导致页面错误的源代码来优化和预取内存访问。
2、通过将事件添加到时间线和颜色编码连接来高效地配置NVLink。
3、使用基于虚拟地址,迁移原因和页面错误访问类型的新事件过滤器来检查统一内存性能瓶颈。
NVIDIA CUDA使用方法
评估
对于现有项目,第一步是评估应用程序,以找到负责大部分执行时间的代码部分。有了这些知识,开发人员就可以评估这些瓶颈以进行并行化,并开始研究GPU加速。
通过了解最终用户的要求和约束并应用阿姆达尔定律和古斯塔夫森定律,开发人员可以通过加速应用程序已识别部分来确定性能改进的上限。
平行化
在确定了热点并完成了设置目标和期望的基本练习之后,开发人员需要并行处理代码。根据原始代码,这可以像调用现有的GPU优化库一样简单,例如立方玻璃, 傅立叶变换, 要么 推力,也可以像向并行化编译器添加一些预处理器指令一样简单。
另一方面,某些应用程序的设计将需要进行一些重构以暴露其固有的并行性。由于甚至CPU架构也需要公开并行性以改善或简单地维护顺序应用程序的性能,因此CUDA并行编程语言家族(CUDA C ++,CUDA Fortran等)旨在使这种并行性的表达尽可能地简单。 ,同时在支持CUDA的GPU上启用操作,这些GPU设计用于实现最大并行吞吐量。
优化
在完成每一轮应用程序并行化之后,开发人员可以着手优化实现以提高性能。由于可以考虑许多可能的优化,因此充分了解应用程序的需求可以帮助使过程尽可能地流畅。但是,与整个APOD一样,程序优化是一个反复的过程(确定优化机会,应用和测试优化,验证所实现的加速并重复),这意味着程序员在看到良好的加速效果之前不必花费大量时间来记住所有可能的优化策略。相反,可以在学习策略时逐步应用它们。
从重叠的数据传输到计算一直到微调浮点运算序列,优化可以应用于各种级别。可用的概要分析工具对于指导此过程非常有用,因为它们可以帮助建议开发人员进行优化工作的最佳方案,并为该指南的优化部分的相关部分提供参考。
部署
完成应用程序一个或多个组件的GPU加速后,可以将结果与原始期望进行比较。回想一下,初始评估步骤允许开发人员确定通过加速给定热点可获得的潜在加速的上限。
在解决其他热点以提高总体速度之前,开发人员应考虑采用部分并行的实现,并将其付诸实践。这很重要,原因有很多;例如,它允许用户尽早从他们的投资中获利(提速可能是部分的,但仍然是有价值的),并且通过向开发者提供一组渐进而不是革命性的更改,将开发人员和用户的风险降至最低。应用。
NVIDIA CUDA软件组成
GPU加速库
CUDA-X库
IndeX框架(IndeX)
语言解决方案
OpenACC编译器指令
NVIDIA CUDA C / C ++编译器(NVCC)
参考资料
CUDA C / C ++代码示例
CUDA文档
开发工具
NVTAGS
DIGITS深度学习培训系统
Nsight集成开发环境
可视分析器
CUDA-GDB命令行调试器
CUDA-MEMCHECK内存分析仪
NVIDIA CUDA更新日志
1.对部分功能进行了优化
2.解了好多不能忍的bug
华军小编推荐:
NVIDIA CUDA能够帮助你解决很多问题,相信只要你敢用,绝对会让你爱不释手的,还推荐给您{recommendWords}