⑴Nvidia Cuda是NVIDIA推出的一种并行计算平台和编程模型,包含了CUDA指令集架构(ISA以及GPU内部的并行计算引擎,主要通过利用图形处理单元(GPU功能,显著提高计算机性能。
⑵对于现有项目,第一步是评估应用程序,以找到负责大部分执行时间的代码部分。有了这些知识,开发人员就可以评估这些瓶颈以进行并行化,并开始研究GPU加速。
⑶通过了解最终用户的要求和约束并应用阿姆达尔定律和古斯塔夫森定律,开发人员可以通过加速应用程序已识别部分来确定性能改进的上限。
⑷在确定了热点并完成了设置目标和期望的基本练习之后,开发人员需要并行处理代码。根据原始代码,这可以像调用现有的GPU优化库一样简单,例如立方玻璃, 傅立叶变换, 要么 推力,也可以像向并行化编译器添加一些预处理器指令一样简单。
⑸另一方面,某些应用程序的设计将需要进行一些重构以暴露其固有的并行性。由于甚至CPU架构也需要公开并行性以改善或简单地维护顺序应用程序的性能,因此CUDA并行编程语言家族(CUDA C ++,CUDA Fortran等旨在使这种并行性的表达尽可能地简单。 ,同时在支持CUDA的GPU上启用操作,这些GPU设计用于实现最大并行吞吐量。
⑹在完成每一轮应用程序并行化之后,开发人员可以着手优化实现以提高性能。由于可以考虑许多可能的优化,因此充分了解应用程序的需求可以帮助使过程尽可能地流畅。但是,与整个APOD一样,程序优化是一个反复的过程(确定优化机会,应用和测试优化,验证所实现的加速并重复,这意味着程序员在看到良好的加速效果之前不必花费大量时间来记住所有可能的优化策略。相反,可以在学习策略时逐步应用它们。
⑺从重叠的数据传输到计算一直到微调浮点运算序列,优化可以应用于各种级别。可用的概要分析工具对于指导此过程非常有用,因为它们可以帮助建议开发人员进行优化工作的最佳方案,并为该指南的优化部分的相关部分提供参考。
⑻完成应用程序一个或多个组件的GPU加速后,可以将结果与原始期望进行比较。回想一下,初始评估步骤允许开发人员确定通过加速给定热点可获得的潜在加速的上限。
⑼在解决其他热点以提高总体速度之前,开发人员应考虑采用部分并行的实现,并将其付诸实践。这很重要,原因有很多;例如,它允许用户尽早从他们的投资中获利(提速可能是部分的,但仍然是有价值的,并且通过向开发者提供一组渐进而不是革命性的更改,将开发人员和用户的风险降至最低。应用。
⑽IndeX框架(IndeX
⑾OpenA编译器指令
⑿NVIDIA CUDA C / C ++编译器(NV
⒀CUDA C / C ++代码示例
⒁DIGITS深度学习培训系统
⒂Nsight集成开发环境
⒃CUDA-GDB命令行调试器
⒄CUDA-MEMCHECK内存分析仪