Skip to content

release_notes_v22.02.01

Gigon Bae edited this page Mar 25, 2022 · 7 revisions

Version 22.02.01 (Mar 25, 2022)

This version would be only available through the PyPI package (https://pypi.org/project/cucim/22.2.1/).

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.

🐛 Bug Fixes

  • Check nullptr of handler in CuFileDriver::close() (#229) @gigony
  • Handle file descriptor ownership and update documents for GDS (#234) @gigony
  • Apply fixes to skimage.transform scheduled for scikit-image 0.19.2 (#208) @grlee7

🚀 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
    • Address #109 ([BUG] - Info messages appearing as warnings in Jupyter notebooks)
    • Will support log level configuration later

📖 Documentation