Intel® oneAPI Base Toolkit Release Notes

By Jennifer L Jiang,

Published:07/10/2019   Last Updated:03/30/2021

Intel® oneAPI Base Toolkit supports direct programming and API programming, and delivers a unified language and libraries that offer full native code support across a range of hardware including Intel® and compatible processors, Intel® Processor Graphics Gen9, Gen11, Intel® Iris® Xe MAX graphics, and Intel® Arria® 10 or Intel® Stratix® 10 SX FPGAs. It offers direct programming model as well as API-based programming model, and it also contains analysis & debug tools for development and performance tuning.

Major Features Supported

Please visit Intel® oneAPI Toolkit and Component Versioning Schema for semantic versioning schema detail. 

New in 2021.2 Product Release

Key features at toolkit level

  • FPGA add-on component is integrated into Linux* online-installer
  • CMake support for performance libraries on Windows* and Linux

Intel® oneAPI DPC++/C++ Compiler

  • More SYCL 2020 features implemented, including "device_has", aspects, math array, global work offset in kernel enqueue
  • Experimental Explicit SIMD (ESIMD) extension supports Level Zero runtime and available on Windows host
  • Fast math is enabled by default (i.e., -fp-model=fast)
  • FPGA support:
    • Added support for targeting multiple homogeneous FPGA devices with the same or different device codes.
  • Intel C++ Compiler:
    • Vectorization improvements

Intel® oneAPI DPC++ Library (oneDPL)

  • New experimental asynchronous interfaces to enable concurrent execution of STL-like algorithm and interoperability with SYCL event-based control flow, and support the "set" algorithms matching Thrust 1.11.0 and Boost/compute asynchronous algorithm.
  • New support on the followings:
    • parallel, vector and DPC++ execution policies for those algorithms: shift_left, shift_right.
    • Range-based version of those algorithms: sort, stable_sort, merge.
    • a new macro ONEDPL_USE_PREDEFINED_POLICIES that can disable predefined policies objects and enable functions without arguments if needed.
  • Other performance improvements.

Intel® DPC++ Compatibility Tool 

  • Enabled partial migration of cuFFT API calls to oneMKL API calls, added initial migration of CUDA Driver API calls, improved Thrust API calls migration coverage
  • The tool can now merge the migrated source code from different branches of a conditional compilation into a single DPC++ source
  • Better coverage for specific code cases, more hints for developers, bug fixes.

Intel® oneAPI Math Kernel Library (oneMKL)

  • Introduced Poisson and Exponential distributions with DPC++ device APIs. 
  • Introduced Strided API support for DPC++ and C/Fortran OpenMP Offload.
  • Enabled OpenMP offload support for an extended set of functions across different components.

Intel® oneAPI Threading Building Blocks (oneTBB)

  • Added three-way comparison operators for concurrent ordered containers and concurrent_vector
  • Preview: Extended task_arena constraints to support Intel Hybrid Technology and Intel Hyper-Threading Technology.

Intel® Distribution for GDB*

  • New feature: Multi-GPU support
  • Bug fixes

Intel® Integrated Performance Primitives (Intel IPP)

  • Added support and optimized LZ4 1.9.3 version in Intel® IPP Data compression
  • Image processing:
    • Added floating-point shift support in ippiResizeSuper function.
    • New precise bilateral filter for image smoothing based on iterative least square method.

Intel® oneAPI Collective Communications Library (oneCCL)

  • Added float16 datatype support
  • Added ip-port hint for customization of KVS creation
  • Optimizations on communicator creation phase and multi-GPU collectives for single-node case

Intel® oneAPI Data Analytics Library (oneDAL)

  • Performance optimizations for Random Forest, PCA, SVM algorithms for CPU
  • Introduced bit-to-bit results reproducibility for CPU algorithms
  • Implemented Multi-Node Multi-GPU PCA, Low Order Moments, KMeans algorithms
  • Bug-fixes, performance improvements

Intel® oneAPI Deep Neural Networks Library (oneDNN)

  • Introduced initial optimizations for bfloat16 functionality for future Intel Xeon Scalable processor with Intel AMX support (code name Sapphire Rapids).
  • Introduced initial performance optimizations for future Intel Core processor with Intel AVX2 and Intel DL Boost instructions support (code name Alder Lake).
  • Introduced binary post-op for (de)-convolution, pooling, eltwise, binary, inner product, matmul and reduction (GPU only) along with performance optimizations for CPUs and GPUs. Extended the number of supported post-ops for primitives to 20.
  • Extended eltwise with support for logsigmoid, mish, hardswish, and clip_v2 algorithms, and binary primitive with support for comparison operators.

Intel® oneAPI Video Processing Library (oneVPL)

  • Dispatcher and CPU implementation updated to align with oneVPL Specification 2.2​
  • Intel(R) Media SDK to oneVPL migration guide
  • Windows* 32-bit support

Intel® Distribution for Python*

  • GPU support in XGBoost
  • numpy package update to v1.20.1
  • Support Level Zero driver in numba-dppy
  • Introduced bit-to-bit results reproducibility for Scikit-learn patches on CPU
  • Bug-fixes, performance improvements, and improvements in documentation, user guides and examples

Intel® Advisor

  • Advisor Vectorization and Roofline analysis support for Intel® microarchitecture processors code named Tiger Lake, Ice Lake, and Cooper Lake
  • Modernized  Source View analysis for Offload Modeling and GPU Roofline
  • Detailed GPU Kernel Analytics view
  • GPU Performance Projection now considers instruction latencies, that increases accuracy

Intel® VTune™ Profiler

  • User Interface: a new main vertical toolbar to enhance user experience
  • Hardware Support: Support for Intel Atom® Processor P Series code named Snow Ridge, including Hotspots, Microarchitecture Exploration, Memory Access, and Input and Output analyses. 
  • GPU Accelerators: Source-level analysis for DPC++ and OpenMP applications running on GPU over Level Zero 
  • Input and Output analysis:
    • a new Platform Diagram;  extended Intel® Data Direct I/O (Intel DDIO) utilization efficiency metrics.
    • Supporting none-root access Linux perf-based data collection on 1st and 2nd Generation Intel Xeon® Scalable Processors on Linux kernel versions 5.10 and newer. 

Intel® FPGA Add-On for oneAPI Base Toolkit (Optional)

  • Add Quartus 20.4 support

New in 2021.1 Product Release

System Requirements

Please see Intel oneAPI Base Toolkit System Requirements

Installation Instructions

Please visit Installation Guide for Intel oneAPI Toolkits

How to Start Using the Tools

Please reference:

Known Issues, Limitations and Workarounds

  1. Please read the whitepaper on Challenges, tips, and known issues when debugging heterogenous programs using DPC++ or OpenMP offload 
  2. Limitations
    1. Running any GPU code on a Virtual Machine is not supported at this time.
    2. If you have chosen to download the Get Started Guide to use offline, viewing it in Chrome may cause the text to disappear when the browser window is resized. To fix this problem, resize your browser window again, or use a different browser.
    3. Eclipse* 4.12: the code sample project created by IDE plugin from Makefile will not build. It is a known issue with Eclipse 4.12. Please use Eclipse 4.9, 4.10 or 4.11.
  3. Known issue - Linux repositories serving package managers

  4. Known issue for FPGA and GPU regarding libtinfo.so.5 library - clang: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

    • When compiling for FPGA or GPU, you might see this error. To work around this issue, you must install the required compatibility library by executing one of the following OS-specific commands:

      • On Ubuntu 20.04: sudo apt install -y libncurses5 libncurses5-dev libncursesw5-dev

      • On RHEL/CentOS 8: sudo yum install ncurses-compat-libs

      • On SUSE 15: sudo zypper install libcurses5 ncurses5-devel

  5. Known issue -  regarding namespace "oneapi" conflicting with older compilers - error: reference to 'tbb' is ambiguous

    • This issue is only found with the following compilers:

      1. GNU* gcc 7.x or older
      2. LLVM* Clang 3.7 or older
      3. Intel® C++ Compiler 19.0 or older
      4. Visual Studio 2017 version 15.6 or older 
    • If your code uses the namespace in the following manner and one of the compilers above, you may get the compilation errors like "error: reference to 'tbb' is ambiguous".

      The "using namespace oneapi;" directive in a oneDPL|oneDNN|oneTBB program code may result in compilation errors with the compilers listed above.

      test_tbb.cpp:

      namespace tbb { int bar(); }
      namespace oneapi { namespace tbb = ::tbb; }
      
      using namespace oneapi;
      int zoo0() { return tbb::bar(); }

      Compiling: .

      test_tbb.cpp: In function 'int zoo0()':
      test_tbb.cpp:5:21: error: reference to 'tbb' is ambiguous
      int zoo0() { return tbb::bar(); }

      Workarounds: 

      Instead of the directive "using namespace oneapi;", please use full qualified names or namespace aliases.

      test_tbb_workaround.cpp: 

      namespace tbb { int bar(); }
      namespace oneapi { namespace tbb = ::tbb; }
      
      // using namespace oneapi;
      int zoo0() { return tbb::bar(); }

      Additional Notes: 

      The "using namespace oneapi;" directive is not recommended right now, as it may result in compilation errors when oneMKL| oneDAL| oneCCL is used with other oneAPI libraries. There're two workarounds:

      • Use the full qualified namespace like above
      • Use namespace alias for oneMKL| oneDAL| oneCCL, e.g.
        • namespace one[mkl|dal|ccl] = ::oneapi::[mkl|dal|ccl];
          onemkl::blas::dgemm( … ); | onedal::train(); | onccl::allgathersv();

           

    •  

  6. Known issue - the installation error on Windows "LoadLibrary failed with error 126: the specified module could not be found" in certain environment only

    • Impacted environment: Windows with AMD graphics card

    • Details: 

      When a Windows system has AMD* graphics cards or AMD Radeon Vega* graphics units, the installer of oneAPI Toolkits may report the error "LoadLibrary failed with error 126: the specified module could not be found". This has been reported and is being investigated. Please use the workaround for this release.
    • Workaround:

      Temporarily  disable the Intel® HD Graphics during the installation of oneAPI Toolkits with the steps below:

      Open the Device Manager > Display Adapters; Right click on the listed display (common is the intel integrated graphics accelerator) and select DISABLE.

  7. Known issue - "Debug Error!" from Microsoft Visual C++ Runtime Library
    • Impacted environment: Windows, "Debug" build only, mixed use of DPC++ & oneAPI libraries (except oneTBB)
    • Details: This error may occur only when the DPC++ program is built in "Debug" configuration and it uses one of the oneAPI libraries that do not have a dynamic debug libraries, e.g. oneVPL; The oneTBB is not impacted by this issue.
    • The error is similar to the following:

      Unable to start program

    • Workaround:
      • Use "Release" configuration to build the program for now.
  8. More limitations on Windows 
    • For users who have Visual Studio* 2017 or 2019 installed, the installation of IDE integrations of oneAPI Base Toolkit is very slow. It may take 30+minutes just for the IDE integrations installation sometimes. Please be extra patient and it will be eventualy installed. 
    • If you encounter a runtime error that "... ... sycl.dll was not found. ... ..." or similar like below

      Unable to start program

      when running your program within Visual Studio, please follow the instructions below to update the project property "Debugging > Environment" in order to run the program:
      • Open the project property "Debugging > Environment" property and click right drop-down & select Edit

        Unable to start program

      • Copy and paste the default PATH environment variable value from lower section to the above section.
        This step is very important because of how Visual Studio 2017 or newer handles the additional directory for the "PATH" environment variable.

        Unable to start program

      • Add any additional directories needed by the program for those dll files to the path like below

        Unable to start program

    • Error when running a code sample program within Visual Studio: unable to start program 'xxx.exe"

      Unable to start program


      Please follow the instructions below for the workaround.
      • Open Tools Options dialog, select Debugging tab, and select the check-box of "Automatically close the console when debugging stops". See the dialog image below for details.

        Unable to start program

Release Notes for All Tools included in Intel® oneAPI Base Toolkit

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.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.