Changes: 25.03#
General
Add an environment variable
LEGATE_MAX_EXCEPTION_SIZEthat 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--helpoutput of the legate driver, or by running withLEGATE_CONFIG=--help. To ease adoption, the old numeric logging values continue to be supported.Add support for
FORCE_COLORandNO_COLORenvironment variables. In keeping with https://force-color.org/ and https://no-color.org/ if both are defined, thenFORCE_COLORtakes precedence.Move
legate-bind.shtoshare/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 thelegatelauncher.Stop passing default options to Nsight Systems when using the
--nsysflag of thelegatelauncher. Any non-default arguments are fully in the control of the user, through--nsys-extra.Add a launching mode
--launcher daskto thelegatedriver, that bootstraps a Legate execution by setting up a dask cluster and having the workers start the peer processes. This currently only supports single-node multi-rank execution.
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_effectandlegate::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_exceptionandlegate::VariantOptions::with_may_throw_exception()to indicate that a variant may throw a C++ exception.Add
legate::VariantOptions::communicatorsandlegate::VariantOptions::with_communicators()to indicate that a variant will use the specified communicator(s).Add
legate::TaskSignature.Add
legate::proxy::inputs,legate::proxy::outputs,legate::proxy::reductionsto be used in conjunction with the task signatures to describe future arguments to tasks.Extend
legate::align(),legate::broadcast(),legate::image(),legate::scale(), andlegate::bloat()to also take the proxy arguments. The result of these are to be used with the task signature to describe constraints in terms of future task arguments.
Types
Change
legate::struct_type(). It now returns an aligned struct type by default.
Runtime
Add
legate::Runtime::start_profiling_rangeandlegate::Runtime::stop_profiling_rangeto create Legion profile ranges.Change
legate::Library::register_task(). It now takes aconst legate::TaskInfo &instead of astd::unique_ptr<legate::TaskInfo>Change
legate::Library::find_task(). It now returns alegate::TaskInfoinstead of aconst legate::TaskInfo *.
Utilities
Allow constructing a
legate::Spandirectly from container-like objects.Allow constructing a
legate::Spandirectly from astd::initializer_list.Add
legate::Span::data().
I/O
Python#
General
Data
Mapping
Partitioning
Tasks
Add
legate.core.ProfileRangecontext manager to activate the API for generating sub-boxes on the profiler.Add ability for Python tasks to request that the
legate.core.TaskContextbe passed to the task body. Tasks may do so by making the first argument of the task be of typeTaskContext. The runtime will then automatically pass the task context during task execution in addition to all the other usual arguments:from legate.core import TaskContext from legate.core.task import task @task def foo(ctx: TaskContext, ...) -> None: ...
Types
Change
legate.core.struct_type(). It now returns an aligned struct type by default.
Runtime
Utilities
I/O