使用 TotalView 调试 CUDA 加速并行应用程序
1. 引言
NVIDIA 的 CUDA 语言扩展为科学家和开发者提供了一个有趣的机会,可加速在单个工作站或配备 GPU 卡的专用节点集群上运行的计算密集型应用程序的运行时性能。然而,开发者在将应用程序适配到 GPU 时,发现要充分利用可用性能,需要掌握数据并行编程的概念,并深入了解 GPU 架构。并行开发和调试工具正不断改进,以帮助开发者实现这些目标。
2. HPC 调试挑战
HPC 应用程序通常作为分布式并行应用程序在集群类型的机器上运行,编写这类应用程序需要付出巨大努力。以下是相关挑战:
- 程序和数据分解 :科学家和开发者需要将任务分解为小单元,分布到集群中。同时要特别关注操作顺序、数据和资源依赖关系,以及数据移动的带宽和延迟。
- 框架和库的复杂性 :MPI、UPC、Global Arrays 等框架和库虽能构建并行应用程序,但在分割程序和数据时,确保数据移动和适当同步会带来巨大复杂性,这在验证、故障排除和调试应用程序时成为问题。
- 并行编程的额外错误风险 :将算法并行化通常会引入额外代码和更复杂的数据结构,增加了出错的机会。
- 并行执行的错误影响 :并行应用程序在多个节点上同时执行不同代码,一处错误可能导致局部失败或引发一系列事件,导致错误数据传输到其他节点,引发错误结果或崩溃。同步失败可能导致罕见错误,且这些错误可能仅在特定规模或特定资源映射下才会显现。
- 异构计算元素的引入
超级会员免费看
订阅专栏 解锁全文
5223

被折叠的 条评论
为什么被折叠?



