<?xml version="1.0" encoding="utf-8"?>
<export-example>
  <doc>
    <id>2810</id>
    <completedYear/>
    <publishedYear>2018</publishedYear>
    <thesisYearAccepted/>
    <language>eng</language>
    <pageFirst/>
    <pageLast/>
    <pageNumber>30</pageNumber>
    <edition/>
    <issue>OOPSLA</issue>
    <volume>2</volume>
    <articleNumber>119</articleNumber>
    <type>article</type>
    <publisherName>ACM</publisherName>
    <publisherPlace>New York</publisherPlace>
    <creatingCorporation/>
    <contributingCorporation/>
    <belongsToBibliography>0</belongsToBibliography>
    <completedDate>2022-09-05</completedDate>
    <publishedDate>--</publishedDate>
    <thesisDateAccepted>--</thesisDateAccepted>
    <title language="eng">AnyDSL: a partial evaluation framework for programming high-performance libraries</title>
    <abstract language="eng">This paper advocates programming high-performance code using partial evaluation. We present a clean-slate programming system with a simple, annotation-based, online partial evaluator that operates on a CPS-style intermediate representation. Our system exposes code generation for accelerators (vectorization/parallelization for CPUs and GPUs) via compiler-known higher-order functions that can be subjected to partial evaluation. This way, generic implementations can be instantiated with target-specific code at compile time.&#13;
&#13;
In our experimental evaluation we present three extensive case studies from image processing, ray tracing, and genome sequence alignment. We demonstrate that using partial evaluation, we obtain high-performance implementations for CPUs and GPUs from one language and one code base in a generic way. The performance of our codes is mostly within 10%, often closer to the performance of multi man-year, industry-grade, manually-optimized expert codes that are considered to be among the top contenders in their fields.</abstract>
    <parentTitle language="eng">Proceedings of the ACM on Programming Languages</parentTitle>
    <identifier type="issn">2475-1421</identifier>
    <identifier type="urn">urn:nbn:de:bvb:573-28104</identifier>
    <enrichment key="THI_relatedIdentifier">https://doi.org/10.1145/3276489</enrichment>
    <enrichment key="THI_review">peer-review</enrichment>
    <enrichment key="THI_openaccess">ja</enrichment>
    <enrichment key="THI_DownloadUrl">https://www.youtube.com/watch?v=pIJga3ioFBs</enrichment>
    <enrichment key="THI_conferenceName">ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications: OOPSALA 2018, Boston (USA), 07.11.-09.11.2018</enrichment>
    <enrichment key="opus.source">publish</enrichment>
    <enrichment key="THI_articleversion">published</enrichment>
    <licence>Creative Commons BY-NC-SA 4.0</licence>
    <author>
      <first_name>Roland</first_name>
      <last_name>Leißa</last_name>
    </author>
    <author>
      <first_name>Klaas</first_name>
      <last_name>Boesche</last_name>
    </author>
    <author>
      <first_name>Sebastian</first_name>
      <last_name>Hack</last_name>
    </author>
    <author>
      <first_name>Arsène</first_name>
      <last_name>Pérard-Gayot</last_name>
    </author>
    <author>
      <first_name>Richard</first_name>
      <last_name>Membarth</last_name>
    </author>
    <author>
      <first_name>Philipp</first_name>
      <last_name>Slusallek</last_name>
    </author>
    <author>
      <first_name>André</first_name>
      <last_name>Müller</last_name>
    </author>
    <author>
      <first_name>Bertil</first_name>
      <last_name>Schmidt</last_name>
    </author>
    <subject>
      <language>eng</language>
      <type>uncontrolled</type>
      <value>partial evaluation</value>
    </subject>
    <subject>
      <language>eng</language>
      <type>uncontrolled</type>
      <value>high-performance</value>
    </subject>
    <subject>
      <language>eng</language>
      <type>uncontrolled</type>
      <value>parallelization</value>
    </subject>
    <subject>
      <language>eng</language>
      <type>uncontrolled</type>
      <value>vectorization</value>
    </subject>
    <subject>
      <language>eng</language>
      <type>uncontrolled</type>
      <value>GPU computing</value>
    </subject>
    <subject>
      <language>eng</language>
      <type>uncontrolled</type>
      <value>library design</value>
    </subject>
    <collection role="open_access" number="">open_access</collection>
    <collection role="persons" number="43674">Membarth, Richard</collection>
    <thesisPublisher>Technische Hochschule Ingolstadt</thesisPublisher>
    <file>https://opus4.kobv.de/opus4-haw/files/2810/3276489.pdf</file>
  </doc>
</export-example>
