allinea-DDT installations at NSC


Directory list:

VersionDescription
3.2 Allinea DDT V 3.2
4.1.1 Allinea DDT V 4.1.1

Level of support

Tier 2 NSC has only limited experience with this software, but we will try to help as much as possible. We have ran some tests, for example, if the program comes with a test suite, but they may be far from exhaustive. We will try to install and test new versions, as soon as we can.

Please see the page describing our software support categories for more information.
You can also contact support@nsc.liu.se for further information.

Official homepage: www.allinea.com/products/ddt

Allinea DDT is the most advanced debugging tool available for scalar, multi-threaded and large-scale parallel applications. Features are described on the official homepage. Also, their manual is provided at http://www.allinea.com/Portals/90122/docs/user-guides-and-technical-docs/allinea-ddt–3.2-user-guide-july–2012.pdf

Please contact NSC Support if you have any questions or problems.

Naming scheme for binaries

Name Description
ddt DDT debugging binary which truns on its GUI

How to run

  1. Load the DDT module corresponding to the version you want to use, e.g.,

    module load allinea-DDT/3.2
    

    It launches the DDT binary path.

  2. At your first use, you shall set environmental configuration. Log in through ThinLinc or with X-ternimal turned on. For use of ThinLinc, please refer to Triolith Thinlinc User Guide. For X-windows user, install Cygwin-X (Windows user) or other relevant software, run X-client on your computer, log in with X–11 forwarding turned on.

    Use of ThinLinc is highly recommended for two reasons: (1) ThinLinc loads a Linux desktop so that you can work on multiple graphical tasks under the same environment. (2) The graphical process through ThinLinc is faster than the use of X-windows client.

    Using DDT requires configuration, say, how to set up the scheduler, work on job scheduler, etc. So initially it has to be provided. If you intend to use DDT in interactive mode, scheduler setup is not needed. (NSC would recommend working with interactive mode for direct debugging.)

    If you want to change this initial setup later,

    ddt -cleanconfig $home/.ddt/config.ddt
    

    will delete your config file (for the new setup). You will perform configuration at the next DDT run.

  3. For enabling the use, compile your source code with -g flag, that’s it!

    For running the debugger, run

    ddt ./your_executable
    

    It will load a new DDT window. The interface is very intuitive so you will easily use it. FYI, when DDT has been turned on, it opens the configuration window. your_executable name will be mentioned in ‘Application’. For MPI application, check ‘MPI’ enabled. For memory debugging, check ‘Memory Debugging’ turned on.

  4. Regular debug:

    That is quite intuitive, so not hard to understand.

    Tracing variable with properties, all others can be done rather easily

  5. Memory debug:

    Initially check the memory debug when you start a new session.

    In the “View” and “Current Memory Usage”,

    • if you click on a bar, the list of allocated pointers will be available
    • if you click on a pointer, the stack view will appear
    • and if you click on the function call and get back to the source code, you will see where the allocation has been made.

    To debug memory leaks, I suggest that:

    • you run the code until the end and watch at the memory usage at that point (remaining arrays should have been freed at this stage)
    • or put a breakpoint in the “right loop” and watch the memory grow as you move forward.

    Though this memory debug is quite useful, also it should be used with care. It usually slows down the run, also it fails to find the correct buggy location if the problem comes from the false MPI communication. NSC experienced one user’s code has the wrong MPI communication call on threaded computing (which uses boost), DDT memory debug detected that it is due to orphan MPI communication (i.e., dummy communication call from sub-threads were stacked on buffer) while it failed to mark the erronous location.

  6. WARNING:

    We recommend users to use DDT through an interactive allocation, not running on the login node. Resource heavy processes on the login node will be terminated.

Please refer to the Allinea-DDT User Manual for more details.

Using Interactive

To get the interactive allocation, type

interactive -N node_count -t hh:mm:ss -A your_allocation