[Openmp-dev] Fwd: Implementation of OMPD
Joachim Protze via Openmp-dev
openmp-dev at lists.llvm.org
Tue Feb 6 02:41:52 PST 2018
Hi all,
we briefly discussed the following with Jonathan, Andrey and Hansang at
the OpenMP LC F2F meeting last week.
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.
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:
https://github.com/OpenMPToolsInterface/LLVM-openmp
Similar as with OMPT, we will develop and update the implementation in
this repository and then push the implementation to trunk.
To get started, we want to clear some organizing questions:
Name of the OMPD library?
We have several names in discussion: libompd.so, libomp-debug.so,
libompdebug.so, or libomp_db.so
From the interface point of view the name does not matter, the runtime
will contain a breadcrumb telling the debugger the name of the library.
Directory tree?
Finally, OMPD will give a tool insight into host runtime and at the same
time into the device runtime. Therefore we suggest to create a new
directory at the top level, i.e., new sibling to runtime and libomptarget.
The suggested name for the directory is the library name.
Tests?
The architecture of OMPD requires a tool loading the debugging library.
The tool needs to provide basic debugging functionality (lookup names,
reading memory, ...) to the library. While it is possible to implement
basic regression tests as a standalone application, to test the real
functionality, an OpenMP application executing under control of a
debugging tool is necessary. To verify the consistency of information
provided by OMPD, we can compare the information to OMPT or OpenMP
runtime calls.
During our development, we worked with Dyninst for automatic regression
testing. The same workflow could also be implemented with another
debugger like gdb (, or probably lldb?)
The question here, what is the preferred approach for testing? What
dependencies are acceptable?
Thanks,
Joachim
PS: Sorry for double-post in case my earlier mail gets through moderation.
--
Dipl.-Inf. Joachim Protze
IT Center
Group: High Performance Computing
Division: Computational Science and Engineering
RWTH Aachen University
Seffenter Weg 23
D 52074 Aachen (Germany)
Tel: +49 241 80- 24765
Fax: +49 241 80-624765
protze at itc.rwth-aachen.de
www.itc.rwth-aachen.de
More information about the Openmp-dev
mailing list