github halide/Halide v19.0.0

16 hours ago

Major improvements

  • Halide is now available for both C++ and Python usage via Pip. Try pip install halide today!
  • The Vulkan backend has matured substantially.
  • The HTML "conceptual statement" output now supports dark mode viewing.
  • For developers, CMake 3.28 is now required and we no longer require an internet connection during the build.
  • Thread pool improvements mean that workloads that do a small number of small tasks in parallel (e.g. a cheap operation applied to a small image) are up to 3x faster. If you have schedules that do not use parallelism for small inputs because you found it didn't provide any speedup, you may want to re-benchmark.
  • You can now query properties of the compiled-for target as Exprs, simplifying helper code that wants to do different things depending on the target architecture. Example: f(x) = select(target_arch_is(Target::ARM), 3, 7). Helpers include target_arch_is, target_os_is, target_has_feature, target_bits, and target_natural_vector_size. These are resolved to constants at compile-time and simplified away. Use with care, as this (intentionally) results in different behavior on different platforms.

Breaking changes

  • We now distribute libGenGen.a rather than GenGen.cpp.
    • Downstream users should link to this library with /WHOLEARCHIVE: or -Wl,--whole-archive rather than build GenGen.cpp themselves.
    • Users of the CMake package should be unaffected.
  • In keeping with our LLVM support policy, support for LLVM 16 has been removed.
  • We no longer use the le64/le32 generic targets for compiling runtime modules to LLVM. These targets were removed in LLVM upstream.

What's Changed

Apps and tests

Autoschedulers

  • Consider all Exprs a func uses, not just the RHS, in Li2018 by @abadams in #8326

Build system

CodeGen

Debugging

Documentation

Frontend

Hardware backends

LLVM

Python

Runtime

  • Fix profiler to report time spent on GPU kernels again instead of on 'wait for parallel tasks'. by @mcourteaux in #8453
  • Don't spin on the main mutex while waiting for new work by @abadams in #8433

Minor bugfixes / other cleanup

New Contributors

Full Changelog: v18.0.0...v19.0.0

Don't miss a new Halide release

NewReleases is sending notifications on new releases.