Zenodo.org will be unavailable for 2 hours on September 29th from 06:00-08:00 UTC. See announcement.

Conference paper Open Access

A Hierarchical Profiler of Intermediate Representation Code based on LLVM

Tiganourias Efstratios; Mavropoulos Michail; Keramidas Georgios; Kelefouras Vasilios; Antonopoulos Christos P.; Voros Nikolaos


DataCite XML Export

<?xml version='1.0' encoding='utf-8'?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
  <identifier identifierType="URL">https://zenodo.org/record/6281633</identifier>
  <creators>
    <creator>
      <creatorName>Tiganourias Efstratios</creatorName>
      <affiliation>University of Peloponnese, Greece</affiliation>
    </creator>
    <creator>
      <creatorName>Mavropoulos Michail</creatorName>
      <affiliation>University of Peloponnese, Greece</affiliation>
    </creator>
    <creator>
      <creatorName>Keramidas Georgios</creatorName>
      <affiliation>University of Peloponnese, Greece</affiliation>
    </creator>
    <creator>
      <creatorName>Kelefouras Vasilios</creatorName>
      <affiliation>University of Peloponnese, Greece</affiliation>
    </creator>
    <creator>
      <creatorName>Antonopoulos Christos P.</creatorName>
      <affiliation>University of Peloponnese, Greece</affiliation>
    </creator>
    <creator>
      <creatorName>Voros Nikolaos</creatorName>
      <affiliation>University of Peloponnese, Greece</affiliation>
    </creator>
  </creators>
  <titles>
    <title>A Hierarchical Profiler of Intermediate Representation Code based on LLVM</title>
  </titles>
  <publisher>Zenodo</publisher>
  <publicationYear>2021</publicationYear>
  <subjects>
    <subject>Embedded computing     ,     Correlation     ,     Instruments     ,     Data visualization     ,     Computer architecture     ,     Tools     ,     Benchmark testing</subject>
  </subjects>
  <dates>
    <date dateType="Issued">2021-06-07</date>
  </dates>
  <resourceType resourceTypeGeneral="ConferencePaper"/>
  <alternateIdentifiers>
    <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/6281633</alternateIdentifier>
  </alternateIdentifiers>
  <relatedIdentifiers>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsIdenticalTo">10.1109/MECO52532.2021.9460203</relatedIdentifier>
  </relatedIdentifiers>
  <rightsList>
    <rights rightsURI="https://creativecommons.org/licenses/by/4.0/legalcode">Creative Commons Attribution 4.0 International</rights>
    <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
  </rightsList>
  <descriptions>
    <description descriptionType="Abstract">&lt;p&gt;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.&lt;/p&gt;</description>
  </descriptions>
  <fundingReferences>
    <fundingReference>
      <funderName>European Commission</funderName>
      <funderIdentifier funderIdentifierType="Crossref Funder ID">10.13039/100010661</funderIdentifier>
      <awardNumber awardURI="info:eu-repo/grantAgreement/EC/H2020/871738/">871738</awardNumber>
      <awardTitle>Cross-layer cognitive optimization tools &amp; methods for the lifecycle support of dependable CPSoS</awardTitle>
    </fundingReference>
  </fundingReferences>
</resource>
28
25
views
downloads
Views 28
Downloads 25
Data volume 13.0 MB
Unique views 24
Unique downloads 24

Share

Cite as