Cargando…

An embedded domain specific language for general purpose vectorization

Portable SIMD code generation is an open problem in modern High Performance Computing systems. Performance portability can already be achieved, however it might fail when user-framework interaction is required. Of all portable vectorization techniques, explicit vectorization, using wrapper-class li...

Descripción completa

Detalles Bibliográficos
Autores principales: Karpinski, Przemyslaw, McDonald, John
Lenguaje:eng
Publicado: 2017
Materias:
Acceso en línea:https://dx.doi.org/10.1007/978-3-319-67630-2_37
http://cds.cern.ch/record/2302594
_version_ 1780957289887301632
author Karpinski, Przemyslaw
McDonald, John
author_facet Karpinski, Przemyslaw
McDonald, John
author_sort Karpinski, Przemyslaw
collection CERN
description Portable SIMD code generation is an open problem in modern High Performance Computing systems. Performance portability can already be achieved, however it might fail when user-framework interaction is required. Of all portable vectorization techniques, explicit vectorization, using wrapper-class libraries, is proven to achieve the fastest performance, however it does not exploit optimization opportunities outside the simplest algebraic primitives. A more advanced language is therefore required, but the design of a new independent language is not feasible due to its high costs. This work describes an Embedded Domain Specific Language for solving generalized 1-D vectorization problems. The language is implemented using C++ as a host language and published as a lightweight library. By decoupling expression creation from evaluation a wider range of problems can be solved, without sacrificing runtime efficiency. In this paper we discuss design patterns necessary, but not limited, to efficient EDSL implementation. We also study specific scenarios in which a language-based interface can surpass procedural interfaces in both efficiency, portability and ease of use. In particular we demonstrate higher performance when compared with equivalent BLAS Level 1 routines.
id cern-2302594
institution Organización Europea para la Investigación Nuclear
language eng
publishDate 2017
record_format invenio
spelling cern-23025942019-09-30T06:29:59Zdoi:10.1007/978-3-319-67630-2_37http://cds.cern.ch/record/2302594engKarpinski, PrzemyslawMcDonald, JohnAn embedded domain specific language for general purpose vectorizationComputing and ComputersPortable SIMD code generation is an open problem in modern High Performance Computing systems. Performance portability can already be achieved, however it might fail when user-framework interaction is required. Of all portable vectorization techniques, explicit vectorization, using wrapper-class libraries, is proven to achieve the fastest performance, however it does not exploit optimization opportunities outside the simplest algebraic primitives. A more advanced language is therefore required, but the design of a new independent language is not feasible due to its high costs. This work describes an Embedded Domain Specific Language for solving generalized 1-D vectorization problems. The language is implemented using C++ as a host language and published as a lightweight library. By decoupling expression creation from evaluation a wider range of problems can be solved, without sacrificing runtime efficiency. In this paper we discuss design patterns necessary, but not limited, to efficient EDSL implementation. We also study specific scenarios in which a language-based interface can surpass procedural interfaces in both efficiency, portability and ease of use. In particular we demonstrate higher performance when compared with equivalent BLAS Level 1 routines.oai:cds.cern.ch:23025942017
spellingShingle Computing and Computers
Karpinski, Przemyslaw
McDonald, John
An embedded domain specific language for general purpose vectorization
title An embedded domain specific language for general purpose vectorization
title_full An embedded domain specific language for general purpose vectorization
title_fullStr An embedded domain specific language for general purpose vectorization
title_full_unstemmed An embedded domain specific language for general purpose vectorization
title_short An embedded domain specific language for general purpose vectorization
title_sort embedded domain specific language for general purpose vectorization
topic Computing and Computers
url https://dx.doi.org/10.1007/978-3-319-67630-2_37
http://cds.cern.ch/record/2302594
work_keys_str_mv AT karpinskiprzemyslaw anembeddeddomainspecificlanguageforgeneralpurposevectorization
AT mcdonaldjohn anembeddeddomainspecificlanguageforgeneralpurposevectorization
AT karpinskiprzemyslaw embeddeddomainspecificlanguageforgeneralpurposevectorization
AT mcdonaldjohn embeddeddomainspecificlanguageforgeneralpurposevectorization