This Intel® DPC++ Compatibility Tool (DPCT) minimizes code-migration time and assists in the migration of a developer's program that is written in CUDA* to a program written in SYCL (called Data Parallel C++ abbreviated DPC++ in the first oneAPI release) by generating SYCL code for the developer wherever possible.
Refer to this article to get more information about semantic versioning followed by this tool.
Key Features
- Support for migration of CUDA* kernels, host and device API calls (for example, memory management, events, math, etc..) and library calls (cuBLAS*, cuSPARSE*, cuSolver*, cuRand*, cuFFT*, cuDNN*, NCCL*, Nvidia* Thrust*, CUB*). Typically, 90%-95% of CUDA code migrates to DPC++ code by the tool. (Intel estimates as of Sep. 2024. Based on measurements on a set of open-source applications, HPC benchmarks and samples, with examples like llama.cpp*, stable-diffusion*, SqueezeLLM*, Rodinia*, SHOC*, PENNANT*, Velocity-Bench*. Results may vary.)
- Warning messages are emitted to command line output and inlined into the generated code, when the code requires manual work to help you finish the application.
Known Issues or Limitations
- Fortran code is not supported.
- On some Linux environment that ccache is enabled, the intercept-build cannot generate the complete compilation database as some compile commands may be skipped if the target objects are already available in the cache. Please set the environment variable CCACHE_DISABLE=1 in this case.
- For projects migrated with old version of DPCT, build errors with message "no template named 'vector_class' in namespace 'sycl' " may happen when you switch to Intel® oneAPI recent releases. Please refer to this article for this issue.
- DPCT migrates projects which use NCCL* to use Intel® oneAPI Collective Communications Library (oneCCL) which is not available for Windows* OS, hence such migrated projects could not be built on Windows* platforms.
- If you use DPCT to migrate project with compilation database (compile_commands.json) without specifying input files in command line, DPCT will try to migrate all source file(s) listed in compilation database together. If kernel function(s) with the same signature is redefined in several file(s) which are used to build different binary or library targets in original project, then the migration result may be wrong. The workaround is to migrate the source file(s) which are used to build one binary or library target together and not mix them with the source file(s) which are used to build the other binary or library target. You can specify the input file(s) to be migrated together in the command line of the Intel® DPC++ Compatibility Tool, or generate a set of the compilation databases by running “intercept-build make sub-target” with different sub-target each time and migrate source files with each compilation database.
2025.0.0 Release
New Features
- Added support for CUDA DirectX*(stable release 12 Ultimate API) interoperation APIs migration.
- Added support to migrate CUDA code with SYCLcompat library. Users can explicitly choose to use this library with the new option '--use-syclcompat'.
- Added support for C++ template functions in the 'user-defined migration rule'.
- Added a new DPCT help function for "peer-to-peer" memory copy.
- Added support for CUDA version 12.5 and 12.6 header files.
Changes to Existing Features
- IDE plug-in for Visual Studio and Eclipse is not included in this release. Please continue to use the one delivered in last release.
- Improved CUDA texture migration with the new SYCL bindless image extension.
- Enhanced user experience of the 'CodePin' feature by performance improvement of the instrumented code and generating data-flow graph for large benchmarks.
- Improved CMake script migration for more CMake keywords related to CUDA
- Improved cooperative group APIs migration with SYCL root_group extension.
- Improved cuBLAS and CUB APIs migration.
Fixed Issues
- Fixed a bunch of bugs during the migration process of large workloads such as RELION*, GROMACS*, NAMD*, bitsandbytes*, tiny-cuda-nn* and TransformerEngine*.
- Fixed the bug that the '--whole-archive' option is omitted in Makefiles generated via the '--gen-build-script' option.
- Fixed bugs related to the 'CodePin' feature.
- Fixed bugs related to Thrust, driver and runtime APIs migration.
- Fixed bugs occurred in intercept-build for the crash when parsing '-arch' and '--gpu-architecture' options in Makefiles.
- Fixed the bug that the option '--report-diags-content=transformation' does not work.
- Fixed bugs in PTX assembly migration caused by SYCL math API changes.
- Multiple other bug fixes and improvements.
Previous 2024.x Releases
Here is the link for the release notes of version 2024.x.
Software requirements
Please reference Intel® DPC++ Compatibility Tool System Requirements
How to use Intel® DPC++ Compatibility Tool
Please reference Getting Started Guide for Intel® DPC++ Compatibility Tool
Notices and Disclaimers
Intel technologies may require enabled hardware, software or service activation.
No product or component can be absolutely secure.
Your costs and results may vary.
© Intel Corporation. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Other names and brands may be claimed as the property of others.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.