TEMANEJO - a debugger for task based parallel programming models
📝 Abstract
We present the program Temanejo, a debugger for task based parallelisation models such as StarSs. The challenge in debugging StarSs applications lies in the fact that tasks are scheduled at runtime, i.e dynamically in accordance to the data dependencies between them. Our tool assists the programmer in the debugging process by visualising the task dependency graph and allowing to control the scheduling of tasks. The toolset consists of the library Ayudame which communicates with the StarSs runtime on one side and of the debugger Temanejo on the other side which communicates with Ayudame. Temanejo provides a graphical user interface with which the application can be analysed and controlled.
💡 Analysis
We present the program Temanejo, a debugger for task based parallelisation models such as StarSs. The challenge in debugging StarSs applications lies in the fact that tasks are scheduled at runtime, i.e dynamically in accordance to the data dependencies between them. Our tool assists the programmer in the debugging process by visualising the task dependency graph and allowing to control the scheduling of tasks. The toolset consists of the library Ayudame which communicates with the StarSs runtime on one side and of the debugger Temanejo on the other side which communicates with Ayudame. Temanejo provides a graphical user interface with which the application can be analysed and controlled.
📄 Content
Temanejo- a debugger for task based parallel programming models Steffen BRINKMANN a, Jos´e GRACIA a, Christoph NIETHAMMER a and Rainer KELLER a a High Performance Computing Centre Stuttgart (HLRS), University of Stuttgart, Germany Abstract. We present the program Temanejo, a debugger for task based parallelisation models such as StarSs. The challenge in debugging StarSs applications lies in the fact that tasks are scheduled at runtime, i.e dynamically in accordance to the data dependencies between them. Our tool assists the programmer in the debugging process by visualising the task dependency graph and allowing to control the scheduling of tasks. The toolset consists of the library Ayudame which communicates with the StarSs runtime on one side and of the debugger Temanejo on the other side which communicates with Ayudame. Temanejo provides a graphical user interface with which the application can be analysed and controlled. Keywords. Debugging, HPC, task parallelisation, StarSs, Temanejo Introduction Task based programming models have amplified the landscape of parallelisation paradigms. In these models, parallelism is not dictated on the level of operations. The programmer rather indicates data dependencies between parts of the code which become tasks and then are scheduled by an execution framework at runtime. This way the program can “react” on internal irregularities, e.g. differences in execution time of each task, and external conditions, such as hybrid architectures. One family of these programming models are the StarSs models [1,2]. The “Ss” stands for superscalar and indicates that these models aim at scaling on modern supercomputers consisting of millions of processing units. The “Star” in the name paraphrases a wildcard which stands for the different implementations of this model like CellSs, GPUSs, GridSs, OMPSs and SMPSs [2] among others. They differ in the supported programming languages, whether functions (respec- tively subroutines) or other blocks of code are parallelised and whether the target platform is, for instance, a grid or a node of CPUs or GPUs. Debugging a task parallel program differs from debugging an otherwise paral- lelised program as the parallelisation is determined by data dependencies instead of explicit scheduling of tasks and synchronisation between them. Therefore, the development of new debugging tools capable of assisting the programmer with arXiv:1112.4604v1 [cs.DC] 20 Dec 2011 debugging task parallel programs is a crucial condition for effectively exploiting the possibilities of these models. We present a debugging toolset for task parallel programs consisting of two components: a library called Ayudame1, acting as a thin communication layer and enabling the debugger to receive information about the program and send commands back to it, and the actual debugger Temanejo2 which enables the user to view the extracted information and issue commands via a highly interactive graphical user interface. For this work, we used the StarSs implementations SMPSs and OMPSs. Nev- ertheless, the basic concepts of how to debug a task parallel program are the same regardless of the specific framework. In section 1, we elaborate on the idea and further implications of task based parallelism. We present different strategies and actions a debugger should pro- vide and discuss how these features were implemented in the presented debugger Temanejo in section 2. Finally, we summarise the results and give an outlook on future enhancements to the debugger in section 3.
- Task based parallelism In contrast to other task based parallel programming models, the focus in the StarSs family lies on the data dependencies between parts of the program which are defined as tasks. In SMPSs, for example, the programmer marks functions or subroutines as “potentially parallel” using a special #pragma syntax. A typical function declaration in C looks like this: #pragma css task input(a) inout(b) output(c) void func(int a, int *b, double c) { / function body */ } css3 is the identifier of the pragma, the keyword task tells the precompiler that the following function declaration is to be treated as an SMPSs task, and the keywords input, inout and output specify the data dependencies for this task. These pragmas are read by a compiler wrapper (smpss-cc) which embeds the program code into a runtime framework. This framework will initialise a previ- ously defined number of threads and start the application. One of the threads will be the master thread which creates all tasks and takes care of proper initialisation and finalisation of the program. Moreover the master thread will execute all code outside of tasks. The tasks will be executed by the other threads, called worker threads During runtime the SMPSs framework will assign all calls to functions marked by pragmas to a thread for execution depending on the specified dependencies. 1Spanish for help me 2Spanish for I handle you 3css stands for cell super scalar and is
This content is AI-processed based on ArXiv data.