更快速的故障隔离、改进的内存优化和针对您的大规模HPC应用程序的动态可视化
了解大规模并行和多核应用程序,对进程和线程执行进行前所未有的控制,并了解程序状态和数据。
使用TotalView for HPC,在单个窗口中同时调试多个进程和线程,以完全控制程序的执行:在单个线程或任意进程或线程组内逐行运行、单步执行和暂停代码。通过反向调试从失败中向后工作,通过消除应用程序的重复重新启动更快地隔离根本原因。重现在使用线程、OpenMP、MPI、GPU或协处理器的并发程序中出现的困难问题。
内存泄漏、死锁和竞争条件都可能是过去的事情。无论是经验丰富的开发人员还是刚接触到多核或并行应用程序的开发挑战的新手,TotalView都能快速发现错误、验证原型、验证计算并验证代码的正确性。
TotalView与C、C++和Fortran应用程序一起编写Linux(包括Cray和Blue Gene平台)、LinuxPowerLE、UNIX、Mac OS X和Xeon PHI,支持OpenMP、MPI、OpenPOWER、OpenACC/CUDA和ARM。
TotalView for HPC的功能
为您的团队选择合适的动态分析工具取决于您的团队需求、语言支持和平台可用性。
TotalView支持以下关键技术:
笔记本电脑到超级计算机:笔记本电脑、工作站、服务器、部门集群和超级计算机
C和C++:模板和标准模板库的全面支持
Fortran:包括通用块和模块等概念
带MPI的多进程:支持20种不同的MPI实现
多线程进程:使用pthreads、OpenMP、TBB调试多线程应用程序
Xeon Phi:支持调试Intel Xeon Phi(KNC, KNL)
OpenPOWER Linux PowerLE:支持在OpenPower LittleEndian平台上进行调试
加速器支持:使用CUDA或OpenAcc来利用NVIDIA GPU的调试程序
ARM64支持
混合语言Python-C/C++支持:用Python和C/C++ Python扩展调试程序
TotalView提供了强大的功能,使调试尽可能简单。
数据可视化:程序数据和变量的可视性
类型转换:将自定义数据结构转换为更简单的形式进行调试
高级内存调试:在C、C++、Fortran和HPC应用程序中查找内存泄漏和内存错误
评估点:评估表达式,使其不仅仅是查看数据值
TVScript:无人参与的批调试:在非交互式调试会话中运行和测试应用程序
反向调试:记录和重放、调试Linux应用程序中的竞争条件和死锁
远程显示:从Linux、Mac OS X或Windows系统轻松设置远程调试会话
C与C++调试及故障排除
C和C++可以控制数据、访问模式、内存管理和执行的细节。但是,当涉及到构建和维护可扩展的科学应用程序时,对低级机器行为的直接控制几乎不会留下误差。TooVIEW为复杂C和C++应用程序的故障排除提供了理想的环境。它们具有对象、数据结构和指针的详细视图,简化了对复杂对象的处理。
标准模板库(STL)集合类简化了操作程序数据的方式,但在程序挂起或崩溃时,它们会使故障排除变得复杂。TotalView类型转换工具(TTF)为您提供了一种灵活的方式来为数据对象提供备用显示。STLView转换提供了STL集合类对象的逻辑视图,提供了更实用的列表数据视图。最终结果是对代码的结构和行为进行了简化、直观的查看。
用Python和C/C++进行混合语言调试
许多开发人员利用Python的能力来开发应用程序,并调用C/C++代码来执行计算密集型任务或访问现有算法。跨语言障碍的调试可能是有挑战性的,但是代码动态显示通过跨语言障碍的完全集成的调用堆栈,并允许所有的Python和C/C++变量及其值被检查,这很容易。没有其他的调试器让你很容易理解、诊断和修复混合语言Python和C/C++应用程序!
Fortran调试
虽然C和Fortran都有一些共同点,但Fortran不是C。TotalView正确地表示了Fortran符号、类型和概念,如通用块和模块,这些在其他语言中不存在。
Fortran特别擅长表示和处理数值和数学数据。它的一个关键特性是它能够表示数组数据。使用Fortran源代码的科学家和工程师在一定程度上利用了对多维数组、数组分配和Fortran指针强大功能等的语言级支持。我们的技术可以帮助您利用Fortran的这些关键属性来确保代码正常工作。
用于理解应用程序行为、计算数据和模式的数据可视化
您正在开发的大多数应用程序都是处理数据的引擎。无论是观察还是计算,这都是你真正关心的数据。当你试图深入了解物理系统的行为时,你可以定量地接近它。当试图理解计算系统的行为时,同样的方法是必要的。
故障排除包括探索活动应用程序的行为,寻找关于为什么计算没有按预期进行的线索,对以不同方式呈现的数据进行切片以发现模式。重要的是,您拥有能够轻松查看和操作数据的工具,而TotalView有助于简化此过程。
调试内存泄漏和malloc错误
内存是一个有限的资源这一事实对应用程序的实现有着重大的影响,特别是当它包含数百万行代码时。随着程序复杂性的增加,内存泄漏调试和malloc错误的故障排除变得更加困难。内存相关的代码缺陷可能导致失控的资源和随机数据损坏。内存错误也可能表现为随机程序崩溃,对生产力造成负面影响。在最坏的情况下,内存错误会导致数据损坏,导致程序生成不准确的结果。TotalView通过确保工作代码和准确的结果帮助您管理风险。
支持MPI、OpenMP和其他并行范例
TotalView为MPI、OpenMP、UPC和GA提供全面的支持。TotalView支持20多个MPI实现,是并行编程课程中的首选调试器。
多线程应用程序/多核架构
提高时钟频率的时代已经结束。处理器体系结构具有多核和多核设计的特点。构建多线程应用程序或将串行应用程序转换为并行应用程序是一个重大挑战。TotalView和ReplayEngine是为帮助您管理并发性、并行性和线程所带来的挑战而构建的。
即使在测试良好的多线程应用程序中,争用条件也是一个常见问题。您可以使用锁、信号量和原子操作来避免竞争条件,但它们可以引入自己的微妙问题。我们的工具提供了代码行为的可视性,提高了您对这些问题影响的理解。
使用TVScript进行无人值守批调试
TVScript是一个使用TotalView进行非交互式调试的框架。定义目标程序中可能发生的一系列事件,TVScript在其控制下加载程序,根据需要设置断点,然后运行程序。在每个程序停止时,TVScript都会收集记录到一组输出文件中的数据,以便在作业完成后进行查看。如果调用没有参数的TVScript,它将提供使用指南和可用事件和操作的列表。TVScript被比作类固醇的printf。
加速器支持
Linux x86-64上的TotalView支持CUDA和OpenAcc调试:
CUDA支持的版本8.0、9.0–9.2和10.0
在同一会话中调试主机和设备代码
CUDA直接在Tesla, Kepler, Maxwell或Fermi硬件上运行
多GPU调试支持
在TotalView的新用户界面和经典用户界面中都支持CUDA调试
CUDA动态并行
CUDA统一内存
Linux和GPU设备线程可见性
对分层设备、块和线程内存的完全可见性
通过逻辑和设备坐标导航设备线程
CUDA函数调用、主机固定内存区域和CUDA上下文
处理内联和堆栈上的CUDA函数
用于CUDA功能的命令行界面(CLI)命令
同时使用多个NVIDIA设备的应用程序
CUDA加速集群上的MPI应用程序
统一的虚拟寻址和GPUDirect
CUDA C++和内联PTX
报告内存错误并处理CUDA异常
完全支持PGI和Cray CCE编译器编译的OpenACC指令
CUDA动态模式程序的兼容性
调试CUDA核心文件