Difference between revisions of "DDT"

From UFRC
Jump to navigation Jump to search
m (Text replacement - "hpg2-dev" to "hpg-dev")
 
(26 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Software]][[Category:Development]]
+
[[Category:Software]][[Category:Programming]]
 
{|<!--CONFIGURATION: REQUIRED-->
 
{|<!--CONFIGURATION: REQUIRED-->
 
|{{#vardefine:app|DDT}}
 
|{{#vardefine:app|DDT}}
Line 14: Line 14:
 
|}
 
|}
 
<!--BODY-->
 
<!--BODY-->
Allinea DDT is a graphical source code debugging analysis tool with the power that you need to take control of software bugs whenever they occur, making it simpler to solve even the most complex multi-threaded or multi-process software problems. Includes Allinea MAP for performance analysis.
+
Arm DDT is a graphical source code debugging analysis tool with the power that you need to take control of software bugs whenever they occur, making it simpler to solve even the most complex multi-threaded or multi-process software problems. This installation Includes Arm DDT, MAP for performance analysis, and Arm Reports for characterizing and understanding the performance of HPC applications.  
  
This module enables the use of the TotalView software.
+
This module enables the use of the Arm DDT, MAP, and Reports tools.
  
 
==Using DDT==  
 
==Using DDT==  
First, download the Allinea Forge remote client and install it on your computer:
+
First, download the Arm Forge remote client and install it on your computer:
  
* http://www.allinea.com/products/forge/download
+
* https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-forge
 +
'''IMPORTANT NOTE''':
 +
Please make sure that the version of Arm Forge remote client installed on your computer is consistent with the version of Arm Forge module you use on hipergator. The instructions below assume that the version of your Arm Forge local client is version 20.0.
  
Create a batch submissions script for the application you want to debug as though you were going to submit it to the queue. Be sure that you add the following sequence before the <code>mpiexec</code> command in your script:
+
Create a batch submission script for the application you want to debug as though you were going to submit it to the queue. Be sure that you add the following sequence before the <code>mpiexec</code> command in your script:
  
* <pre>ddt --connect --degbug --log ddt-debug.log \</pre>
+
<pre>ddt --connect --debug --log ddt-debug.log </pre>
  
If you need more help creating the script, please use the example job script further down the page. Then, proceed with the following steps:
+
For newer (3.x+) builds of OpenMPI, you may need to use,
 
 
# Start the remote client on your personal device
 
# In the "Remote Launch" pulldown menu, select "Configure..."
 
# Click "Add" and fill in the following information: <br> '''Connection Name:''' ufrc-ddt <br> '''Host Name:''' <username>@hpg2.rc.ufl.edu <username>@i21b-s4.ufhpc <br> '''Remote Installation Directory:''' /apps/allinea/forge/6.0 <br> '''Remote Script:''' <leave blank>
 
# Click "OK"
 
# Click "Close"
 
# On the main screen, select 'ufrc-ddt' from the Remote Launch pulldown menu
 
# From another window (PuTTY/Terminal/etc.), log into hpg2.rc.ufl.edu as you normally would.
 
# Modify the following command appropriately and use it to schedule your job:
 
 
 
<source lang=bash>cd /ufrc/<group>/<username>/example-directory
 
sbatch example-job
 
</source>
 
  
 +
<pre>ddt --connect --mpi='OpenMPI (Compatibility)' <some_mpi_executable></pre>
  
It may take up to 90 seconds for your job to start; once it does, you will get a connection request from ddt running your job. Accept the request and you should be ready to start debugging your application.  
+
The following example is provided for reference.
  
==Example Job Script==
+
<pre>
<source lang=bash>
 
 
#!/bin/bash
 
#!/bin/bash
 
#SBATCH --job-name=example-job  #A name for your job
 
#SBATCH --job-name=example-job  #A name for your job
Line 58: Line 47:
 
#SBATCH --mem-per-cpu=2000mb  #Per processor memory request
 
#SBATCH --mem-per-cpu=2000mb  #Per processor memory request
 
#SBATCH --time=12:00:00      #Walltime in hh:mm:ss or d-hh:mm:ss
 
#SBATCH --time=12:00:00      #Walltime in hh:mm:ss or d-hh:mm:ss
#SBATCH --partition=hpg2-dev
+
#SBATCH --partition=hpg-dev
  
 
module load <modules_required_for_your_application>
 
module load <modules_required_for_your_application>
module load ddt/6.0
+
module load ddt/20.0
  
 
#mpiexec  ./main > resid.dat
 
#mpiexec  ./main > resid.dat
ddt --connect --degbug --log ddt-debug.log \  
+
ddt --connect --debug --log ddt-debug.log \  
 
   mpiexec  ./main > resid.dat
 
   mpiexec  ./main > resid.dat
</source>
+
</pre>
 +
 
 +
Submit the job with
 +
 
 +
cd /blue/<group>/<username>/example-directory
 +
sbatch example-job
 +
 
 +
Next, start an xterm session in OnDemand.
 +
 
 +
Once both your debugging job and xterm session are running you can connect:
 +
 
 +
# Start the remote client GUI on your personal device
 +
# In the "Remote Launch" pulldown menu, select "Configure..."
 +
# Click "Add" and fill in the following information: <br> '''Connection Name:''' ufrc-ddt <br> '''Host Name:''' <username>@GUI_NODE.rc.ufl.edu<br> '''Remote Installation Directory:''' /apps/arm/forge/20.0 <br> '''Remote Script:''' <leave blank> <br>Note that GUI_NODE corresponds to the gui server the gui job is running on e.g. i21a-s3.
 +
# Click "OK"
 +
# Click "Close"
 +
# On the main screen, select 'ufrc-ddt' from the Remote Launch pulldown menu
 +
 
 +
You will get a connection request from ddt running your job. Accept the request and you should be ready to start debugging your application.
  
 
<!--Modules-->
 
<!--Modules-->
==Required Modules==
+
==Environment Modules==
 +
Run <code>module spider {{#var:app}}</code> to find out what environment modules are available for this application.
  
===Serial===
 
* {{#lowercase:{{#var:app}}}}
 
<!--===Parallel (OpenMP)===
 
* intel
 
* {{#var:app}}
 
===Parallel (MPI)===
 
* intel
 
* openmpi
 
* {{#var:app}}
 
-->
 
 
==System Variables==
 
==System Variables==
* HPC_{{#uppercase:{{#var:app}}}}_DIR
+
* HPC_{{uc:{{#var:app}}}}_DIR
* HPC_{{#uppercase:{{#var:app}}}}_BIN
+
* HPC_{{uc:{{#var:app}}}}_BIN
 
<!--Configuration-->
 
<!--Configuration-->
 
{{#if: {{#var: conf}}|==Configuration==
 
{{#if: {{#var: conf}}|==Configuration==

Latest revision as of 14:30, 29 September 2021

Arm DDT is a graphical source code debugging analysis tool with the power that you need to take control of software bugs whenever they occur, making it simpler to solve even the most complex multi-threaded or multi-process software problems. This installation Includes Arm DDT, MAP for performance analysis, and Arm Reports for characterizing and understanding the performance of HPC applications.

This module enables the use of the Arm DDT, MAP, and Reports tools.

Using DDT

First, download the Arm Forge remote client and install it on your computer:

IMPORTANT NOTE: Please make sure that the version of Arm Forge remote client installed on your computer is consistent with the version of Arm Forge module you use on hipergator. The instructions below assume that the version of your Arm Forge local client is version 20.0.

Create a batch submission script for the application you want to debug as though you were going to submit it to the queue. Be sure that you add the following sequence before the mpiexec command in your script:

ddt --connect --debug --log ddt-debug.log 

For newer (3.x+) builds of OpenMPI, you may need to use,

ddt --connect --mpi='OpenMPI (Compatibility)' <some_mpi_executable>

The following example is provided for reference.

#!/bin/bash
#SBATCH --job-name=example-job  #A name for your job
#SBATCH --output my_job-%j.out #Output File
#SBATCH --error my_job-%j.err  #Error File
#SBATCH --mail-type=FAIL,END  #What emails you want
#SBATCH --mail-user=<username>@ufl.edu   #Where
#SBATCH --nodes=1     #No. of processors requested
#SBATCH --ntasks=1    #Total no. of  processors
#SBATCH --cpus-per-task=1    #No. CPUs per task
#SBATCH --mem-per-cpu=2000mb   #Per processor memory request
#SBATCH --time=12:00:00       #Walltime in hh:mm:ss or d-hh:mm:ss
#SBATCH --partition=hpg-dev

module load <modules_required_for_your_application>
module load ddt/20.0

#mpiexec  ./main > resid.dat
ddt --connect --debug --log ddt-debug.log \ 
   mpiexec  ./main > resid.dat

Submit the job with

cd /blue/<group>/<username>/example-directory 
sbatch example-job 

Next, start an xterm session in OnDemand.

Once both your debugging job and xterm session are running you can connect:

  1. Start the remote client GUI on your personal device
  2. In the "Remote Launch" pulldown menu, select "Configure..."
  3. Click "Add" and fill in the following information:
    Connection Name: ufrc-ddt
    Host Name: <username>@GUI_NODE.rc.ufl.edu
    Remote Installation Directory: /apps/arm/forge/20.0
    Remote Script: <leave blank>
    Note that GUI_NODE corresponds to the gui server the gui job is running on e.g. i21a-s3.
  4. Click "OK"
  5. Click "Close"
  6. On the main screen, select 'ufrc-ddt' from the Remote Launch pulldown menu

You will get a connection request from ddt running your job. Accept the request and you should be ready to start debugging your application.

Environment Modules

Run module spider DDT to find out what environment modules are available for this application.

System Variables

  • HPC_DDT_DIR
  • HPC_DDT_BIN