SYCL support in the OP2 DSL

0 0
  • 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

oneAPI, HPC

Intel Technologies
oneAPI, DPC++, Intel Iris Xe MAX, Intel vTune, Intel CPU

Docs/PDFs [1]Code Samples [1]Links [1]

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

Comments (0)