<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://helpwiki.sharcnet.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Parallel_Debugging_with_DDT</id>
	<title>Parallel Debugging with DDT - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://helpwiki.sharcnet.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Parallel_Debugging_with_DDT"/>
	<link rel="alternate" type="text/html" href="https://helpwiki.sharcnet.ca/wiki/index.php?title=Parallel_Debugging_with_DDT&amp;action=history"/>
	<updated>2026-06-02T22:54:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://helpwiki.sharcnet.ca/wiki/index.php?title=Parallel_Debugging_with_DDT&amp;diff=374&amp;oldid=prev</id>
		<title>Syam at 19:26, 18 March 2021</title>
		<link rel="alternate" type="text/html" href="https://helpwiki.sharcnet.ca/wiki/index.php?title=Parallel_Debugging_with_DDT&amp;diff=374&amp;oldid=prev"/>
		<updated>2021-03-18T19:26:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:26, 18 March 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l255&quot;&gt;Line 255:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 255:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Can be a mixed MPI/CUDA code, but can only use one CPU and one GPU per node, up to 8 nodes.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Can be a mixed MPI/CUDA code, but can only use one CPU and one GPU per node, up to 8 nodes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ddt_wiki21&lt;/del&gt;.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ddt_wiki21&lt;/ins&gt;.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Tutorials]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Tutorials]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!--checked2016--&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!--checked2016--&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Syam</name></author>
	</entry>
	<entry>
		<id>https://helpwiki.sharcnet.ca/wiki/index.php?title=Parallel_Debugging_with_DDT&amp;diff=352&amp;oldid=prev</id>
		<title>Syam: Created page with &quot;=Overview of DDT=  ==Introduction==  The Distributed Debugging Tool (DDT) is a powerful commercial debugger with a graphical user interface (GUI).  It’s main intended use is...&quot;</title>
		<link rel="alternate" type="text/html" href="https://helpwiki.sharcnet.ca/wiki/index.php?title=Parallel_Debugging_with_DDT&amp;diff=352&amp;oldid=prev"/>
		<updated>2021-03-18T19:13:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Overview of DDT=  ==Introduction==  The Distributed Debugging Tool (DDT) is a powerful commercial debugger with a graphical user interface (GUI).  It’s main intended use is...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Overview of DDT=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The Distributed Debugging Tool (DDT) is a powerful commercial debugger&lt;br /&gt;
with a graphical user interface (GUI).  It’s main intended use is for&lt;br /&gt;
debugging parallel MPI codes, though it can also be used with serial, threaded (OpenMP / pthreads), and GPU (CUDA; also mixed MPI and CUDA) programs.  The product was&lt;br /&gt;
developed by Allinea (U.K.). It is installed on Graham cluster. The DDT software page can be&lt;br /&gt;
found [https://docs.computecanada.ca/wiki/ARM_software here].&lt;br /&gt;
&lt;br /&gt;
DDT supports C, C++, and Fortran 77 / 90 / 95 / 2003.  Detailed&lt;br /&gt;
documentation (the User Guide) is available as a PDF file on Graham, in&lt;br /&gt;
&lt;br /&gt;
 ${EBROOTALLINEA}/doc&lt;br /&gt;
&lt;br /&gt;
(One has to load the corresponding module first; see below.)&lt;br /&gt;
&lt;br /&gt;
==Preparing your program==&lt;br /&gt;
&lt;br /&gt;
The code has to be compiled with the switch -g, which tells the&lt;br /&gt;
compiler to generate symbolic information required by any&lt;br /&gt;
debugger. Normally, all optimizations have to be turned off. For&lt;br /&gt;
example,&lt;br /&gt;
&lt;br /&gt;
 f77 -g -O0 -o program program.f&lt;br /&gt;
&lt;br /&gt;
 mpicc -g -O0 -o code code.c&lt;br /&gt;
&lt;br /&gt;
For CUDA code, you can first compile the CUDA part (*.cu files) using nvcc,&lt;br /&gt;
&lt;br /&gt;
 nvcc -g -G -c cuda_code.cu&lt;br /&gt;
&lt;br /&gt;
and then link with the non-CUDA part of the code, using cc for serial&lt;br /&gt;
&lt;br /&gt;
 cc -g main.c cuda_code.o -lcudart&lt;br /&gt;
&lt;br /&gt;
or mpicc for mixed MPI/CUDA code:&lt;br /&gt;
&lt;br /&gt;
 mpicc -g main.c cuda_code.o -lcudart&lt;br /&gt;
&lt;br /&gt;
==Launching DDT==&lt;br /&gt;
&lt;br /&gt;
DDT is a GUI application, so one has to set up the environment properly to run X-windows (graphical) applications on Graham:&lt;br /&gt;
&lt;br /&gt;
* Microsoft Windows: use free [https://docs.computecanada.ca/wiki/Connecting_with_MobaXTerm mobaxterm app]&lt;br /&gt;
* Linux / Unix: nothing to install&lt;br /&gt;
* Mac: install a free app [https://www.xquartz.org/ XQuartz]&lt;br /&gt;
&lt;br /&gt;
In all cases, add &amp;quot;-Y&amp;quot; to all your ssh commands, for X11 tunelling.&lt;br /&gt;
&lt;br /&gt;
DDT is an interactive GUI application, so before using it one has to first allocate a compute node (or nodes) with salloc, e.g.&lt;br /&gt;
&lt;br /&gt;
 salloc -A account_name --x11 --time=0-3:00 --mem-per-cpu=4G --ntasks=4  (for CPU codes)&lt;br /&gt;
 salloc -A account_name --x11 --time=0-3:00 --mem-per-cpu=4G --ntasks=1 --gres=gpu:1  (for GPU codes)&lt;br /&gt;
&lt;br /&gt;
Once the resource becomes available, load the corresponding DDT module:&lt;br /&gt;
&lt;br /&gt;
 module load allinea-cpu  , or&lt;br /&gt;
 module load allinea-gpu&lt;br /&gt;
&lt;br /&gt;
For MPI codes, one also has to execute the following command:&lt;br /&gt;
&lt;br /&gt;
 export OMPI_MCA_pml=ob1&lt;br /&gt;
&lt;br /&gt;
or else the Message queue display feature will not work.&lt;br /&gt;
&lt;br /&gt;
To debug a code, simply type &lt;br /&gt;
&lt;br /&gt;
 ddt program [optional arguments]&lt;br /&gt;
&lt;br /&gt;
After a couple of seconds, you will be presented with the following window:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki1.png]]&lt;br /&gt;
&lt;br /&gt;
==User interface== &lt;br /&gt;
&lt;br /&gt;
DDT uses a tabbed-document interface.  Each component of DDT is a&lt;br /&gt;
dockable window, which may be dragged around by a handle. Components&lt;br /&gt;
can also be double-clicked, or dragged outside of DDT, to form a new&lt;br /&gt;
window.  Some of the user-modified parameters and windows are saved by&lt;br /&gt;
right-clicking and selecting a save option in the corresponding window&lt;br /&gt;
(Groups; Evaluations; Breakpoints etc).&lt;br /&gt;
&lt;br /&gt;
DDT also has the ability to load and save all these options&lt;br /&gt;
concurrently to minimize the inconvenience in restarting&lt;br /&gt;
sessions. Saving the session stores such things as process groups, the&lt;br /&gt;
contents of the Evaluate window and more.  When DDT begins a session,&lt;br /&gt;
source code is automatically found from the information compiled in&lt;br /&gt;
the executable.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Find&amp;quot; and &amp;quot;Find In Files&amp;quot; dialogs are found from the &amp;quot;Search&amp;quot;&lt;br /&gt;
menu. The &amp;quot;Find&amp;quot; dialog will find occurrences of an expression in the&lt;br /&gt;
currently visible source file. The &amp;quot;Find In Files&amp;quot; dialog searches all&lt;br /&gt;
source and header files associated with your program and lists the&lt;br /&gt;
matches in a result box. Click on a match to display the file in the&lt;br /&gt;
main Source Code window and highlight the matching line.&lt;br /&gt;
&lt;br /&gt;
DDT has a &amp;quot;Goto line&amp;quot; function which enables the user to go directly to&lt;br /&gt;
a line of code (in the &amp;quot;Search&amp;quot; menu, or &amp;#039;&amp;#039;Ctrl-G&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
==Controlling Program Execution==&lt;br /&gt;
&lt;br /&gt;
*Process Control And Process Groups:&lt;br /&gt;
**Ability to group many process together, with a one-click access to the whole group&lt;br /&gt;
**Three predefined groups: All, Root, Workers. (Newest DDT versions only have one group - All).&lt;br /&gt;
**Groups can be created, deleted, or modified by the user at any time&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki2.png]]&lt;br /&gt;
&lt;br /&gt;
*Starting, Stopping And Restarting A Program&lt;br /&gt;
**Session Control dialog&lt;br /&gt;
*Stepping Through A Program&lt;br /&gt;
**Play/Continue, Pause, Step Into, Step Over, Step Out&lt;br /&gt;
*Setting Breakpoints&lt;br /&gt;
**All breakpoints are listed under the breakpoints tab.&lt;br /&gt;
**You can suspend, jump to, delete, load or save breakpoints.&lt;br /&gt;
**Breakpoints can easily be made conditional:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki4.png]]&lt;br /&gt;
&lt;br /&gt;
*Synchronizing Processes in a Group&lt;br /&gt;
**&amp;quot;Run to here&amp;quot; command (right mouse click)&lt;br /&gt;
*Can work with individual processes or threads (by changing “Focus”)&lt;br /&gt;
*Setting A Watch (for the current process)&lt;br /&gt;
*Working with stacks&lt;br /&gt;
**Moving (Down / Up / Bottom Stack Frame)&lt;br /&gt;
**Aligning of stacks for parallel codes (Ctrl-A)&lt;br /&gt;
*Viewing Stacks in Parallel&lt;br /&gt;
**Stacks tab.&lt;br /&gt;
**Shows a tree of functions, merged from every process in the group&lt;br /&gt;
**Click on any branch to see its location in the Source Code viewer&lt;br /&gt;
**Hover the mouse to see the list of the process ranks at this location in the code&lt;br /&gt;
**Can automatically gather the processes at a function together in a new group&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki5.png]]&lt;br /&gt;
&lt;br /&gt;
*Browsing Source Code&lt;br /&gt;
**Highlights the current source line&lt;br /&gt;
**Different color coding for synchronous and asynchronous state in the group&lt;br /&gt;
*Simultaneously Viewing Multiple Files&lt;br /&gt;
**Right click to split the source window into two or more, with each one having its own set of tabs.&lt;br /&gt;
*Signal Handling: will stop on the following signals:&lt;br /&gt;
**SIGSEGV (segmentation fault)&lt;br /&gt;
**SIGFPE (Floating Point Exception)&lt;br /&gt;
**SIGPIPE (Broken Pipe)&lt;br /&gt;
**SIGILL (Illegal Instruction)&lt;br /&gt;
*To enable FPE handling, extra compiler options are required:&lt;br /&gt;
**Intel: -fp0&lt;br /&gt;
&lt;br /&gt;
==Variables and data==&lt;br /&gt;
*Current Line tab&lt;br /&gt;
**Viewing all the variable for the current line(s) (click and drag for multiple lines)&lt;br /&gt;
*Locals tab&lt;br /&gt;
**Shows all local variables for the process&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki6.png]]&lt;br /&gt;
&lt;br /&gt;
*Evaluate window&lt;br /&gt;
**Can be used to view values for arbitrary expressions and global variables&lt;br /&gt;
*Support for Fortran modules&lt;br /&gt;
**Fortran Modules tab in the Project Navigator window&lt;br /&gt;
*Changing Data Values&lt;br /&gt;
**Right-click and select &amp;quot;Edit value&amp;quot; (in Evaluate window)&lt;br /&gt;
*Examining Pointers&lt;br /&gt;
**Drag a pointer into the Evaluate window&lt;br /&gt;
**Can be viewed as Vector, Reference, or Dereference (right-click to choose).&lt;br /&gt;
*Multi-Dimensional Arrays&lt;br /&gt;
**Can be viewed in the Variable View&lt;br /&gt;
**Multi-Dimensional Array viewer – visualization of a 2-D slice of an array using OpenGL&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki7.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki8.png]]&lt;br /&gt;
&lt;br /&gt;
*Cross-Process Comparison&lt;br /&gt;
**Right-click on a variable name, or&lt;br /&gt;
**From View menu: Cross-Process/Thread Comparison (type in any valid expression)&lt;br /&gt;
**Three modes – Compare, Statistics, and Visualize&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki9.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki10.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki13.png]]&lt;br /&gt;
&lt;br /&gt;
==Message queues==&lt;br /&gt;
&lt;br /&gt;
Attention: this feature will not work on graham unless this command is executed first, before running ddt:&lt;br /&gt;
&lt;br /&gt;
 export OMPI_MCA_pml=ob1&lt;br /&gt;
&lt;br /&gt;
*View -&amp;gt; Message Queues (older versions), or Tools -&amp;gt; Message Queues in newer versions, in the control panel.&lt;br /&gt;
*Produces both a graphical view and a table for all active communications.&lt;br /&gt;
*Helps to debug such MPI problems as deadlocks etc.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki11.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki12.png]]&lt;br /&gt;
&lt;br /&gt;
==Memory Debugging==&lt;br /&gt;
&lt;br /&gt;
*Can intercept memory allocation and de-allocation calls and perform lots of complex heap- and bounds- checking.&lt;br /&gt;
*Off by default, can be turned on before starting a debugging session (in Advanced settings).&lt;br /&gt;
*Different levels of memory debugging – from minimal to high.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki14.png]]&lt;br /&gt;
&lt;br /&gt;
*On error, stops with a message like&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki15.png]]&lt;br /&gt;
&lt;br /&gt;
*Check Validity&lt;br /&gt;
**In Evaluate window, right-click to &amp;quot;Check pointer is valid&amp;quot; &lt;br /&gt;
**Useful for checking function arguments&lt;br /&gt;
*Detecting memory leaks&lt;br /&gt;
**&amp;quot;View-&amp;gt;Current Memory Usage&amp;quot; window (Tools-&amp;gt;Current Memory Usage in newer versions)&lt;br /&gt;
**Shows current memory usage across processes in the group&lt;br /&gt;
**Click on a color bar to get allocation details&lt;br /&gt;
**For more details, choose &amp;quot;Table View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki16.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki17.png]]&lt;br /&gt;
&lt;br /&gt;
*Memory Statistics&lt;br /&gt;
**Menu option &amp;quot;View-&amp;gt;Overall Memory Stats&amp;quot; (&amp;quot;Tools-&amp;gt;Overall Memory Stats&amp;quot; in newer versions).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki18.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki19.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki20.png]]&lt;br /&gt;
&lt;br /&gt;
==Debugging OpenMP programs==&lt;br /&gt;
&lt;br /&gt;
*The current version of DDT has almost the same OpenMP functionality as for MPI:&lt;br /&gt;
**Single click access to threads&lt;br /&gt;
**Viewing stacks in parallel&lt;br /&gt;
**Setting thread-specific breakpoints&lt;br /&gt;
**Compare expressions across threads, etc&lt;br /&gt;
&lt;br /&gt;
==Debugging GPU programs==&lt;br /&gt;
&lt;br /&gt;
*Compilation instructions were [[#Preparing your program|given earlier]].&lt;br /&gt;
*Can be a mixed MPI/CUDA code, but can only use one CPU and one GPU per node, up to 8 nodes.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt_wiki21.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;!--checked2016--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Syam</name></author>
	</entry>
</feed>