Skip to content

Version 24.03.0 (March 27, 2024) – Control Replication

Compare
Choose a tag to compare
@elliottslaughter elliottslaughter released this 27 Mar 16:14
· 1434 commits to stable since this release

Legion is an implicitly parallel, distributed runtime system for heterogeneous supercomputers.

The most notable feature in this release is control replication, a feature that we have been working on for many years that makes Legion dramatically more scalable in typical usage scenarios. In fact, the vast majority of users have already been using control replication, meaning that this is the first stable release of Legion which is usable (in a practical manner) for the vast majority of our users.

If you are not familiar with control replication, there is a wiki page that describes it, and of course the original paper.

As of this release, that means that the old control_replication branch is no longer being updated, and will be deleted at some point in the future. All updates from now on will go into the master branch, and it is our intention to avoid any long-standing feature branches in the future.

This release also finally removes some old Legion features that have been deprecated for nearly 10 years at this point. If you were somehow using those features, you will need to update to their replacements.

In addition, with this release, we are now packaging Legion Prof via crates.io. That means you can now install Legion Prof with:

cargo install --all-features --locked legion_prof@0.2403.0

(Note the version format is 0.YYMM.0. This is required because Rust uses semver while Legion uses calver.)

Full release notes:

  • Build
    • ROCm 6.0 is now supported, and support for ROCm 4.x has been removed
  • Legion
    • Support for control replication has been merged
    • Support for discarding region contents on task completion
    • Long-deprecated APIs, such as the old HighLevel namespace, have been removed
  • Mappers
    • Default mapper support for control replication
    • Default and null mapper now use C++ override keyword
  • Regent
    • Support for pure projection functors that capture arguments
    • Static control replication (SCR) has been deprecated and will be removed in a future release
  • Tools
    • The profiler now correctly recognizes the logger format version and throws an error if it does not match
    • The profiler now reports when a profile was generated with debug mode (or another expensive setting) was enabled
    • Many profiler fixes for correctly rendering runtime and mapper calls
    • Profiler now renders GPU device and host execution separately
    • Optimizations to improve profiler memory usage and running time
    • Rust profiler now requires at least Rust 1.74
  • Realm
    • Support for registration of dynamically allocated buffers
    • Support for handling poisoned events for reservation
    • Refactor CUDA allocation and IPC paths
    • Support for querying CUDA device information (GPU UUID and ID),process information (process ID, hostname, host ID) and timer calibration error from the profiler
    • Remove address alignment from serializer and deserializer
    • Support for creating network shared peers using IPC mailbox
    • Support OMP thread binding and allow for multiple OMP parallel sections when enabling system OMP runtime
    • Add Realm unit tests
    • Fixes for Realm tests, sparsity map, MemoryQuery, dynamic framebuffer memory and memcpy channel