Skip to content

Release (v1.5.0)

Latest

Choose a tag to compare

@wjakob wjakob released this 07 Aug 07:19
  • Added dr.median(), which computes the median along one or more axes. (commit 292dac).

  • dr.minimum() and dr.maximum() now consistently propagate NaNs, while the new functions dr.fmin() and dr.fmax() suppress them. This is consistent with other frameworks (e.g., NumPy/PyTorch). The operations coincide for integers. (commit 9e0a01, Dr.Jit-Core commits efdfc1, 807937).

  • dr.count() now works on nested arrays and reduces along user-specified axes. (commit 508f9b).

  • The expression dr.opaque(value) can now be used to make an opaque deep copy of a PyTree argument. (commit 10093d).

  • dr.scatter_reduce() now consistently supports ReduceOp.Min and ReduceOp.Max reductions of floating point arrays. The Metal and CUDA backend emulate them using integer min/max atomics. The LLVM backend uses a CAS loop with a non-atomic load that potentially skips the loop if it would not change the result. (commit 4d5103, Dr.Jit-Core commit 241a64).

  • The on-disk kernel cache in ~/.drjit previously grew without bound. Dr.Jit now evicts least recently used entries. The cache directory, its size limit, and its verbosity can be configured through environment variables. Cache files also shrank to roughly a quarter of their former size. See the cache configuration documentation for details. (Dr.Jit-Core commit 10436e).

  • dr.copysign() now maps onto a dedicated backend IR node on the CUDA, LLVM, and Metal backends. (commit 5ac8a8, Dr.Jit-Core commit 14d599).

  • dr.clip() is now defined as minimum(maximum(value, min), max) instead of maximum(minimum(value, max), min) for consistency with NumPy/PyTorch. This is only relevant when the interval is inverted (min > max). Following the change above, the operation now also propagates NaNs. (commit 83a0b1).

  • dr.stack(), dr.vstack(), dr.hstack(), dr.column_stack(), and dr.dstack() now promote non-tensor types to tensors. (commit 3735e1).

  • Constructing a nested array from a 1D dynamic Dr.Jit array (e.g., Array3f(Float(1, 2, 3))) now consistently broadcasts (commit b804db).

  • A packet scatter that decomposes into individual scatters no longer serializes into separate kernels. (commit b128b6).

  • dr.unravel() now casts its input to the flat type implied by dtype instead of rejecting a mismatch, which makes expressions like Array3f64(TensorXf(...)) legal. (commit b7db80).

  • Fixed several bugs and changed defaults in dr.convolve() and dr.resample():

    • Convolutions with custom continuous filters did not correctly evaluate the filter at all integer offsets within [-filter_radius, filter_radius]. Filter presets like box or gaussian were not affected. (commit 232932).

    • A rounding issue could lead to incorrect output for the "nearest", "wrap", "reflect", and "mirror" boundaries. The default "zero" boundary condition was unaffected. (commit 232932).

    • dr.convolve() no longer normalizes the filter weights by default. With the default arguments, it is now equivalent to numpy.convolve(..., mode='same'). Specify normalize=True to restore the previous behavior. (commit 715c2d).

    • Periodic boundary conditions ("wrap", "reflect", and "mirror") extended the array by a single period. Larger filters could trigger undefined behavior by reading beyond the end of the array. The extension now repeats as often as needed. (commit 6b5f56).

    • Other minor fixes. (commits dbb052, 1f342a).

  • Fixed the behavior of dr.dot() and __rsub__ on cooperative vectors. (PRs #521, #529, contributed by Lovro Nuic).

  • Fixed dr.cumsum() over a tuple of axes, which previously only applied a single axis. (PR #522, contributed by Lovro Nuic).

  • Slicing the outer dimension of a nested array (e.g. value[3:]) produced a result with the wrong size. (PR #523, contributed by Delio Vicini).

  • Fixed a miscompilation in symbolic if statements with partially evaluated state. (commit 9a7db9).

  • Fixed a race condition in dr.sync_thread(). (Dr.Jit-Core commit c5a8a9).

  • Miscellaneous Jit-Core fixes. (Dr.Jit-Core commits b1b839, 26d4a1, 546967, ac46d8, 8eeccd).

  • Miscellaneous minor fixes in Dr.Jit. (commits abfa1c, b547d8, 564a37, 479252, c478bb, 02e2b4).