Intel® DPC++ Compatibility Tool 2022 Release Notes

ID 762521
Updated 11/1/2022
Version 2022.2.1
Public

author-image

By

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* 2017, 2019 and 2022 on Windows* and Eclipse* on Linux* provides enhanced migration usability.

The Integration for Microsoft Visual Studio* 2017 is deprecated and will be removed in a future release. 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®.

 

2022.2.0 Release

New Features

  1. Added "User-defined Migration Rules" for include header files, type/class and enum migration. More details, please refer to  Intel® DPC++ Compatibility Tool Developer Guide and Reference for user-defined migration rules.
  2. Added support for cuComplex* API migration.
  3. Added partial support for cuDNN and NCCL API migration.
  4. Added support for CUDA version 11.7 header files.
  5. IDE plug-in versions supported in this release - Visual Studio 2022 version <= 17.2.6; Visual Studio 2019 version <= 16.11.17; Visual Studio 2017 version <= 15.9.49; Eclipse version <= 2022-06 R

Changes to Existing Features

  1. Improved cuBLAS, cuRand, cuFFT and Nvidia Thrust API migration.
  2. Improved runtime and driver API migration.
  3. Refined descriptions of command line options.
  4. Improved the __host__ __device__ function migration.

Fixed Issues

  1. Fixed bug when the tool generated empty makefile or missed target.
  2. Fixed bugs discovered on migration of AI workloads.
  3. Fixed several bugs in DPCT helpers.
  4. Multiple other bug fixes and improvements.

2022.1.0 Release

New Features

  1. Introduced "User-defined Migration Rules" for macro and API migration. Use option “--rule-file=<file>” to customize the migration. More details, please refer to  Intel® DPC++ Compatibility Tool Developer Guide and Reference for user-defined migration rules.
  2. Introduced '--in-root-exclude' option which excludes directories or files to be migrated.
  3. Introduced “--check-unicode-security” option to enable detection and warn about Unicode constructs in the original code that can be exploited by using bi-directional formatting codes and homoglyphs in identifiers.
  4. Added the experimental feature - allocation of local memory objects at the kernel functor scope.
  5. Added the migration of __ffs().
  6. Supported the triple brackets intermittent with spaces in CUDA kernel invocation (for example, one space appears after the 2nd left-side bracket and another space appears after the 1st right-side bracket like '<< <... > >>').
  7. Added support for CUDA* version 11.5 and 11.6 header files.

Changes to Existing Features

  1. Continous changes to improve conformance with SYCL 2020 specification.
  2. Improved cuRand API migration and driver API migration.
  3. Improved performance of migrated code by removing unnecesary dpct::get_value call if the source address already resides on host.
  4. Improved performance of migrated code by migrating __syncthreads() to nd_item.barrier(sycl::access::fence_space::local_space) when possible.

Fixed Issues

  1. Fixed the bug that getters of dpct::device_info are not const function.
  2. Fixed bugs discovered on migration of Nbody*.
  3. Fixed the bug that __syncwarp is migrated incorrectly with SYCL group-scope barrier.
  4. Multiple other bug fixes and improvements.

2022.0.0 Release

New Features

  1. Introduced '--gen-build-script' option which creates makefiles automatically for the output DPC++ sources.
  2. Introduced '--no-incremental-migration' option which, when you repeat a previous 'dpct' command and append this option, forces 'dpct' command to ignore existing migrated output file contents from your previous command.

Changes to Existing Features

  1. Continous changes to improve conformance with SYCL 2020 specification.
  2. Improved CUB API migration, driver API migration and device properties migration.

Fixed Issues

  1. Fixed a bug discovered on migration of Rodinia* kmeans.
  2. Fixed a set of bugs discovered on migration of MAGMA*.
  3. Fixed a bug of migrating __device__ __constant__ global variables used in kernel functions.
  4. Fixed a bug of migrating Thrust API make_discard_iterator.
  5. Fixed a bug with '--process-all' option that copies the header file that has been migrated already.
  6. Multiple other bug fixes and improvements.

Previous 2021.x Releases

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

Known Issues or Limitations

  • The new option '--parse-build-log' of 'intercept-build' tool is an experimental feature with known issue that incorrect file path is produced in the generated compilation database.
  • Fortran code is not supported.
  • 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. 
  • 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.
  • 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.

 

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.