Intel Open-Sources SYCLomatic Migration Tool to Help Developers Create Heterogeneous Code
May 20, 2022
Intel released an open source tool to migrate code to SYCL1 through a project called SYCLomatic, which helps developers port CUDA code to SYCL and C++ to accelerate cross-architecture programming for heterogeneous architectures.
The open source project enables community collaboration to advance adoption of the SYCL standard, a step towards freeing developers from a single-vendor proprietary ecosystem.
“Migrating to C++ with SYCL gives code stronger ISO C++ alignment, multivendor support to relieve vendor lock-in and support for multiarchitecture to provide flexibility in harnessing the full power of new hardware innovations. SYCLomatic offers a valuable tool to automate much of the work, allowing developers to focus more on custom tuning than porting.” –James Reinders, Intel oneAPI evangelist
SYCL, a C++-based Khronos Group standard, extends C++ capabilities to support multiarchitecture and disjoint memory configurations. To initiate this project, Intel open-sourced the technology behind its DPC++ Compatibility Tool to further advance the migration capabilities for producing more SYCL-based applications. Reusing code across architectures simplifies development, reducing time and costs for ongoing code maintenance.
Utilizing the Apache 2.0 license with LLVM exception, the SYCLomatic project hosted on GitHub offers a community for developers to contribute and provide feedback to further open heterogeneous development across CPUs, GPUs, and FPGAs.
SYCLomatic assists developers in porting CUDA code to SYCL, typically migrating 90-95% of CUDA code automatically to SYCL code2. To finish the process, developers complete the rest of the coding manually and then custom-tune to the desired level of performance for the architecture.
Research organizations and Intel customers have successfully used the Intel DPC++ Compatibility Tool, which has the same technologies as SYCLomatic, to migrate CUDA code to SYCL (or Data Parallel C++, oneAPI’s implementation of SYCL) on multiple vendors’ architectures. Examples include the University of Stockholm with GROMACS 20223, Zuse Institute Berlin (ZIB) with easyWave, Samsung Medison, and Bittware (view oneAPI DevSummit content for more examples). Multiple customers are also testing code on current and upcoming Intel Xe architecture-based GPUs, including Argonne National Laboratory Aurora supercomputer, Leibniz Supercomputing Centre (LRZ), GE Healthcare, and others.
SYCLomatic is a GitHub project. The GitHub portal includes a “contributing.md” guide describing the steps for technical contributions to the project to ensure maximum ease. Developers are encouraged to use the tool and provide feedback and contributions to advance the tool’s evolution.
“CRK-HACC is an N-body cosmological simulation code actively under development. To prepare for Aurora, the Intel DPC++ Compatibility Tool allowed us to quickly migrate over 20 kernels to SYCL. Since the current version of the code migration tool does not support migration to functors, we wrote a simple clang tool to refactor the resulting SYCL source code to meet our needs. With the open source SYCLomatic project, we plan to integrate our previous work for a more robust solution and contribute to making functors part of the available migration options," said Steve (Esteban) Rangel of HACC (Hardware/Hybrid Accelerated Cosmology Code), Cosmological Physics & Advanced Computing (anl.gov).
For more information, visit: www.intel.com