Change search
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
EDPM: An extension of EDPM - an embedded domain-specific language for performance monitoring C and C++ programs
Blekinge Institute of Technology, Faculty of Computing, Department of Computer Science.
2023 (English)Independent thesis Advanced level (professional degree), 20 credits / 30 HE creditsStudent thesis
Abstract [en]

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.

Abstract [sv]

Bakgrund. Prestandamätning av C/C++ program har ofta varit en påfrestande process, där otillräckliga och komplexa verktyg samt API:er är nödvändiga. Verktyg och API:er ämnade för prestandamätning fokuserar vanligen på en sida av spektrumet; användarvändlighet eller flexibilitet, men oftast inte båda. Därför, ett verktyg som slår ihop användarvändlighet och flexibilitet, som samtidigt också höjer abstraktionsnivån hade underlättat både processen av prestandamätning men även integrationen av ett sådant verktyg i existerande och framtida projekt.

Syfte. Denna studie fokuserar på att utöka EDPM prototypen som används för manuell prestandamätning av C/C++ program. Utökningen kommer att omfatta implementationen av funktionaliteten dynamisk nestning.

Metod. I denna studie kommer experiment som utvärderar den utökade EDPM versionen att utföras. Experimenten kommer att använda en homogen testmiljö och två teststandarder, där en teststandard kommer att skapas: strncpy; och en C/C++ teststandard att återanvändas: rodinia. Experimenten kommer att bestå av att mäta fördelarna, överhuvudet för exekveringstiden samt precisionen för den initiala EDPM versionen, utökade EDPM versionen och det råa/manuellt använda Performance API:et(PAPI). Experimentet kommer att omfatta fyra distinkta par av tester; de iterativa och rekursiva testerna för strncpy teststandarden; de binary search tree och b+tree testerna för rodinia teststandarden. Varje par är uppdelat i två scenario: nästade och alternerande strukturer. De iterativa testerna kommer att användas för att utvärdera alla tidigare nämnda testsubjekt, medan de rekursiva testerna kommer att utvärdera den utökade EDPM versionen och PAPI API:et. De binary search tree och b+tree testerna kommer att användas för att ytterligare utvärdera den initiala och utökade EDPM versionerna i en CPU and minnes-intensiv programmiljö. Paren av tester kommer dessutom att använda sig av olika konfigurationer, beroende på det specifika testet som utförs. Anledningen till varför den initiala EDPM versionen inte kommer att utvärderas med de rekursiva testerna är eftersom versionen inte stödjer funktionaliteten dynamisk nesting.

Resultat. Resultaten visar att den utökade EDPM versionen presterar både snarlikt och bättre i jämförelse mot den initiala EDPM versionen, för respektive test från samt konfiguration. Resultaten visar även att PAPI API:et överträffar båda EDPM versionerna genom att offra någon andel precision.

Slutsatser. Under tiden av skrivandet av detta examensarbete är EDPM endast en prototyp under utveckling, men genom additionen av funktionaliteten dynamisk nesting, kommer implementation av framtida utökningar att underlättas, t.ex. mätning av multitrådade program genom att primärt använda PAPI API:et. Utöver den generella utökningen har EDPM blivit något mer optimerad jämförelsevis med den initiala EDPM versionen men avsevärt sämre jämförelsevis med PAPI API:et, detta beroende på hur ett program blivit annoterat.

Place, publisher, year, edition, pages
2023. , p. 76
Keywords [en]
EDPM, Dynamic Nesting, PAPI, LLVM, Libtooling
Keywords [sv]
EDPM, Dynamisk Nestning, PAPI, LLVM, Libtooling
National Category
Computer Sciences
Identifiers
URN: urn:nbn:se:bth-24740OAI: oai:DiVA.org:bth-24740DiVA, id: diva2:1762695
Subject / course
Degree Project in Master of Science in Engineering 30,0 hp
Educational program
DVACD Master of Science in Computer Security
Supervisors
Examiners
Available from: 2023-06-21 Created: 2023-06-05 Last updated: 2023-06-21Bibliographically approved

Open Access in DiVA

fulltext(646 kB)78 downloads
File information
File name FULLTEXT02.pdfFile size 646 kBChecksum SHA-512
1b7d4e29ec339228773c22f75f0f485e7d4d17e61f38e3ea6f366436bd8571043317ff1ce763c7b66c0acbc38bc569aae7f7f06116e1a7358465a63ee9bac006
Type fulltextMimetype application/pdf

By organisation
Department of Computer Science
Computer Sciences

Search outside of DiVA

GoogleGoogle Scholar
Total: 78 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

urn-nbn

Altmetric score

urn-nbn
Total: 370 hits
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf