Skip to content

release_notes_v22.04.00

Gigon Bae edited this page Apr 7, 2022 · 3 revisions

Version 22.04.00 (Apr 06, 2022)

This version would be available through both Conda (https://anaconda.org/rapidsai/cucim) and PyPI package (https://pypi.org/project/cucim/22.04.00/).

cuCIM's GPUDirectStorage (GDS) API was introduced at GTC 2022 Spring "Accelerating Storage IO to GPUs with Magnum IO [S41347]" session on March 24.

cuCIM's GDS API examples are available at https://github.com/NVIDIA/MagnumIO/tree/main/gds/readers/cucim-gds.

In the below sections, ✨ means that the item is a new change in cuCIM's PyPI package, compared with the previous release (v22.02.01).

🚨 Breaking Changes

  • Apply fixes to skimage.transform scheduled for scikit-image 0.19.2 (#208) @grlee77

🐛 Bug Fixes

  • ✨ Fix ImportError from vendored code (#252) @grlee77
  • ✨ Fix wrong dimension in metadata (#248) @gigony
  • Handle file descriptor ownership and update documents for GDS (#234) @gigony
  • Check nullptr of handler in CuFileDriver::close() (#229) @gigony
  • Fix docs builds (#218) @ajschmidt8
  • Apply fixes to skimage.transform scheduled for scikit-image 0.19.2 (#208) @grlee77

🚀 New Features

  1. Randomization of transforms per image per batch (#231) @shekhardw

  2. Expose data type of CuImage object for interoperability with NumPy (#246) @gigony

1. Randomization of transforms per image per batch

Random Color Jitter transform implemented. Random Image Flip, Random Image Rotate90 and Random Zoom transforms are updated to apply transforms per image per batch. Execution of these transforms on per image per batch basis may result in increase in runtime.

2. Expose data type of CuImage object for interoperability with NumPy

  • CuImage object exposes typestr property.
  • DLDataType and DLDataTypeCode type is available under cucim.clara.

Prior to this change, it was not easy to convert CuImage's dtype (DLDataType) to NumPy's dtype and had to use the below workaround.

>>> from cucim import CuImage
>>> a = CuImage("notebooks/input/image.tif")
>>> b = a.read_region((0,0), (10,10))
>>> import numpy as np
>>> np.dtype(b.__array_interface__["typestr"]) # b would expose `__cuda_array_interface__` if memory is in GPU.
dtype('uint8')

With this change, we can convert the data type of CuImage to NumPy's dtype easily, and also can access cuCIM's DLDataType.

>>> from cucim import CuImage
>>> a = CuImage("notebooks/input/image.tif")
>>> b = a.read_region((0,0), (10,10))
>>> import numpy as np
>>> b.typestr
'|u1'
>>> np.dtype(b.typestr) == np.uint8
True
>>> from cucim.clara import DLDataType, DLDataTypeCode
>>> b.dtype == DLDataType(DLDataTypeCode.DLUInt, 8, 1)
True

🛠️ Improvements

  • Remove verbose plugin messages temporarily (only available in the PyPI package)
    • Address #109 ([BUG] - Info messages appearing as warnings in Jupyter notebooks)
    • Will support log level configuration later with the official PR.
  • Temporarily disable new ops-bot functionality (#239) @ajschmidt8
  • Add .github/ops-bot.yaml config file (#236) @ajschmidt8

📖 Documentation