Gaining Support for Multiple Device by Migrating a CUDA Code to oneAPI — Experiences with the Intel® DPC++ Compatibility Tool
Data Parallel C++ (DPC++), the C++- and SYCL-based programming language of choice in the oneAPI programming environment, promises to have a single source code that addresses multiple hardware architectures. However, starting from scratch or rewriting existing application is tedious if not out of question in most cases. The Intel® oneAPI Compatibility Tool addresses this issue by assisting in the migration from CUDA to DPC++. In this talk, we share our experiences with migrating a typical CUDA stencil application code to DPC++ with the help of the tool. The presentation addresses the basic porting process, required manual steps, and issues we faced with the tsunami simulation easyWave. Besides these procedural steps, we point out performance numbers of the hardware devices supported by oneAPI and its evolving ecosystem. This is not limited to devices like Intel CPUs and GPUs but includes promising numbers for CUDA hardware as well. We also demonstrate what needs to be done to execute the migrated, CUDA-originated code on FPGAs.