v22.04.00
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
🐛 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
-
Randomization of transforms per image per batch (#231) @shekhardw
-
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 exposestypestr
property.DLDataType
andDLDataTypeCode
type is available undercucim.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