Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable Fluxion resource graph elasticity #989

Merged
merged 25 commits into from
Aug 22, 2023

Commits on Aug 20, 2023

  1. planner: refactor planner to class

    Problem: resizing the Boost resource graph calls
    sched_data and infra_data ctors and dtors which
    calls for planner to be changed from a struct
    to a class.
    
    Refactor the data structure into a class
    with constructors, a destructor, and
    assignment overload. Refactor direct
    struct member access to public class setters
    and getters, and public member functions.
    Add private utility member functions and
    data members. Maintain C client compatibility
    by wrapping planner in a struct.
    
    Add .hpp file to maintain C API compatibility while
    enabling C++ features. Add a c_interface.cpp
    to provide the external C functionality.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    9db8120 View commit details
    Browse the repository at this point in the history
  2. planner: update planner interface

    Problem: the current interface structure
    facilitates C clients, but does not present
    a separate C++ interface.
    
    Separate the C and C++ interface to
    enable different clients and facilitate
    future planner extension.
    
    Update the Fluxion build paths as well.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    54456e2 View commit details
    Browse the repository at this point in the history
  3. planner: refactor planner_multi to class

    Problem: resizing the Boost resource graph calls
    sched_data and infra_data ctors and dtors which
    calls for planner_multi to be changed from a struct
    to a class.
    
    Refactor the data structure into a class
    with constructors, a destructor, and
    assignment overload. Refactor direct
    struct member access to public class setters
    and getters, and public member functions.
    Add private data members.
    Maintain C client compatibility
    by wrapping planner_multi in a struct.
    
    Add .hpp file to maintain C API compatibility
    while enabling C++ features. Add a C
    interface for separation of C and C++
    clients and future extensibility.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    c0bd09c View commit details
    Browse the repository at this point in the history
  4. planner: update planner_multi interface

    Problem: the current interface structure
    facilitates C clients, but does not present
    a separate C++ interface.
    
    Separate the C and C++ interface to
    enable different clients and facilitate
    future planner_multi extension.
    
    Update the Fluxion build paths as well.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    74951c1 View commit details
    Browse the repository at this point in the history
  5. planner: mt tree rb_node_base_t should be class

    Problem: compilers variously generate warnings or
    errors to indicate that rb_node_base_t is a
    class not a struct.
    
    Correct the typo.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    99ba027 View commit details
    Browse the repository at this point in the history
  6. planner: modify mintime_tree functions

    Problem: restructuring planner as a requires
    some utility member functions to be const.
    
    Update the MT RBTree functions to provide
    const overloads. Add clear function to
    address memory leak from an uncleared
    tree upon planner destruction.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    c948220 View commit details
    Browse the repository at this point in the history
  7. planner: modify sched_point_tree functions

    Problem: restructuring planner as a requires
    some utility member functions to be const.
    While copying or assigning planners,
    accessing elements of an empty tree
    during the first iteration results
    in undefined behavior.
    
    Update the scheduled point RBTree functions
    to provide const overloads. Add empty function
    to allow checking for an empty tree
    before iterating through the nodes
    while copying or assigning planners.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    793a8cb View commit details
    Browse the repository at this point in the history
  8. schema: add sched_data ctor, dtor, assn oload

    Problem: Boost vecS container resizing
    upon resource addition calls the
    destructor and constructor for the
    property maps (pool_infra_t and
    schedule_t) associated with each
    graph vertex.
    
    Provide the constructor, destructor,
    and assignment overload for schedule_t.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    9da5e0f View commit details
    Browse the repository at this point in the history
  9. schema: add infra_data ctor, dtor, and assn oload

    Problem: Boost vecS container resizing
    upon resource addition calls the
    destructor and constructor for the
    property maps (pool_infra_t and
    schedule_t) associated with each
    graph vertex.
    
    Provide the constructor, destructor,
    and assignment overload for pool_infra_t.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    06567d2 View commit details
    Browse the repository at this point in the history
  10. schema: initialize epoch in ephemeral header

    Problem: the epoch value is uninitialized
    in ephemeral_t, which causes comparisons
    to be performed on the uninitialized member
    variable.
    
    Initialize m_epoch to 0.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    31bc90d View commit details
    Browse the repository at this point in the history
  11. modules: fix comparison warning

    Problem: comparing a uint64_t with int64_t
    results in a compile time warning. Since
    in this case the comparison just checks if
    the uint64_t `remapped_id` is greater than
    int64_t max value, static cast first.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    0c9f4cc View commit details
    Browse the repository at this point in the history
  12. resource-query: promote attach to production

    Problem: without ctors, dtors, and
    assignment overloads for planner and
    planner_multi, Boost vecS resizing called
    the schedule_t and pool_infra_t which
    could not deep copy the structs. As
    a result, the resizing caused all
    allocations and reservations to be
    destroyed. A check in resource-query
    ensured resource graph mutation
    could not be performed via `attach`
    on a resource graph with allocations
    or reservations.
    
    Remove this restriction.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    200b0cf View commit details
    Browse the repository at this point in the history
  13. planner: add planner comparison for testsuite

    Problem: testsuite tests will need to compare
    planners via the `==` operator to check if copying,
    destruction, and assignment works as needed.
    
    Add the required member checks and C interface
    functions.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    1d47302 View commit details
    Browse the repository at this point in the history
  14. planner: add planner_multi comparison

    Problem: testsuite tests will need to compare
    planner_multis via the `==` operator to check
    if copying, destruction, and assignment works
    as needed.
    
    Add the required member checks and C interface
    functions.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    a481bb0 View commit details
    Browse the repository at this point in the history
  15. schema: add schedule_t comparison for testsuite

    Problem: testsuite tests will need to compare
    schedule_t via the `==` operator to check if copying,
    destruction, and assignment works as needed.
    
    Add the required checks.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    40edab3 View commit details
    Browse the repository at this point in the history
  16. schema: add pool_infra_t comparison for testsuite

    Problem: testsuite tests will need to compare
    pool_infra_t via the `==` operator to check if copying,
    destruction, and assignment works as needed.
    
    Add the required member checks.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    3e8685c View commit details
    Browse the repository at this point in the history
  17. testsuite: add ctors and overload tests

    Problem: the testsuite needs to test
    if copying, destroying, and assigning
    planners works as desired. Namely,
    calling the copy constructor should
    deep copy planners, and assignment
    should ensure the two planner's states
    are independent but the same initially.
    Mutation of a copy should not affect the
    source object. Destruction should not affect
    the source object.
    
    Add low-level checks for planner behavior.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    06ab800 View commit details
    Browse the repository at this point in the history
  18. testsuite: add ctors, oload tests: planner_multi

    Problem: the testsuite needs to test
    if copying, destroying, and assigning
    planner_multis works as desired. Namely,
    calling the copy constructor should
    deep copy planner_multis, and assignment
    should ensure the two planner_multis' states
    are independent but the same initially.
    Mutation of a copy should not affect the
    source object. Destruction should not affect
    the source object.
    
    Add low-level checks for planner_multis behavior.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    0cc4499 View commit details
    Browse the repository at this point in the history
  19. testsuite: add ctors and oload tests, schedule_t

    Add unit tests to ensure the copy constructor,
    assignment overload, and equality overload
    function as needed.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    10177f7 View commit details
    Browse the repository at this point in the history
  20. testsuite: add ctors, oload tests: pool_infra_t

    Add unit tests to ensure the copy constructor,
    assignment overload, and equality overload
    for pool_infra_t function as needed.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    5e6d99d View commit details
    Browse the repository at this point in the history
  21. resource: update gitignore for schema tests

    Add the schema tests to gitignore to ensure undesired
    files in the directory are not tracked by git.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    63a4316 View commit details
    Browse the repository at this point in the history
  22. testsuite: update tests for planner correctness

    Add tests for attaching a new subgraph to an
    instantiated resource graph and ensure the
    allocations and reservations are not affected.
    Test that the match policy selects appropriate
    resources from the newly added subgraph.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    b5c3f5d View commit details
    Browse the repository at this point in the history
  23. testsuite: fix spelling in schema test functions

    Problem: schema_test01 and schema_test02 have
    misspellings of "constructors" and "assignment."
    Fix the spelling.
    milroy committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    fb51b19 View commit details
    Browse the repository at this point in the history

Commits on Aug 21, 2023

  1. resource: Add suppression directives for Boost and Ygg

    Problem: with GCC, Yggdrasil and Boost libraries generate
    compilation errors related to missing template keywords
    and maybe uninitialized values, respectively. Suppression
    flags for GCC are unrecognized by Clang and produce
    compilation errors.
    
    Add conditional diagnostic pragmas to suppress the errors
    for GCC but not Clang.
    milroy committed Aug 21, 2023
    Configuration menu
    Copy the full SHA
    8761d50 View commit details
    Browse the repository at this point in the history

Commits on Aug 22, 2023

  1. update mergify config to match core

    I missed some mergify requirements when transferring this, or maybe
    updated them after.
    trws committed Aug 22, 2023
    Configuration menu
    Copy the full SHA
    3903ac3 View commit details
    Browse the repository at this point in the history