Changes: 25.03#

General

  • Add an environment variable LEGATE_MAX_EXCEPTION_SIZE that determines the maximum number of bytes for an exception that can be raised by a task.

  • Improve specification of logging levels. These may now be specified in a more human-readable manner. Instead of --logging some_logger=2, the user may now pass --logging some_logger=info. To see supported values for this feature, see the --help output of the legate driver, or by running with LEGATE_CONFIG=--help. To ease adoption, the old numeric logging values continue to be supported.

  • Add support for FORCE_COLOR and NO_COLOR environment variables. In keeping with https://force-color.org/ and https://no-color.org/ if both are defined, then FORCE_COLOR takes precedence.

  • Move legate-bind.sh to share/legate/libexec. This is a low-level tool that is usually not invoked by the user directly, and moving it to this new directory reflects this. The user should instead launch their programs directly, or, for greater convenience use the legate launcher.

C++#

General

Data

  • Add legate::PhysicalStore::is_partitioned() that indicates if the store is partitioned.

Mapping

Partitioning

Tasks

  • Remove legate::VariantOptions::return_size.

  • Add legate::TaskInfo. This class has technically always existed, but was undocumented.

  • Add legate::VariantInfo. This class has technically always existed, but was undocumented.

  • Add legate::VariantOptions::has_side_effect and legate::VariantOptions::with_has_side_effect(), to indicate that a variant has external side-effects, and therefore shouldn’t be replicated.

  • Add legate::VariantOptions::may_throw_exception and legate::VariantOptions::with_may_throw_exception() to indicate that a variant may throw a C++ exception.

  • Add legate::VariantOptions::communicators and legate::VariantOptions::with_communicators() to indicate that a variant will use the specified communicator(s).

Types

  • Change legate::struct_type(). It now returns an aligned struct type by default.

Runtime

  • Add legate::Runtime::start_profiling_range and legate::Runtime::stop_profiling_range to create Legion profile ranges.

  • Change legate::Library::register_task(). It now takes a const legate::TaskInfo & instead of a std::unique_ptr<legate::TaskInfo>

  • Change legate::Library::find_task(). It now returns a legate::TaskInfo instead of a const legate::TaskInfo *.

Utilities

  • Allow constructing a legate::Span directly from container-like objects.

  • Allow constructing a legate::Span directly from a std::initializer_list.

  • Add legate::Span::data().

I/O

Python#

General

Data

Mapping

Partitioning

Tasks

  • Add legate.core.ProfileRange context manager to activate the API for generating sub-boxes on the profiler.

Types

  • Change legate.core.struct_type(). It now returns an aligned struct type by default.

Runtime

Utilities

I/O