ABSTRACT
A memory consistency model is a key component of a parallel programming model that describes guaranteed behavior for applications and valid optimizations for implementers. The SYCL 2020 specification took a step forward by adopting the atomic_ref syntax from the C++20 specification and concepts similar to memory scopes from the OpenCL 2.0 specification, though further efforts to formalize the SYCL memory model are ongoing and will be progressed in future specifications.
This technical presentation will summarize the guarantees and several unexpected non-guarantees that are provided by the memory model in the SYCL 2020 specification, using accessible language and examples. The talk will describe memory models from other parallel programming models that could inform and influence the SYCL memory model, including the C++, OpenCL 2.0, and Vulkan memory models. The talk will also describe features unique to the SYCL specification that will need to be included in the SYCL memory model, such as unified shared memory, which introduce challenges that have not been solved in existing memory models.
- [n.d.]. Comparing the Vulkan SPIR-V memory model to C++s. https://www.khronos.org/blog/comparing-the-vulkan-spir-v-memory-model-to-cs. Accessed: 2021-16-03.Google Scholar
- Mark Batty, Alastair F. Donaldson, and John Wickerson. 2016. Overhauling SC Atomics in C11 and OpenCL. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (St. Petersburg, FL, USA) (POPL ’16). Association for Computing Machinery, New York, NY, USA, 634–648. https://doi.org/10.1145/2837614.2837637Google ScholarDigital Library
- Benedict R. Gaster, Derek Hower, and Lee Howes. 2015. HRF-Relaxed: Adapting HRF to the Complexities of Industrial Heterogeneous Memory Models. ACM Trans. Archit. Code Optim. 12, 1, Article 7 (April 2015), 26 pages. https://doi.org/10.1145/2701618Google ScholarDigital Library
- Khronos OpenCL Working Group. 2012. The OpenCL 1.2 API Specification. https://www.khronos.org/registry/OpenCL/.Google Scholar
- Khronos OpenCL Working Group. 2015. The OpenCL 2.0 API Specification. https://www.khronos.org/registry/OpenCL/.Google Scholar
- Khronos SYCL Working Group. 2020. The SYCL 1.2.1 Specification. https://www.khronos.org/registry/SYCL/.Google Scholar
- Khronos Vulkan Working Group. 2021. Vulkan 1.2.173 - A Specification. https://www.khronos.org/registry/vulkan/.Google Scholar
- ISO. 2017. ISO/IEC 14882:2017 Information technology — Programming languages — C++ (fifthed.). 1605 pages. https://www.iso.org/standard/68564.htmlGoogle Scholar
- Daniel Jackson. 2002. Alloy: A Lightweight Object Modelling Notation. ACM Trans. Softw. Eng. Methodol. 11, 2 (April 2002), 256290. https://doi.org/10.1145/505145.505149Google ScholarDigital Library
- Daniel Lustig, Sameer Sahasrabuddhe, and Olivier Giroux. 2019. A Formal Analysis of the NVIDIA PTX Memory Consistency Model. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (Providence, RI, USA) (ASPLOS ’19). Association for Computing Machinery, New York, NY, USA, 257270. https://doi.org/10.1145/3297858.3304043Google ScholarDigital Library
- John Wickerson, Mark Batty, Tyler Sorensen, and George A. Constantinides. 2017. Automatically Comparing Memory Consistency Models. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (Paris, France) (POPL 2017). Association for Computing Machinery, New York, NY, USA, 190204. https://doi.org/10.1145/3009837.3009838Google ScholarDigital Library
Index Terms
- Toward a Better Defined SYCL Memory Consistency Model
Recommendations
Black-Scholes Option Pricing on Intel CPUs and GPUs: Implementation on SYCL and Optimization Techniques
SupercomputingAbstractThe Black-Scholes option pricing problem is one of the widely used financial benchmarks. We explore the possibility of developing a high-performance portable code using the SYCL (Data Parallel C++) programming language. We start from a C++ code ...
Performance Portability Assessment: Non-negative Matrix Factorization as a Case Study
Euro-Par 2022: Parallel Processing WorkshopsAbstractSYCL standard has been released with the conviction to increase code portability in heterogeneous environments. On its side, Intel has launched the oneAPI toolkit, which includes the Data Parallel C++ language, the Intel implementation of SYCL. ...
Exploring the performance and portability of the k-means algorithm on SYCL across CPU and GPU architectures
AbstractThe aim of SYCL is to reduce the gap between the performance and code portability of the main accelerators used in HPC, such as multi-vendor CPUs, GPUs, and FPGAs. To evaluate SYCL’s performance portability, this paper uses the k-means algorithm ...
Comments