分享最新新版本的英伟达NVIDIA CUDA驱动同步载,CUDA是NVIDIA发明了一种并行计算平台和编程模型。通过利用图形处理单元(GPU)的功能,可以显着提高计算性能。欢迎下载体验。
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
NVIDIA CUDA驱动基本简介
CUDA的开发考虑了几个设计目标:
提供对标准编程语言(例如C)的一小部分扩展,这些扩展可实现并行算法的直接实现。使用CUDA C / C ++,程序员可以专注于算法的并行化任务,而不必花时间在其实现上。
在应用程序同时使用CPU和GPU的情况下支持异构计算。应用程序的串行部分在CPU上运行,并行部分被卸载到GPU。这样,CUDA可以增量地应用于现有应用程序。CPU和GPU被视为具有各自内存空间的单独设备。此配置还允许在CPU和GPU上同时进行计算,而不会争用内存资源。
具有CUDA功能的GPU具有数百个内核,这些内核可以共同运行数千个计算线程。这些内核具有共享资源,包括寄存器文件和共享内存。片上共享内存允许在这些内核上运行的并行任务共享数据,而无需通过系统内存总线发送数据。
NVIDIA CUDA驱动使用方法
评估
对于现有项目,第一步是评估应用程序,以找到负责大部分执行时间的代码部分。有了这些知识,开发人员可以平行评估这些瓶颈,并开始研究GPU加速。
开发人员可以通过了解最终用户的要求和约束,并应用阿姆达尔定律和古斯塔夫森定律来确定性能改进的上限。
平行化
开发人员在确定热点并完成设定目标和期望的基本实践后,需要并行处理代码。根据原始代码,它可以像调用现有的GPU优化库一样简单,如立方玻璃、傅立叶变换、推力或向并行编译器添加一些预处理器指令。
另一方面,一些应用程序的设计需要进行一些重构,以暴露其固有的并行性。CUDA并行编程语言家族(CUDAC++、CUDAFortran等)旨在尽可能简单地表达这种并行性,因为甚至CPU架构也需要公开并行性来提高或简单地维护顺序应用程序的性能。同时,在支持CUDA的GPU上启用这些GPU设计,以实现最大并行吞吐量。
优化
在完成每一轮应用程序并行化后,开发人员可以开始优化以提高性能。充分了解应用程序的需求可以帮助使过程尽可能顺利,因为可以考虑许多可能的优化。然而,像整个应用程序OD一样,程序优化是一个重复的过程(确定优化机会、应用程序和测试优化,验证实现的加速和重复),这意味着程序员在看到良好的加速效果之前不需要花很多时间来记住所有可能的优化策略。相反,它们可以在学习策略时逐渐应用。
从重叠数据传输到计算再到微调浮点计算序列,优化可应用于各级。可用的概要分析工具对指导这一过程非常有用,因为它们可以帮助建议开发人员优化工作的最佳方案,并为指南优化部分的相关部分提供参考。
部署
在完成应用程序中一个或多个组件的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内存分析仪
CUDA工具包官方介绍:
开发、优化和部署经 GPU 加速的应用
NVIDIA® CUDA® 工具包提供了开发环境,可供创建经 GPU 加速的高性能应用。借助 CUDA 工具包,您可以在经 GPU 加速的嵌入式系统、台式工作站、企业数据中心、基于云的平台和 HPC 超级计算机中开发、优化和部署应用。此工具包中包含多个 GPU 加速库、多种调试和优化工具、一个 C/C++ 编译器以及一个用于在主要架构(包括 x86、Arm 和 POWER)上构建和部署应用的运行时库。
借助多 GPU 配置中用于分布式计算的多项内置功能,科学家和研究人员能够开发出可从单个 GPU 工作站扩展到配置数千个 GPU 的云端设施的应用。