Heterogeneous Architectures Programming Library

Embedded platforms with heterogeneous architecture, considered in this paper, consist of one primary and one or more secondary processors. Development of software systems for these platforms poses substantial difficulties, requiring a distinct set of tools for each constituent of the heterogeneous s...

Full description

Bibliographic Details
Main Authors: G. V. Kirgizov, I. A. Kirilenko
Format: Article
Language:English
Published: Ivannikov Institute for System Programming of the Russian Academy of Sciences 2018-10-01
Series:Труды Института системного программирования РАН
Subjects:
Online Access:https://ispranproceedings.elpub.ru/jour/article/view/554
_version_ 1818528420511875072
author G. V. Kirgizov
I. A. Kirilenko
author_facet G. V. Kirgizov
I. A. Kirilenko
author_sort G. V. Kirgizov
collection DOAJ
description Embedded platforms with heterogeneous architecture, considered in this paper, consist of one primary and one or more secondary processors. Development of software systems for these platforms poses substantial difficulties, requiring a distinct set of tools for each constituent of the heterogeneous system. It also makes achieving high efficiency the more difficult task. Moreover, many use cases of embedded systems require runtime configuration, that cannot be easily achieved with usual approaches. This work presents a C-like metaprogramming DSL and a library that provides a unified interface for programming secondary processors of heterogeneous systems with this DSL. Together they help to resolve aforementioned problems. The DSL is embedded in C++ and allows to freely manipulate its expressions and thus embodies the idea of generative programming, when the expressive power of high-level C++ language is used to compose pieces of low-level DSL code. Together with other features, such as generic DSL functions, it makes the DSL a flexible and powerful tool for dynamic code generation. The approach behind the library is dynamic compilation: the DSL is translated to LLVM IR and then compiled to native executable code at runtime. It opens a possibility of dynamic code optimizations, e.g. runtime function specialization for specific parameters known only at runtime. Flexible library architecture allows simple extensibility to any target platform supported by LLVM. At the end of the paper a system approbation on different platforms and a demonstration of dynamic optimizations capability are presented.
first_indexed 2024-12-11T06:49:33Z
format Article
id doaj.art-36d82814c3894ba7b7054b578f05bdf0
institution Directory Open Access Journal
issn 2079-8156
2220-6426
language English
last_indexed 2024-12-11T06:49:33Z
publishDate 2018-10-01
publisher Ivannikov Institute for System Programming of the Russian Academy of Sciences
record_format Article
series Труды Института системного программирования РАН
spelling doaj.art-36d82814c3894ba7b7054b578f05bdf02022-12-22T01:16:57ZengIvannikov Institute for System Programming of the Russian Academy of SciencesТруды Института системного программирования РАН2079-81562220-64262018-10-01304456210.15514/ISPRAS-2018-30(4)-3554Heterogeneous Architectures Programming LibraryG. V. Kirgizov0I. A. Kirilenko1Санкт-Петербургский государственный университетСанкт-Петербургский государственный университетEmbedded platforms with heterogeneous architecture, considered in this paper, consist of one primary and one or more secondary processors. Development of software systems for these platforms poses substantial difficulties, requiring a distinct set of tools for each constituent of the heterogeneous system. It also makes achieving high efficiency the more difficult task. Moreover, many use cases of embedded systems require runtime configuration, that cannot be easily achieved with usual approaches. This work presents a C-like metaprogramming DSL and a library that provides a unified interface for programming secondary processors of heterogeneous systems with this DSL. Together they help to resolve aforementioned problems. The DSL is embedded in C++ and allows to freely manipulate its expressions and thus embodies the idea of generative programming, when the expressive power of high-level C++ language is used to compose pieces of low-level DSL code. Together with other features, such as generic DSL functions, it makes the DSL a flexible and powerful tool for dynamic code generation. The approach behind the library is dynamic compilation: the DSL is translated to LLVM IR and then compiled to native executable code at runtime. It opens a possibility of dynamic code optimizations, e.g. runtime function specialization for specific parameters known only at runtime. Flexible library architecture allows simple extensibility to any target platform supported by LLVM. At the end of the paper a system approbation on different platforms and a demonstration of dynamic optimizations capability are presented.https://ispranproceedings.elpub.ru/jour/article/view/554метапрограммированиекодогенерациявстроенный dslгетерогенные системывстроенные системы
spellingShingle G. V. Kirgizov
I. A. Kirilenko
Heterogeneous Architectures Programming Library
Труды Института системного программирования РАН
метапрограммирование
кодогенерация
встроенный dsl
гетерогенные системы
встроенные системы
title Heterogeneous Architectures Programming Library
title_full Heterogeneous Architectures Programming Library
title_fullStr Heterogeneous Architectures Programming Library
title_full_unstemmed Heterogeneous Architectures Programming Library
title_short Heterogeneous Architectures Programming Library
title_sort heterogeneous architectures programming library
topic метапрограммирование
кодогенерация
встроенный dsl
гетерогенные системы
встроенные системы
url https://ispranproceedings.elpub.ru/jour/article/view/554
work_keys_str_mv AT gvkirgizov heterogeneousarchitecturesprogramminglibrary
AT iakirilenko heterogeneousarchitecturesprogramminglibrary