EDPM : An extension of EDPM - an embedded domain-specific language for performance monitoring C and C++ programs

University essay from Blekinge Tekniska Högskola/Institutionen för datavetenskap

Abstract: Background. Performance monitoring of C/C++ programs has often been a tedious and straining process, where insufficient and complex tools/APIs are required. Performance monitoring tools and APIs tend to focus on ease of use or flexibility, but rarely both. Hence, a tool that combines ease of use and flexibility while enhancing abstraction, would greatly simplify the monitoring of C/C++ programs and seamlessly integrate them into pre-existing projects. Objectives. This study aims to extend the developed EDPM prototype used for the manual performance monitoring of C/C++ programs. The extension will comprise the dynamic nesting feature which will be the primary focus of this thesis study. Method. In this thesis study, experiments that evaluate the extended EDPM version will be conducted. These experiments will be conducted using a homogeneous testing environment using an independent benchmark created for this study: strncpy, and a C/C++ benchmark: rodinia. The experiments will consist of measuring the execution benefits, overheads, and precision of the initial EDPM version, extended EDPM version, and the raw Performance API(PAPI) which will be used manually. For this purpose, four sets of tests will be orchestrated; iterative and recursive test programs for the strncpy benchmark; binary search tree and b+tree test programs for the rodinia benchmark. Additionally, each set is divided into two scenarios: nested and alternate structures. The iterative tests will be used to evaluate all of the three aformentioned subjects, and the recursive tests will evaluate the extended EDPM version and the PAPI API. The binary search tree and b+tree tests will further evaluate the initial and extended EDPM versions in CPU and memory-intensive environments. Furthermore, the test sets will each adopt different configurations, depending on the specific test. Additionally, the reason why the initial EDPM version won’t be evaluated using the recursive tests is because it doesn’t support the dynamic nesting feature. Results. The results show that the extended EDPM version had an improved execution time, for each respective configuration, for each benchmark. The results also show that the PAPI API outperforms both of the EDPM versions significantly but with the compromise of sacrificing some precision. Conclusions. As of this thesis study, EDPM is a prototype in development, but now with the implemented dynamic nesting extension, EDPM will facilitate the implementation of further extensions, such as the multithreading monitoring, by primarily using the PAPI API as its core backend. Additionally, the extended EDPM version is slightly optimized compared to the initial EDPM version but significantly unoptimized when compared to the PAPI API, depending on how a program has been annotated.

  AT THIS PAGE YOU CAN DOWNLOAD THE WHOLE ESSAY. (follow the link to the next page)