Skip to content

Releases: simgrid/DTLMod

v0.4

16 Feb 15:20

Choose a tag to compare

Major improvements:

  • Data Reduction framework
    • New abstract ReductionMethod interface for extensible data reduction strategies
    • Decimation method: spatial subsampling with per-dimension stride, optional interpolation (linear, quadratic, cubic), configurable computational cost, and support for both publisher-side and subscriber-side application
    • Compression method: size reduction with preserved shape, supporting three compressor profiles (fixed ratio, SZ-inspired, and ZFP-inspired models), separate compression and decompression costs, and per-transaction ratio variability
    • Publisher-side reduction state is propagated to subscribers through inquire_variable, enabling detection and prevention of conflicting double reductions
  • Reduction operations work with both File and Staging engines
  • New documentation pages for the reduction feature
  • Improved test coverage

API Changes:

  • New Stream method:
    • Stream::define_reduction_method(name) creates a named reduction method ("decimation" or "compression") for the stream
  • New Variable methods and properties:
    • Variable::set_reduction_operation(method, parameters) applies a reduction with key-value parameters to a variable
    • Variable::is_reduced(), is_reduced_by_publisher(), is_reduced_by_subscriber() query the reduction state
    • Variable::get_reduction_method() retrieves the applied ReductionMethod
  • New ReductionMethod class with query methods:
    • get_reduced_variable_global_size(), get_reduced_variable_local_size()
    • get_reduced_variable_shape()
    • get_flop_amount_to_reduce_variable(), get_flop_amount_to_decompress_variable()
  • Full Python bindings for all reduction operations
  • Engine::put() now automatically simulates reduction cost and transports the reduced data size when the variable is reduced
  • Engine::get() now automatically simulates decompression cost after receiving compressed data

v0.3

19 Jan 16:27

Choose a tag to compare

Major improvements:

  • Enhanced code quality with comprehensive refactoring
    • Improved modern C++17 usage throughout the codebase
    • Reduced code complexity and technical debt
  • Memory safety and robustness improvements
    • Fixed critical memory safety issue in DTL connection management
    • Fixed race condition in Engine creation
    • Plugged memory leaks
  • Major refactoring with improved memory management, encapsulation, and move-only semantics
  • Improved CI/CD infrastructure
    • Added Valgrind and sanitizer checks (AddressSanitizer, UndefinedBehaviorSanitizer)
    • Enhanced test coverage and validation
  • Comprehensive proofread of the documentation

API Changes:

  • DTL::get_stream_by_name_or_null() renamed to DTL::get_stream_by_name()
    Returns std::optional<std::shared_ptr> instead of raw pointer
    Python: dtl.get_stream_by_name() now returns None if stream not found
  • Metadata management transferred from Engine to Stream
    Stream::get_metadata_file_name() replaces Engine::get_metadata_file_name()
    Python: stream.metadata_file_name replaces engine.metadata_file_name
  • Stream method chaining improvements
    set_engine_type() and set_transport_method() now return Stream& instead of Stream*
    Enables cleaner fluent interface: stream.set_engine_type(...).set_transport_method(...)
  • DTL::create() now accepts std::string_view and has empty default parameter
  • String parameters changed to std::string_view for better performance:
    • DTL::add_stream(), DTL::get_stream_by_name()
    • Stream and Variable constructors and methods
  • get_engine_type_str() and get_transport_method_str() now return std::optional<const char*>

v0.2

11 Nov 21:44

Choose a tag to compare

  • New comprehensive documentation
  • Full python bindings
  • Improved code coverage
  • Reduced technical debt
  • Fixed deadlocks in File engine
  • Update to SimGrid 4.1 and FSMod 0.4
  • API:
    • Make metadata export configurable at stream level.
    • Have a simpler version of Engine::put() that automatically uses the local size of the Variable.

v0.1

04 Jul 21:39

Choose a tag to compare

This is the first release of the SimGrid Data Transport Layer Module (DTLMod), which provides a versatile simulated data transport layer for use in any SimGrid-based simulator.