This Intel® DPC++ Compatibility Tool minimizes code-migration time and assists in the migration of a developer's program that is written in CUDA* to a program written in Data Parallel C++ (DPC++) by generating DPC++ 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 September 2021. Based on measurements on a set of 70 HPC benchmarks and samples, with examples like Rodinia*, SHOC*, PENNANT*. 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.
- Integration with Visual Studio* 2019 and 2022 on Windows* and Eclipse* on Linux* provides enhanced migration usability.
Support for Integrations for Visual Studio is limited to two supported major versions of Visual Studio: the current publicly available and supported major version and the previous major version from Microsoft®.
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 Intel® DPC++ Compatibility Tool, 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.
- Intel® DPC++ Compatibility Tool 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 Intel® DPC++ Compatibility Tool to migrate project with compilation database (compile_commands.json) without specifying input files in command line, the Intel® DPC++ Compatibility Tool 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.
2023.2.0 Release
New Features
- Added new option '--gen-helper-function' to place helper function files that are needed during SYCL code building into '--out-root' directory.
- Added error-handling macro so that the output SYCL code could mimic the error-code-return style used by CUDA APIs.
- Added support for CUDA version 12.1 header files.
- IDE plug-in versions supported in this release - Visual Studio 2022 version <= 17.6.4; Visual Studio 2019 version <= 16.11.27; Eclipse version is limited to 2023-03 and 2023-06.
Changes to Existing Features
- Refined migration policy to generate pure SYCL code without using DPCT helper functions, if possible.
- Refined DPCT helper functions to match updates in oneMKL.
- Improved error messages reporting when DPCT internal errors happen.
- Improved CUDA kernel launch API related migration.
- Improved cuSolver, cuSparse, CUB, cuRand and Nvidia Thrust API migration.
- Improved runtime and math API migration.
Fixed Issues
- Fixed bugs related to incorrect Makefile contents generated via '--gen-build-script' option.
- Fixed bugs in 'intercept-build' when handling buffer overflow.
- Fixed the bug that c++ header files which are included by 'nvcc' implicitly are not handled..
- Fixed the bug that '--extra-arg' option does not understand spaces inside string.
- Multiple other bug fixes and improvements.
2023.1.0 Release
New Features
- Added new option '--change-cuda-files-extension-only' so that file name extensions ".cpp" and ".cxx" are not changed after migration.
- Added some assembly support embedded in CUDA code.
- Added support for CUDA version 12.0 header files.
- IDE plug-in versions supported in this release - Visual Studio 2022 version <= 17.5.1; Visual Studio 2019 version <= 16.11.24; Eclipse version <= 2023-03 RC1
Changes to Existing Features
- Improved cuBLAS, cuDNN, cuFFT, cuRand and Nvidia Thrust API migration.
- Improved runtime and math API migration.
- Continous changes to improve conformance with SYCL 2020 specification.
Fixed Issues
- Fixed the bug of out of memory reported on migration of many files together.
- Fixed the bug that the '--cuda-include-path' option rejects the path that contains the tilde ~ character.
- Fixed the bug that the '--gen-build-script' option fails to handle project files that reside on network folder.
- Fixed bugs discovered on migration of AI workloads.
- Fixed bugs discovered on migration of OpenMM* and some new HPC benchmarks.
- Multiple other bug fixes and improvements.
2023.0.0 Release
New Features
- Added new option '--parse-build-log' of 'intercept-build' tool that could use build logs to generate compilation database.
- Added auto-completion of dpct and c2s command line via tab key.
- Added support for CUDA version 11.8 header files.
- IDE plug-in versions supported in this release - Visual Studio 2022 version <= 17.4.2; Visual Studio 2019 version <= 16.11.21; Eclipse version <= 2022-12 R
Changes to Existing Features
- Improved cuBLAS, cuDNN, cuFFT and Nvidia Thrust API migration.
- Improved runtime and driver API migration.
- Improved device data type migration.
- Improved intercept-build tool to run in an environment without Intel compiler provided libraries.
- Continous changes to improve conformance with SYCL 2020 specification.
Fixed Issues
- Fixed bugs related to incorrect migration of __CUDA__ARCH__.
- Fixed bugs discovered on migration of AI workloads.
- Fixed bugs discovered on migration of OpenMM*, Mini-Caffe* and EthMiner*.
- Multiple other bug fixes and improvements.
Previous 2022.x Releases
Here is the link for the release notes of version 2022.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.