Follow the links to access the presentation.
Programming-Model Centric Debugging for OpenMP
Developing applications that should run efficiently on multiple cores in parallel is significantly harder than writing sequential code. To simplify the application developer’s job, many parallel programming runtime frameworks have been developed during the last decades. From Posix thread standard to OpenMP parallel computing, from MPI message passing interface to dataflow scheduling, these tools try to raise the abstraction level used during application development.
However, current debugging tools and techniques do not usually take into account these higher levels of abstraction, and only consider the underlying programming languages. This is problematic, firstly because these tools do not exploit the high-level information that could be useful to developers; and secondly because it impairs their debugging activity, as developers have to manually cope with the interactions between the application, the runtime libraries and the operating system that are involved in the programming model implementation.
Programming-Model Centric Debugging for Multicore Embedded Systems
In this presentation, we introduce our novel approach to improve interactive debugging of multicore and embedded systems. Relying on programming-model and runtime-environment structures, model-centric debugging aims at providing high-level representation, inspection and control mechanisms, tailored to the abstraction level used to develop modern applications.
We present the model-independent requirements that drove the design of our prototype tool, mcGDB, and discuss the important aspects of the development of the implementation. Finally, in the context of an industrial MPSoC platform, we present a programming model for dynamic dataflow computing and illustrate how we applied the concepts of model-centric debugging to its runtime environment. We also describe the usage of our tool through the debugging session of a h264 video decoder.
Supporting Parallel Component Debugging Using the GDB Python Interface
GNU Cauldron 2012
In this presentation, we will introduce the work we have undertaken in a join R&D effort of STMicroelectronics and the Laboratoire d’Informatique de Grenoble on the GDB project.
In the context of parallel and embedded computing, debugging is well- recognized as a complex activity. Nowadays, such applications are not developed anymore from scratch, relying only on the programming language primitives. Instead, they lean upon more advanced programming models allowing an easier expression of parallelism.
Interactive debuggers like GDB evolved from their earlier times when they could only handle machine instructions to support the source languages used by developers to write their applications. We believe that their next evolution could be the support of programming models, which would help the developers to manipulate higher level abstractions like the entities or communication mechanisms defined by the programming model. These abstractions will have the advantage of being closer to the concepts the developer dealt with during development time and they will help her to keep focused on application execution behaviour.
Hence, our work consists in improving GDB towards the support of such programming models. On top of GDB’s Python interface, and extending it with contributed patches whenever it was required, we prepared a framework supporting the debugging of an ST home-made embedded component framework for MPSoC systems, running on an x86 simulator. The presentation will detail how we leveraged GDB to gather relevant runtime information about the component framework and the set of new features we developed, along with use-cases about their usage.