SYCL support in the OP2 DSL
ISTVAN REGULY
Unknown
- 0 Collaborators
The introduction of SYCL/OneAPI in the OP2 DSL for unstructured mesh computations. The project evaluates different execution strategies for different target hardware and compilers. ...learn more
Project status: Under Development
Intel Technologies
oneAPI,
DPC++,
Intel Iris Xe MAX,
Intel vTune,
Intel CPU
Overview / Usage
As the computing hardware landscape gets more diverse, and the complexity of hardware grows, the need for a general purpose parallel programming model capable of developing (performance) portable codes have become highly attractive. Intel's OneAPI suite, which is based on the SYCL standard, itself based on OpenCL, aims to fill this gap using a modern C++ API. In this project, we use SYCL to parallelize MG-CFD, an unstructured-mesh computational fluid dynamics (CFD) code, to explore current performance of SYCL. The code is benchmarked on several modern processor systems from Intel (including CPUs and the latest Xe GPU), AMD, ARM and Nvidia, making use of a variety of current SYCL compilers, with a particular focus on OneAPI and how it maps it Intel's CPU and GPU architectures. We compare with other programming models, including SIMD, OpenMP, MPI and CUDA. The results are mixed; the performance of this class of applications, when parallelized with SYCL, highly depends on the target architecture and the compiler, but in many cases comes close to the currently prevalent parallel programming models. However, as with OpenCL, it still requires different parallelization strategies or code-paths be written for different hardware to obtain the best performance.
Methodology / Approach
We utilize the OP2 DSL to automatically generate SYCL code, which is then compiled by OneAPI's DPCPP, or hipSYCL.
Technologies Used
OneAPI, Intel compilers, MPI, SIMD, Intel Cascade Lake CPUs, Intel Iris XE MAX
Documents and Presentations
Repository
https://github.com/OP-DSL/OP2-Common/tree/feature/sycl