Changes: 25.08#

General

C++#

General

  • Add experimental support for “streaming”, a new execution model that tracks task dependencies at a more granular level, allowing individual leaf task dependencies to be immediately executed before waiting for the preceding task to be scheduled.

    Tasks may be marked as streaming by enclosing them in a legate::Scope:

    {
      const auto scope = legate::Scope{legate::ParallelPolicy{}.with_streaming(true)};
    
      launch_task_A();
      launch_task_B();
      launch_task_C();
    }
    

    This feature is experimental and does not yet support all use-cases. Invalid use may lead to exceptions, hangs, or outright crashes. Users are invited to try out this feature while development continues.

Data

  • Add PhysicalStore::span_read_accessor(), PhysicalStore::span_write_accessor(), PhysicalStore::span_read_write_accessor(), and PhysicalStore::span_reduce_accessor() which return cuda::std::mdspan’s as alternatives to the usual accessor interfaces.

  • Add legate::PhysicalStore::to_dlpack() to export the store in DLPack format.

Mapping

  • Remove legate::mapping::InstLayout. Support for AOS never really worked, only SOA. Since this causes the entire enum to have just a single value, it is removed. All stores will have SOA layout.

  • Remove legate::mapping::InstanceMappingPolicy::layout as a result of removing InstLayout.

  • Remove legate::mapping::InstanceMappingPolicy::with_instance_layout() as a result of removing InstLayout.

  • Remove legate::mapping::InstanceMappingPolicy::set_instance_layout() as a result of removing InstLayout.

Partitioning

Tasks

Tuning

Types

Runtime

Utilities

  • Add legate::flatten() helper function, to allow users to construct a flat view over a cuda::std::mdspan.

  • Add legate::for_each_in_extent() helper function to allow users to efficiently iterate over an N-dimensional extent space.

  • Add legate::Span(const legate::tuple<T>&) to construct a legate::Span from a legate::tuple.

  • Add legate::Span::empty() to check whether a span’s size is 0.

  • Add legate::Span::at(), to access an element with bounds checking.

  • Add legate::Span::deep_equal() to do a “deep”, pointwise equality comparison.

  • Remove legate::print_dense_array(). This header used CUDA runtime symbols which Legate no longer directly links against, and therefore could not reliably provide. Downstream users should either use the span accessors of physical stores (which support easy dimension-aware iteration for printing), or implement this utility themselves.

  • Remove the legate/utilities/debug.h header.

I/O

Python#

General

  • Add legate.core.from_dlpack() to enable importing DLPack compatible tensors as legate.core.LogicalStore.

Data

  • Add legate.core.PhysicalStore.__dlpack__() and legate.core.PhysicalStore.__dlpack_device__() to support exporting physical stores as DLPack capsules.

Mapping

Partitioning

Tasks

Tuning

Types

Runtime

Utilities

I/O