針對 C與C++ 與 Fortran 應用程式的動態源代碼與記憶體調試器
TotalView 是一款基於GUI(圖形用戶界面)的源代碼檢測分析工具,幫助您以前所未有的強大功能控制進程與線程執行,查看可視化的程式狀態與變量。 它允許您調試一個或多個進程與/或線程,完全控制程式執行。您可以覆置並解決棘手(利用線程、OpenMP、MPI 或計算加速器)的難題。 使用TotalView提供的分析顯示,他可以對您的計畫進行有效的調試與記憶體錯誤和遺漏,並診斷死鎖與競爭條件等的難題。TotalView 與專為 Linux、UNIX 與 Mac OS X 平台編寫的 C, C++ 與 Fortran 應用程式協同工作。
» C, C++ Comprehensive support for templates and standard template libraries
» Fortran Includes concepts such as common blocks and modules
» Data Visualization Visibility into program data and variables
» Memory Help for problems resulting from extensive requirements of large systems
» Multi-process Support for 20 different MPI implementations, as well as OpenMP
» Remote Display Windows and Linux desktop access
» Threads and Concurrency Troubleshoot deadlocks and race conditions
更新介紹
Visualize Array Data with 3D Surface Plots
TotalView’s data visualization capabilities have been enhanced in the 2023.2 release with the ability to visualize array data with a new 3D surface plot. To view array data with the surface plot, first select Add to Array View from the context menu of a data element in the Data Window.
Once the Array View is displayed, select the Surface Plot button, to visually examine the array data. The data displayed can be sliced by changing the variable expression. In the following screenshot all the data is displayed using expression v[:][:]. To display a subset of the data the expression could be altered to something like v[10:30][20:40]. Utilize the plot controls to rotate and zoom the display.
Surface plot display is only supported on the Linux-x86-64, Linux ARM64, and macOS platforms and requires OpenGL version 2.1 or greater. See the OpenGL Support release notes for the Linux and macOS platform below for more details.
TotalView UI Share Group Target Support
For TotalView2023.2, the debugger’s underlying ability to target a Share Group for various debugger operations has been added to the UI. As TotalView acquires processes into its debugging session it organizes them into a Control Group and Share Group based on how they were launched and their executable image. All processes launched from a common starter process, such as MPI’s mpirun, will be placed in the same Control Group. Processes sharing a similar executable image are organized into a common Share Group. For example, a Multi-Program/Multi-Data (MPMD) style application will utilize multiple executable images. As processes of these images are started, they are placed in their own Share Groups. A Share Group of processes can then be targeted for specific debugging operations such as stepping. Allowing you to just step just the process in the Share Group. See the TotalView User Guide for more details on using Share Groups during your debugging sessions.
Memory Buffer Overwrite Detection
TotalView 2023.2 adds the ability to detect when an allocated memory block has been overwritten beyond the ends of its bounds using guard block technology. To enable buffer overwrite detection simply turn on the “Guard allocated memory” option from the Memory Debugging Options dialog box from the TotalView toolbar or Debug menu.
Once enabled, TotalView will verify memory block bounds have not been overwritten when they are freed and raise a memory event if any violations are found. The next version of TotalView will provide a guard block check report to verify all memory blocks at any time during a debugging session.
Advanced Memory Debugging with Hoarding
The ability to “hoard” deallocated memory blocks have been added to TotalView 2023.2. Hoarding is useful when analyzing dangling pointer bugs. When a hoarding is turned on blocks being freed are not actually freed with the operating system but instead are “held aside” by TotalView’s memory debugging technology. This allows the contents for the memory block to remain stable since it will not be reissued as new memory is allocated. Keeping the memory contents stable eliminates sporadic failures due to inconsistent memory contents and allows the developer to continue to diagnose a dangling pointer situation. Hoarding is often combined with memory debugging painting which paints a pattern to newly allocated and deallocated memory. Painting a pattern into memory creates consistent data in the memory blocks to more easily identify read before initialize and read after free issues.
Upcoming macOS M1/M2 Support
TotalView 2023.2 adds support for macOS Ventura but only for the Apple Intel architecture. Active development to support Apple’s ARM based M1 and M2 chipset is underway. An early access beta of the upcoming TotalView 2023.3 release will be available this summer.
Bug Fixes and Performance Improvements
Numerous bug fixes and performance improvements have been addressed, including performance improvements for data transformations.
View Full Release Notes
For more details, please refer to the TotalView release notes, where you can see more details and specs on how to enable various features, what to expect from updates, and info about any features on hold.
HPC Features
Debug applications running in your HPC environments faster with TotalView, by taking advantage of its abilities to:
- Support more than 20 different MPI implementations.
- Debug multithreaded applications with pthreads, OpenMP, and TBB.
- Easily establish interactive debugging sessions within your cluster — including through batch submission systems.
- Provide visualizations of program data and variables.
- Define how aggregate data in displayed, so you can see custom data structures in simpler forms.
- Advanced NVIDIA CUDA and OpenACC GPU debugging
- Debug ROCm / HIP applications on AMD GPUs
- Perform advanced memory debugging, including memory leaks and errors.
Reverse Debugging
Speed issue resolution in HPC code by using the reverse debugging capability in TotalView to:
- Work back from a failure, error, or crash to its root cause.
- Capture a live failing process and replay the execution history to get instant visibility into what your process did and why.
- Quickly fix race conditions, segmentation faults, stackoverflow errors, and double free errors.
- Jump to a bookmark in your program's execution history.
- Full inspection of global and local variables.
- Capture hard to reproduce test and production failures during DevOps phases with Undo's LiveRecorder Software Failure Replay platform and replay the recordings in TotalView.
- Step forward and backward by function, line, and instruction.
- Support continuous integration, collaboration, and code-learning by recording code.
- Eliminate restarting your program repeatedly with different breakpoints.
- Learn new code and deliver enhancements quicker.
Memory Debugging
Find memory leaks and buffer overruns with TotalView's scalable memory-debugging technology:
- Easily find memory leaks and understand heap usage.
- Detect malloc/free, new/delete API misuse.
- Detect buffer overruns.
- Share memory debugging data with colleagues through data files and HTML reports.
- Compare memory results between sessions to verify elimination of leaks.
- Save time and money with low overhead technology that does not require recompilation or instrumentation.
Remote Debugging
TotalView provides several mechanisms to make it easy to debug remotely.
Remote UI: Run with the full power of the TotalView User Interface from your local laptop or workstation and securely debug on a remote cluster or workstation.
Remote Display Client (RDC): Easily establish a remote desktop debugging session with TotalView running remotely on a cluster or workstation. Works with batch schedulers such as SLURM, PBS Pro and Load Leveler as well.
Customers can request the RDC for free via the software download form.
Reverse Connect: Easily submit your job into a cluster and, once run, a reverse connection is made back to a waiting TotalView allowing you to efficiently debug your code.
Languages
You can debug applications written in one or more of the following languages, using TotalView:
- C and C++
- Fortran
- Mixed-language applications written in Python and C/C++
Operating Systems
The applications you debug using TotalView can run on the following operating systems:
- Linux including Cray Linux Environment (CLE) and PowerLE
- UNIX including AIX and Solaris
- macOS
Processors
You can use TotalView to debug and optimize code for laptops, workstations, servers, clusters, and supercomputers with the following processors:
- ARM (aarch64)
- Intel/AMD (x86-64, x86)
- NVIDIA GPUs on Linux x86-64, Linux ARM64, and Linux PowerLE (Power9)
- NVIDIA Jetson AGX Xavier
- OpenPOWER (ppc64le)
- Power (ppc64, ppc32)
- SPARC
APIs
Use TotalView to debug code that uses the following standardized APIs, plus many more:
- CUDA
- MPI
- OpenACC
- OpenMP
- pthreads
Support Notes
Support information here in the product distribution is a snapshot. For the latest information, see the PDF version on the TotalView documentation web site.
X Windows: X Windows is required on all platforms to run the TotalView and MemoryScape GUIs. Systems used for remote debugging, i.e. those running only the TotalView Server, do not need X Windows installed.
OpenMP: Most languages now support OpenMP. If your language supports it, and if your OpenMP code compiles successfully with one of our supported compilers, then your OpenMP is considered supported by TotalView.
OMPD: A compiler that supports OpenMP 5.x is required. Currently, the only supported OMPD 5.x compiler is LLVM’s Clang 12 (https://github.com/llvm/ llvm-project). For more information on OpenMP compilers, see OpenMP Compilers and Tools on the OpenMP website.
CUDA debugging:
Operating systems support: Linux x86-64, Linux PowerLE/OpenPOWER, and Linux-arm64 operating systems. Current support is for the 9.2, 10, and 11 tool chains.
NVIDIA GPUs support: Tesla, Fermi, Kepler, Pascal, Volta, Turing, and A100 Ampere
Notes: 1) There is limited support for the Dynamic Parallelism feature; 2) On the NVIDIA Jetson Xavier Developer Kit, you must debug applications as root. For more information, please see “Using the CUDA Debugger” in the TotalView User Guide.
» AMD ROCm debugging:
» Operating systems support: Linux x86-64. Current support is for ROCm 5.3, 5.4, and 5.5.
» AMD ROCm GPUs support: MI50, MI100, MI200 series GPUs
Notes: TotalView's support for AMD ROCm GPUs depends on preliminary releases of the ROCm development kit. As new ROCm releases become available, TotalView will incorporate updates, and will also continue to add new ROCm debugging capabilities to future TotalView releases.
» ReplayEngine for reverse debugging: Supported on Linux x86-64 operating systems. On other platforms, ReplayEngine buttons and menu selections are grayed out in the UI. For more information, see Reverse Debugging with ReplayEngine”. Replay Engine supports the IP transport mechanism on most MPI systems. It supports communication over Infiniband using either the IBverbs or the QLogic PSM transport layers on some systems. Please see the section “Using ReplayEngine with Infiniband MPIs” in the TotalView User Guide for details.
» LiveRecorder: Debugging LiveRecorder-generated recording files up to version 6.11 of LiveRecorder is supported on Linux x86-64 operating systems.
» Python debugging: Python 2.7 and 3.5 - 3.10 debugging is supported on Linux x86-64 operating systems. For more information, please see “Debugging Python” in the TotalView User Guide.
Python” in the TotalView User Guide.
Platforms
|
Operating Systems
|
Compilers
|
MPI Products
|
Linux x86-64
|
Red Hat Enterprise 7.9 and 8 and CentOS 7.9, 8 (Stream), and 9
Red Hat Fedora 34, 35, and 36 Ubuntu 18.04, 20.04, and 22.04 SuSE Linux Enterprise Server 12 and 15 Rocky Linux 8 |
Intel oneAPI 2021 - 2022
Intel 18 -19 GNU (gcc, g++, gfortran) 4.3 - 12 PGI Workstation 11.2 - 18.10 Oracle Studio 12 NVIDIA OpenACC C and C++: Clang 3 - 7 AMD Clang 5 Fortran: Absoft Pro 17 - 19 |
Argonne MPICH
Argonne MPICH2 GNU SLURM HPE MPI 2 HPE MPT Intel MPI Intel oneAPI Open MPI OSU MVAPICH OSU MVAPICH2 Bullx MPI IBM Platform MPI Berkeley UPC (32-bit only) |
Apple Macintosh
See Note 1 |
macOS Monterey (12)
macOS Ventura (13) |
Intel oneAPI 2021 - 2022
Intel 18 -19 GNU (gcc, g++, gfortran) 4.3 - 12 C/C++: Apple Clang 9 - 13 Fortran: Absoft Pro 17 - 19 |
Argonne MPICH
Argonne MPICH2 Intel oneAPI Open MPI |
Cray XT / XE/ XK / XC
See Note 2 |
Cray Linux Environment (CLE)
|
PGI, GNU (gcc, g++, gfortran), and CCE
|
HPE Cray MPI
|
Cray EX (Shasta)
See Note 3 |
HPE Cray OS (SLES)
|
PGI, GNU (gcc, g++, gfortran), and CCE
|
HPE Cray MPI
|
Linux PowerLE / OpenPOWER |
Ubuntu 18.04 Red Hat Enterprise Linux 7.5 |
GNU (gcc, g++, gfortran) 4.3 - 12 NVIDIA OpenACC |
Open MPI |
Linux-arm64 | Ubuntu 18.04, 20.04, and 22.04 Red Hat Enterprise 7.9 and 8 and CentOS 7.9, 8 (Stream), and 9 |
GNU (gcc, g++, gfortran) 4.3 - 12 Arm Compiler 22 NVIDIA OpenACC C and C++: Clang 3 - 7 |
Open MPI |
IBM RS6000 Power AIX See Notes 4 & 5 |
AIX 7.1 and 7.2 | C and C++: GNU (gcc, g++, gfortran) 10, 11 IBM XLC 12.1, 13.1, 16.1 IBM Open XL 17.1 Fortran: IBM XL Fortran 12.1, 13.1, 16.1 |
Argonne MPICH Argonne MPICH2 Open MPI PE POE |
Oracle SPARC Solaris See Note 4 |
Solaris 11 | GNU (gcc, g++, gfortran) 4.3 - 12 Oracle Studio 12 |
Argonne MPICH Argonne MPICH2 Open MPI Sun Cluster Tools |
Note 1: The Classic TotalView UI requires X11. For important notes on installing TotalView on macOS, please see the section Mac OS Installations” in the TotalView Installation Guide.
Note 2: Support on the XK6 platform for Cray's OpenMP Accelerator Directives and Cray's OpenACC Directives. For details, see the section “Directive-Based Accelerator Programming Languages” in the TotalView User Guide.. ReplayEngine supports debugging MPI-based programs using Cray MPI over the Gemini Interconnect found on Cray XE (x86_64 only) supercomputers.
Note 3: For details on installing and using TotalView on Cray EX (Shasta) systems, see "Running TotalView on a Cray EX (Shasta) system" in the Known Issues section of the TotalView release notes, available at https://help.totalview.io.
Note 4: Classic TotalView UI only
Note 5: The TotalView Message Queue Display (MQD) feature with applications using IBM MPI Parallel Environment (PE) requires the threaded version of the MPI library.