Conference paper Open Access
Tiganourias Efstratios; Mavropoulos Michail; Keramidas Georgios; Kelefouras Vasilios; Antonopoulos Christos P.; Voros Nikolaos
<?xml version='1.0' encoding='UTF-8'?> <record xmlns="http://www.loc.gov/MARC21/slim"> <leader>00000nam##2200000uu#4500</leader> <datafield tag="540" ind1=" " ind2=" "> <subfield code="u">https://creativecommons.org/licenses/by/4.0/legalcode</subfield> <subfield code="a">Creative Commons Attribution 4.0 International</subfield> </datafield> <datafield tag="260" ind1=" " ind2=" "> <subfield code="c">2021-06-07</subfield> </datafield> <controlfield tag="005">20220226135453.0</controlfield> <controlfield tag="001">6281633</controlfield> <datafield tag="909" ind1="C" ind2="O"> <subfield code="p">openaire</subfield> <subfield code="o">oai:zenodo.org:6281633</subfield> </datafield> <datafield tag="520" ind1=" " ind2=" "> <subfield code="a"><p>Profiling based techniques have gained much attention on computer architecture and software analysis communities. The target is to rely on one or more profiling tools in order to identify specific code pieces of interest e.g., code pieces that slowdown a given application. The extracted code pieces can be further modified and optimized. In general, the profiling tools can be classified as deterministic, statistical-based, or rely on hardware performance counters. A common characteristic of the available profiling tools is typically based on analyzing or even manipulating (in case of binary instrumentation tools) machine-level code. This approach come with two main drawbacks. First, a lot of information (even GBytes of data) needs to be gathered, stored, post-processed, and visualized. Second, the performed analysis of the gathered data is platform-specific and it is not straightforward to categorize the given applications/program phases/kernels into distinct categories that have the same or almost the same behavior (e.g., the same percentage of computational vs. control instructions). The latter stems from the fact even small changes in the source code of the applications might lead to significantly different machine code implementations. Therefore, even two specific program kernels exhibit the same behavior (e.g., they have the same number of instructions, but with a different ordering), it is very difficult for a machine-code level profiling tool to assess their similarity, simply because the generated machine level code might have significant differences resulting in many missing opportunities for the available profiling tools. To address this issue, in this paper, we present a new profiling tool that is able to operate on the machine independent intermediate representation (IR) level. The profiler (still in development phase) relies on the LLVM API and it is able to hierarchically (at various levels of the call stack) and recursively parse the IR code and extract various useful statistics. We showcase the practicality of our profiler by analyzing a subset of the PolyBench benchmarks assuming (as pointed out by a recent study) that there is a strong correlation of LLVM IR code.</p></subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="u">University of Peloponnese, Greece</subfield> <subfield code="a">Mavropoulos Michail</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="u">University of Peloponnese, Greece</subfield> <subfield code="a">Keramidas Georgios</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="u">University of Peloponnese, Greece</subfield> <subfield code="a">Kelefouras Vasilios</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="u">University of Peloponnese, Greece</subfield> <subfield code="a">Antonopoulos Christos P.</subfield> </datafield> <datafield tag="700" ind1=" " ind2=" "> <subfield code="u">University of Peloponnese, Greece</subfield> <subfield code="a">Voros Nikolaos</subfield> </datafield> <datafield tag="856" ind1="4" ind2=" "> <subfield code="s">519170</subfield> <subfield code="z">md5:d5b338402307205d48d9a3da4ddfd3cf</subfield> <subfield code="u">https://zenodo.org/record/6281633/files/A Hierarchical Profiler of Intermediate Representation Code based on LLVM.pdf</subfield> </datafield> <datafield tag="542" ind1=" " ind2=" "> <subfield code="l">open</subfield> </datafield> <datafield tag="980" ind1=" " ind2=" "> <subfield code="a">publication</subfield> <subfield code="b">conferencepaper</subfield> </datafield> <datafield tag="100" ind1=" " ind2=" "> <subfield code="u">University of Peloponnese, Greece</subfield> <subfield code="a">Tiganourias Efstratios</subfield> </datafield> <datafield tag="653" ind1=" " ind2=" "> <subfield code="a">Embedded computing , Correlation , Instruments , Data visualization , Computer architecture , Tools , Benchmark testing</subfield> </datafield> <datafield tag="024" ind1=" " ind2=" "> <subfield code="a">10.1109/MECO52532.2021.9460203</subfield> <subfield code="2">doi</subfield> </datafield> <datafield tag="245" ind1=" " ind2=" "> <subfield code="a">A Hierarchical Profiler of Intermediate Representation Code based on LLVM</subfield> </datafield> <datafield tag="536" ind1=" " ind2=" "> <subfield code="c">871738</subfield> <subfield code="a">Cross-layer cognitive optimization tools & methods for the lifecycle support of dependable CPSoS</subfield> </datafield> <datafield tag="650" ind1="1" ind2="7"> <subfield code="a">cc-by</subfield> <subfield code="2">opendefinition.org</subfield> </datafield> </record>
Views | 29 |
Downloads | 25 |
Data volume | 13.0 MB |
Unique views | 25 |
Unique downloads | 24 |