DALI Release 0.16.0 Beta

The DALI 0.16.0 is a beta release, therefore, all features, functionality, and performance will likely be limited.

Using DALI 0.16.0 Beta

To upgrade to DALI 0.16.0 beta from an older version of DALI, follow the installation instructions in the DALI Quick Start Guide.

Refer to the DALI Developer Guide for usage details.

Note: The internal DALI C++ API used for operators implementation, and the C++ API that enables using DALI as a library from native code, are not yet officially supported. Hence these APIs may change in the next release without advance notice.

Key Features and Enhancements

This DALI release includes the following key features and enhancements.

  • SupportOps are removed and CPU operators can now be used in their place (#1423)
    • Allows for more generic shapes to be provided as argument inputs

    • Allows to return the data previously generated by support Op (like ops.Uniform) from pipeline

    • Internally Argument Inputs accept TensorVector instead of Tensor.

  • Extended support for TensorFlow dataset API:
    • GPU (#1354) and initial multi-GPU (#1382) support

    • TensorFlow 1.15 and 2.0 support for TensorFlow dataset (#1395)

  • New operators:
    • HSV manipulation operator for GPU and CPU (#1338)

    • GPU dltensor operator (#1261)

    • Pad operator (#1180)

  • Initial support for arithmetic operators (#1322, #1355, #1426, #1449):

    • Regular Python arithmetic expressions inside DALI pipeline definition

    • Supported binary operators: +, -, *, /, //

  • Improvements to current operators:
    • Support float16 in Cast GPU operator (#1368)

    • Rotate operator using a new Warp kernel (#1403)

    • Optimized implementation for WarpAffine (#1387)

    • Added additional_decode_surfaces parameter to videoreader (#1393)

  • New and updated examples:
    • BrightnessContrast operator example (#1414)

    • New warp example (#1158)

  • Build system improvements for architectures other than x86

  • Operators moved to separate library (#1380, #1384, #1406)

Fixed Issues

This DALI release includes the following fixes.

  • Fixed DALI TensorFlow plugin CXX11 ABI issue (#1361)

  • Fixed DALI TensorFlow installation for TensorFlow 2.0 (#1386)

Breaking Changes

  • Support operators were removed and their usage replaced with CPU operators. Old support operators were converted to CPU operators.

  • DALI operators were moved into a separate library to detach them from the pipeline. It is linked into the target DALI library.

Deprecated Features

  • Removed the following deprecated operators:
    • HostDecoder and nvJPEGDecoder (generic ImageDecoder should be used instead) (#1398)

    • NormalizePermute (CropMirrorNormalize should be used instead) (#1402)

    • DALI 0.17 is the last official release for Python 2.7, which reaches the end of life on January 1st, 2020. To stay up to date with DALI, upgrade to Python 3.5 or later.

    • Crop, CropMirrorNormalize and Slice operator possible output types are limited to one of uint8_t, int16_t, uint16_t, int32_t, float, float16 or passing through the input type (#1418).

Known Issues

  • The video loader operator requires that the key frames occur at a minimum every 10 to 15 frames of the video stream. If the key frames occur at a lesser frequency, then the returned frames may be out of sync.

  • DALI TensorFlow plugin may not be compatible with TensorFlow versions 1.15.0 and/or later. If the user wants to use DALI with TensorFlow version which doesn’t have prebuilt plugin binary shipped with DALI it requires the gcc compiler that matches the one used to build TensorFlow (gcc 4.8.4 or gcc, 4.8.5 or 5.4, depending on the particular version) is present on the system.

  • Due to some known issues with meltdown/spectra mitigations and DALI, DALI shows best performance when run in Docker with escalated privileges, for example:
    • privileged=yes in Extra Settings for AWS data points
    • --privileged or --security-opt seccomp=unconfined for bare Docker