<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoPlainText">Pinging on this, didn’t see any replies. A couple responses from me inline below, but it would be great if we could get more feedback on this soon.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks!<o:p></o:p></p>
<p class="MsoPlainText">Terry<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><a name="_____replyseparator"></a>-----Original Message-----<br>
From: Openmp-dev [mailto:openmp-dev-bounces@lists.llvm.org] On Behalf Of Joachim Protze via Openmp-dev<br>
Sent: Tuesday, February 6, 2018 4:42 AM<br>
To: Openmp-dev <openmp-dev@lists.llvm.org><br>
Cc: Laguna Peralta, Ignacio <lagunaperalt1@llnl.gov>; Protze, Joachim <protze@itc.rwth-aachen.de><br>
Subject: [Openmp-dev] Fwd: Implementation of OMPD</p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Hi all,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">we briefly discussed the following with Jonathan, Andrey and Hansang at the OpenMP LC F2F meeting last week.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">OpenMP 5.0 will not only bring OMPT, which is already implemented in trunk, but also OMPD. OMPD is an interface for tools that execute in a separate process (aka. third-party tools), which is typically the case for debuggers. The architecture
of OMPD is similar to libthread_db.# A preliminary specification of OMPD can be found in TR6 of the spec.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">We were working internally on an implementation while specifying the interface. We are currently pushing the code to the repository of the OpenMP tools working group:<o:p></o:p></p>
<p class="MsoPlainText"><a href="https://github.com/OpenMPToolsInterface/LLVM-openmp"><span style="color:windowtext;text-decoration:none">https://github.com/OpenMPToolsInterface/LLVM-openmp</span></a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Similar as with OMPT, we will develop and update the implementation in this repository and then push the implementation to trunk.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">To get started, we want to clear some organizing questions:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Name of the OMPD library?<o:p></o:p></p>
<p class="MsoPlainText">We have several names in discussion: libompd.so, libomp-debug.so,
<o:p></o:p></p>
<p class="MsoPlainText">libompdebug.so, or libomp_db.so<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:#0070C0">[I like libompd.so or libomp_db.so, but am a bit indifferent on this.]<o:p></o:p></span></p>
<p class="MsoPlainText"> From the interface point of view the name does not matter, the runtime
<o:p></o:p></p>
<p class="MsoPlainText">will contain a breadcrumb telling the debugger the name of the library.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Directory tree?<o:p></o:p></p>
<p class="MsoPlainText">Finally, OMPD will give a tool insight into host runtime and at the same
<o:p></o:p></p>
<p class="MsoPlainText">time into the device runtime. Therefore we suggest to create a new
<o:p></o:p></p>
<p class="MsoPlainText">directory at the top level, i.e., new sibling to runtime and libomptarget.<o:p></o:p></p>
<p class="MsoPlainText">The suggested name for the directory is the library name.<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:#0070C0">[Agreed.]</span><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Tests?<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:#0070C0">[Yes </span><span style="font-family:Wingdings;color:#0070C0">J</span><span style="color:#0070C0"> I don’t think tests are a blocking issue on getting this into trunk though. See below.]<o:p></o:p></span></p>
<p class="MsoPlainText">The architecture of OMPD requires a tool loading the debugging library.
<o:p></o:p></p>
<p class="MsoPlainText">The tool needs to provide basic debugging functionality (lookup names,
<o:p></o:p></p>
<p class="MsoPlainText">reading memory, ...) to the library. While it is possible to implement
<o:p></o:p></p>
<p class="MsoPlainText">basic regression tests as a standalone application, to test the real
<o:p></o:p></p>
<p class="MsoPlainText">functionality, an OpenMP application executing under control of a
<o:p></o:p></p>
<p class="MsoPlainText">debugging tool is necessary. To verify the consistency of information
<o:p></o:p></p>
<p class="MsoPlainText">provided by OMPD, we can compare the information to OMPT or OpenMP
<o:p></o:p></p>
<p class="MsoPlainText">runtime calls.<o:p></o:p></p>
<p class="MsoPlainText">During our development, we worked with Dyninst for automatic regression
<o:p></o:p></p>
<p class="MsoPlainText">testing. The same workflow could also be implemented with another
<o:p></o:p></p>
<p class="MsoPlainText">debugger like gdb (, or probably lldb?)<o:p></o:p></p>
<p class="MsoPlainText"><span style="color:#0070C0">[Would the infrastructure you used for testing work inside of LIT?
<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:#0070C0">If you can provide your infrastructure, then maybe others can use it to add tests for whatever debuggers they like.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:#0070C0">We could have gdb or lldb be tested by default.]</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoPlainText">The question here, what is the preferred approach for testing? What
<o:p></o:p></p>
<p class="MsoPlainText">dependencies are acceptable?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks,<o:p></o:p></p>
<p class="MsoPlainText">Joachim<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">PS: Sorry for double-post in case my earlier mail gets through moderation.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">-- <o:p></o:p></p>
<p class="MsoPlainText">Dipl.-Inf. Joachim Protze<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">IT Center<o:p></o:p></p>
<p class="MsoPlainText">Group: High Performance Computing<o:p></o:p></p>
<p class="MsoPlainText">Division: Computational Science and Engineering<o:p></o:p></p>
<p class="MsoPlainText">RWTH Aachen University<o:p></o:p></p>
<p class="MsoPlainText">Seffenter Weg 23<o:p></o:p></p>
<p class="MsoPlainText">D 52074 Aachen (Germany)<o:p></o:p></p>
<p class="MsoPlainText">Tel: +49 241 80- 24765<o:p></o:p></p>
<p class="MsoPlainText">Fax: +49 241 80-624765<o:p></o:p></p>
<p class="MsoPlainText"><a href="mailto:protze@itc.rwth-aachen.de"><span style="color:windowtext;text-decoration:none">protze@itc.rwth-aachen.de</span></a><o:p></o:p></p>
<p class="MsoPlainText"><a href="http://www.itc.rwth-aachen.de"><span style="color:windowtext;text-decoration:none">www.itc.rwth-aachen.de</span></a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">_______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">Openmp-dev mailing list<o:p></o:p></p>
<p class="MsoPlainText"><a href="mailto:Openmp-dev@lists.llvm.org"><span style="color:windowtext;text-decoration:none">Openmp-dev@lists.llvm.org</span></a><o:p></o:p></p>
<p class="MsoPlainText"><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev"><span style="color:windowtext;text-decoration:none">http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev</span></a><o:p></o:p></p>
</div>
</body>
</html>