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 withLEGATE_CONFIG=--help
. To ease adoption, the old numeric logging values continue to be supported.Add support for
FORCE_COLOR
andNO_COLOR
environment variables. In keeping with https://force-color.org/ and https://no-color.org/ if both are defined, thenFORCE_COLOR
takes precedence.Move
legate-bind.sh
toshare/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 thelegate
launcher.Stop passing default options to Nsight Systems when using the
--nsys
flag of thelegate
launcher. Any non-default arguments are fully in the control of the user, through--nsys-extra
.Add a launching mode
--launcher dask
to thelegate
driver, 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.LEGATE_NEED_*
environment variables are no longer consulted to infer what build-time features (e.g. CUDA support or networking support) are required for the current run. Legate can infer this automatically.
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
andlegate::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
andlegate::VariantOptions::with_may_throw_exception()
to indicate that a variant may throw a C++ exception.Add
legate::VariantOptions::communicators
andlegate::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::reductions
to 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_range
andlegate::Runtime::stop_profiling_range
to 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::TaskInfo
instead of aconst legate::TaskInfo *
.
Utilities
Allow constructing a
legate::Span
directly from container-like objects.Allow constructing a
legate::Span
directly from astd::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.Add ability for Python tasks to request that the
legate.core.TaskContext
be 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