Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2568058.2568062acmconferencesArticle/Chapter ViewAbstractPublication PagesppoppConference Proceedingsconference-collections
research-article

Sierra: a SIMD extension for C++

Published: 16 February 2014 Publication History

Abstract

Nowadays, SIMD hardware is omnipresent in computers. Nonetheless, many software projects make hardly use of SIMD instructions: Applications are usually written in general-purpose languages like C++. However, general-purpose languages only provide poor abstractions for SIMD programming enforcing an error-prone, assembly-like programming style. An alternative are data-parallel languages. They indeed offer more convenience to target SIMD architectures but introduce their own set of problems. In particular, programmers are often unwilling to port their working C++ code to a new programming language.
In this paper we present Sierra: a SIMD extension for C++. It combines the full power of C++ with an intuitive and effective way to address SIMD hardware. With Sierra, the programmer can write efficient, portable and maintainable code. It is particularly easy to enhance existing code to run efficiently on SIMD machines.
In contrast to prior approaches, the programmer has explicit control over the involved vector lengths.

References

[1]
OpenMP Application Program Interface, 2013.
[2]
T. Akenine-Möller, E. Haines, and N. Hoffman. Real-Time Rendering, Third Edition. Taylor & Francis, 2011.
[3]
J. R. Allen, K. Kennedy, C. Porterfield, and J. Warren. Conversion of Control Dependence to Data Dependence. In POPL, 1983.
[4]
R. Allen and K. Kennedy. Automatic Translation of FORTRAN Programs to Vector Form. ACM Trans. Program. Lang. Syst., 1987.
[5]
Y. Ben-Asher and N. Rotem. Hybrid type legalization for a sparse SIMD instruction set. TACO, 2013.
[6]
G. Cheong and M. Lam. An optimizer for multimedia instruction sets. In SUIF, 1997.
[7]
P. Esterie, M. Gaunard, J. Falcou, J.-T. Lapresté, and B. Rozoy. Boost.SIMD: generic programming for portable SIMDization. In PACT, 2012.
[8]
M. J. Flynn. Some computer organizations and their effectiveness. IEEE Trans. Comput., 1972.
[9]
N. Fritz. SIMD Code Generation in Data-Parallel Programming. PhD thesis, Universität des Saarlandes, 2009.
[10]
A. Ghuloum et al. Future-Proof Data Parallel Algorithms and Software on Intel Multi-Core Architecture. Intel Technology Journal, 11(04), November 2007.
[11]
P. Hanrahan and J. Lawson. A language for shading and lighting calculations. In SIGGRAPH, 1990.
[12]
Intel Corp. Intel R 64 and IA-32 Architectures Optimization Reference Manual, 2009.
[13]
K. E. Iverson. A Programming Language. John Wiley & Sons, Inc., 1962.
[14]
R. Karrenberg and S. Hack. Whole Function Vectorization. In CGO, 2011.
[15]
R. Karrenberg and S. Hack. Improving performance of OpenCL on CPUs. In CC, 2012.
[16]
Khronos. The OpenCL Specification, version: 1.2 edition, 2012.
[17]
Khronos. The OpenGL Shading Language, language version: 4.40 edition, 2013.
[18]
A. Krall and S. Lelait. Compilation techniques for multimedia processors. International Journal of Parallel Programming, 2000.
[19]
S. Larsen and S. Amarasinghe. Exploiting superword level parallelism with multimedia instruction sets. In PLDI, 2000.
[20]
R. Leißa. Automatic SIMD code generation. Master's thesis, Westfälische Wilhelms-Universität Münster, 2010.
[21]
R. Leißa, S. Hack, and I. Wald. Extending a C-like Language for Portable SIMD Programming. In PPoPP, 2012.
[22]
W. R. Mark, R. Steven, G. Kurt, A. Mark, and J. Kilgard. Cg: A system for programming graphics hardware in a C-like language. 2003.
[23]
M. McCool. A Retargetable, Dynamic Compiler and Embedded language. In CGO, 2011.
[24]
G. Michaelson and P. Cockshott. Vector Pascal, an array language, 2002.
[25]
V. N. Ngo. Parallel Loop Transformation Techniques for Vector-based Multiprocessor Systems. PhD thesis, 1995.
[26]
D. Nuzman and R. Henderson. Multi-platform auto-vectorization. In CGO, 2006.
[27]
D. Nuzman and A. Zaks. Outer-loop vectorization: Revisited for short simd architectures. In PACT, 2008.
[28]
NVIDIA. CUDA Programming Guide, 2009.
[29]
M. Pharr and W. R. Mark. ispc: A SPMD compiler for highperformance CPU programming. In InPar, 2012.
[30]
J. Shin, M. Hall, and J. Chame. Superword-level parallelism in the presence of control flow. In CGO, 2005.
[31]
J. Shirako, D. M. Peixotto, V. Sarkar, and W. N. Scherer. Phasers: A unified deadlock-free construct for collective and point-to-point synchronization. In ICS, 2008.
[32]
N. Sreraman and R. Govindarajan. A vectorizing compiler for multimedia extensions. International Journal of Parallel Programming, 2000.
[33]
S. St-Laurent and E. Wolfgang. The Complete HLSL Reference. Paradoxal Press, 2005.
[34]
I. Wald, P. Slusallek, C. Benthin, and M. Wagner. Interactive Rendering with Coherent Ray Tracing. Computer Graphics Forum (Proceedings of EUROGRAPHICS), 2001.
[35]
J. Zhou and K. A. Ross. Implementing Database Operations Using SIMD Instructions. In SIGMOD, 2002.

Cited By

View all
  • (2023)Autovesk: Automatic Vectorized Code Generation from Unstructured Static Kernels Using Graph TransformationsACM Transactions on Architecture and Code Optimization10.1145/363170921:1(1-25)Online publication date: 9-Nov-2023
  • (2021)An abstract interpretation for SPMD divergence on reducible control flow graphsProceedings of the ACM on Programming Languages10.1145/34343125:POPL(1-31)Online publication date: 4-Jan-2021
  • (2021)Parallel SIMD - A Policy Based Solution for Free Speed-Up using C++ Data-Parallel Types2021 IEEE/ACM 6th International Workshop on Extreme Scale Programming Models and Middleware (ESPM2)10.1109/ESPM254806.2021.00008(20-29)Online publication date: Nov-2021
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
WPMVP '14: Proceedings of the 2014 Workshop on Programming models for SIMD/Vector processing
February 2014
94 pages
ISBN:9781450326537
DOI:10.1145/2568058
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 16 February 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. SIMD
  2. c++
  3. vectorization

Qualifiers

  • Research-article

Conference

PPoPP '14
Sponsor:

Acceptance Rates

WPMVP '14 Paper Acceptance Rate 12 of 18 submissions, 67%;
Overall Acceptance Rate 20 of 30 submissions, 67%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)10
  • Downloads (Last 6 weeks)2
Reflects downloads up to 16 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Autovesk: Automatic Vectorized Code Generation from Unstructured Static Kernels Using Graph TransformationsACM Transactions on Architecture and Code Optimization10.1145/363170921:1(1-25)Online publication date: 9-Nov-2023
  • (2021)An abstract interpretation for SPMD divergence on reducible control flow graphsProceedings of the ACM on Programming Languages10.1145/34343125:POPL(1-31)Online publication date: 4-Jan-2021
  • (2021)Parallel SIMD - A Policy Based Solution for Free Speed-Up using C++ Data-Parallel Types2021 IEEE/ACM 6th International Workshop on Extreme Scale Programming Models and Middleware (ESPM2)10.1109/ESPM254806.2021.00008(20-29)Online publication date: Nov-2021
  • (2020)Reshape your layouts, not your programs: A safe language extension for better cache localityScience of Computer Programming10.1016/j.scico.2020.102481(102481)Online publication date: May-2020
  • (2019)SIMD programming using intel vector extensionsJournal of Parallel and Distributed Computing10.1016/j.jpdc.2019.09.012Online publication date: Sep-2019
  • (2018)Ikra-CppProceedings of the 2018 4th Workshop on Programming Models for SIMD/Vector Processing10.1145/3178433.3178439(1-9)Online publication date: 24-Feb-2018
  • (2018)UsubaProceedings of the 2018 4th Workshop on Programming Models for SIMD/Vector Processing10.1145/3178433.3178437(1-8)Online publication date: 24-Feb-2018
  • (2018)C: Adding modern programming language features to CSoftware: Practice and Experience10.1002/spe.262448:12(2111-2146)Online publication date: 20-Aug-2018
  • (2017)InastempScientific Programming10.1155/2017/54824682017Online publication date: 1-Jan-2017
  • (2017)Auto-vectorization for image processing DSLsACM SIGPLAN Notices10.1145/3140582.308103952:5(21-30)Online publication date: 21-Jun-2017
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media