Intel® DPC++ Compatibility Tool Release Notes

ID 763672
Updated 3/7/2024
Version 2024.1
Public

author-image

By

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 March 2023. Based on measurements on a set of 85 HPC benchmarks and samples, with examples like 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.
  • 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 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.

2024.1.0 Release

New Features

  1. Added experimental feature - relative debugging with the instrumentation technique called "CodePin" in DPCT to help identify the source of divergent runtime behavior by comparing variable values at specific points in both CUDA and SYCL codes.
  2. Added experimental feature - initial cmake script migration to migrate a CUDA specific cmake syntax to the corresponding SYCL version.
  3. Added new option '--analysis-mode' to provide an estimation of how much human effort will be required to complete the code migration.
  4. Added support for CUDA version 12.3 header files.
  5. IDE plug-in versions supported in this release - Visual Studio 2022 version <= 17.9.2; Visual Studio 2019 version <= 16.11.34; Eclipse version is limited to 2023-12 and 2024-03.

Changes to Existing Features

  1. Refined migration of cudaFree by adding wait for those operations that may refer to this memory. The old behavior (without wait) is still preserved with the option '--optimize-migration'.
  2. Added file check in migration report output.
  3. Removed two options '--no-cl-namespace-inline' and '--use-explicit-namespace=cl'.
  4. Improved the behavior of option '--query-api-mapping'.
  5. Optimized the migration of assembly for CUDA backend of SYCL in some DPCT helper functions.
  6. Improved migration of device constant variable.
  7. Improved assembly code migration.
  8. Improved NCCL, cuBlas, cuSolver, cuSparse, cuRand, CUB and Nvidia* Thrust API migration.
  9. Improved runtime, driver and math API migration.
  10. Improved built-in MACRO migration.

Fixed Issues

  1. Fixed a bug that an existing file is overwritten without warnings during migration.
  2. Fixed a bug related to __syncthreads migration. 
  3. Fixed bugs related to FasterTransformer* migration.
  4. Fixed bugs related to the auto-generated Makefile by DPCT.
  5. Fixed bugs related to the incompatibility between clang and nvcc.
  6. Multiple other bug fixes and improvements.

2024.0.0 Release

New Features

  1. Improved Directory Layout -  
    The Unified Directory Layout is implemented in 2024.0. If you have multiple toolkit versions installed, the Unified layout ensures that your development environment contains the correct component versions for each installed version of the toolkit. For detailed information about the Unified layout, refer to Intel® oneAPI Base Toolkit Release Notes.
  2. Added new option '--helper-function-preference' to use SYCL standard APIs directly instead of DPCT Helper functions.
  3. Added new option '--query-api-mapping' to provide a glance of the output SYCL code for CUDA API without an actual migration process.
  4. Added CUDA cooperative groups migration via option '--use-experimental-features=logical-group'.
  5. Added support for CUDA version 12.2 header files.
  6. IDE plug-in versions supported in this release - Visual Studio 2022 version <= 17.7.6; Visual Studio 2019 version <= 16.11.31; Eclipse version is limited to 2023-06 and 2023-09R.

Changes to Existing Features

  1. Removed '--custom-helper-name' option and suggested to use '--gen-helper-function' if DPCT helper functions wanted.
  2. Improved cuBlas, cuSolver, cuSparse, cuRand and Nvidia* Thrust API migration.
  3. Improved runtime, driver and math API migration.
  4. Refined DPCT helper functions to match updates in SYCL 2020 spec.

Fixed Issues

  1. Fixed bugs '-fsycl' option is omitted in Makefile generated via '--gen-build-script' option.
  2. Fixed bugs in 'intercept-build' that generated incorrect contents in compilation database.
  3. Fixed bugs related to hcpBench* migration.
  4. Fixed bugs related to MACRO expansions
  5. Multiple other bug fixes and improvements.

Previous 2023.x Releases

Here is the link for the release notes of version 2023.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.