DARMA-tasking / LB-analysis-framework

Analysis framework for exploring, testing, and comparing load balancing strategies
Other
3 stars 1 forks source link

Ensure that shared block ID QOI is name consistently (in generator and vt-tv and elsewhere) #525

Closed ppebay closed 1 month ago

ppebay commented 1 month ago

This is a follow on to #506.

LBAF expects to see shared_block_id as the object QOI providing the identifiers of the shared memory blocks (used in particular for object clustering when shared block memory must remain bounded from above on each rank). However it appears that several use cases created by the generator contain the shared_id label instead.

This should be verified and possibly modified to ensure consistency

cwschilly commented 3 weeks ago

Standardizing this across all DARMA-tasking repos may be more complicated since vt seems to expect shared_id. For example, here's a snippet from temperedlb.cc:

        SharedIDType shared_id = vt::no_shared_id;
        vt::NodeType home_rank = vt::uninitialized_destination;
        BytesType shared_bytes = 0;
        BytesType working_bytes = 0;
        BytesType footprint_bytes = 0;
        BytesType serialized_bytes = 0;
        for (auto const& [key, variant] : data_map) {
          auto val = std::get_if<double>(&variant);
          vtAbortIf(!val, '"' + key + "\" in variant does not match double");

          if (key == "shared_id") {
            // Because of how JSON is stored this is always a double, even
            // though it should be an integer
            shared_id = static_cast<int>(*val);
          }
          if (key == "home_rank") {
            // Because of how JSON is stored this is always a double, even
            // though it should be an integer
            home_rank = static_cast<int>(*val);
          }
          if (key == "shared_bytes") {
            shared_bytes = *val;
          }
          if (key == "task_working_bytes") {
            working_bytes = *val;
          }
          if (key == "task_footprint_bytes") {
            footprint_bytes = *val;
          }
          if (key == "task_serialized_bytes") {
            serialized_bytes = *val;
          }
          if (key == "rank_working_bytes") {
            rank_bytes_ = *val;
          }
        }