node_coordinator Module Subroutine

module subroutine node_coordinator(ctx)

Uses

  • proc~~node_coordinator~~UsesGraph proc~node_coordinator node_coordinator module~mqc_many_body_expansion mqc_many_body_expansion proc~node_coordinator->module~mqc_many_body_expansion module~mqc_config_adapter mqc_config_adapter module~mqc_many_body_expansion->module~mqc_config_adapter module~mqc_json_output_types mqc_json_output_types module~mqc_many_body_expansion->module~mqc_json_output_types module~mqc_method_config mqc_method_config module~mqc_many_body_expansion->module~mqc_method_config module~mqc_physical_fragment mqc_physical_fragment module~mqc_many_body_expansion->module~mqc_physical_fragment module~mqc_resources mqc_resources module~mqc_many_body_expansion->module~mqc_resources pic_types pic_types module~mqc_many_body_expansion->pic_types module~mqc_config_adapter->module~mqc_method_config module~mqc_config_adapter->module~mqc_physical_fragment module~mqc_config_adapter->pic_types module~mqc_calculation_keywords mqc_calculation_keywords module~mqc_config_adapter->module~mqc_calculation_keywords module~mqc_config_parser mqc_config_parser module~mqc_config_adapter->module~mqc_config_parser module~mqc_elements mqc_elements module~mqc_config_adapter->module~mqc_elements module~mqc_error mqc_error module~mqc_config_adapter->module~mqc_error pic_logger pic_logger module~mqc_config_adapter->pic_logger module~mqc_json_output_types->pic_types module~mqc_thermochemistry mqc_thermochemistry module~mqc_json_output_types->module~mqc_thermochemistry module~mqc_method_config->pic_types module~mqc_method_types mqc_method_types module~mqc_method_config->module~mqc_method_types module~mqc_physical_fragment->pic_types module~mqc_cgto mqc_cgto module~mqc_physical_fragment->module~mqc_cgto module~mqc_physical_fragment->module~mqc_elements module~mqc_physical_fragment->module~mqc_error module~mqc_geometry mqc_geometry module~mqc_physical_fragment->module~mqc_geometry module~mqc_physical_constants mqc_physical_constants module~mqc_physical_fragment->module~mqc_physical_constants module~mqc_xyz_reader mqc_xyz_reader module~mqc_physical_fragment->module~mqc_xyz_reader module~mqc_mpi_comms mqc_mpi_comms module~mqc_resources->module~mqc_mpi_comms module~mqc_calculation_keywords->pic_types module~mqc_calculation_defaults mqc_calculation_defaults module~mqc_calculation_keywords->module~mqc_calculation_defaults module~mqc_cgto->pic_types module~mqc_config_parser->module~mqc_physical_fragment module~mqc_config_parser->pic_types module~mqc_config_parser->module~mqc_error module~mqc_config_parser->module~mqc_geometry module~mqc_config_parser->module~mqc_method_types module~mqc_calc_types mqc_calc_types module~mqc_config_parser->module~mqc_calc_types module~mqc_config_parser->module~mqc_calculation_defaults module~mqc_elements->pic_types pic_ascii pic_ascii module~mqc_elements->pic_ascii module~mqc_geometry->pic_types module~mqc_method_types->pic_types pic_mpi_lib pic_mpi_lib module~mqc_mpi_comms->pic_mpi_lib module~mqc_physical_constants->pic_types module~mqc_thermochemistry->pic_types module~mqc_thermochemistry->module~mqc_elements module~mqc_thermochemistry->module~mqc_physical_constants module~mqc_thermochemistry->pic_logger pic_io pic_io module~mqc_thermochemistry->pic_io pic_lapack_interfaces pic_lapack_interfaces module~mqc_thermochemistry->pic_lapack_interfaces module~mqc_xyz_reader->pic_types module~mqc_xyz_reader->module~mqc_error module~mqc_xyz_reader->module~mqc_geometry module~mqc_calc_types->pic_types module~mqc_calculation_defaults->pic_types

Node coordinator for distributing fragments to local workers Handles work requests and result collection from local workers

Arguments

Type IntentOptional Attributes Name
class(*), intent(in) :: ctx

Calls

proc~~node_coordinator~~CallsGraph proc~node_coordinator node_coordinator abort_comm abort_comm proc~node_coordinator->abort_comm comm_world comm_world proc~node_coordinator->comm_world error error proc~node_coordinator->error proc~node_coordinator_impl node_coordinator_impl proc~node_coordinator->proc~node_coordinator_impl proc~node_coordinator_impl->abort_comm proc~node_coordinator_impl->error iprobe iprobe proc~node_coordinator_impl->iprobe irecv irecv proc~node_coordinator_impl->irecv isend isend proc~node_coordinator_impl->isend proc~error_get_message error_t%error_get_message proc~node_coordinator_impl->proc~error_get_message proc~get_group_leader_rank get_group_leader_rank proc~node_coordinator_impl->proc~get_group_leader_rank proc~group_global_coordinator_impl group_global_coordinator_impl proc~node_coordinator_impl->proc~group_global_coordinator_impl proc~result_irecv result_irecv proc~node_coordinator_impl->proc~result_irecv proc~result_isend result_isend proc~node_coordinator_impl->proc~result_isend recv recv proc~node_coordinator_impl->recv to_char to_char proc~node_coordinator_impl->to_char proc~group_global_coordinator_impl->abort_comm proc~group_global_coordinator_impl->error proc~group_global_coordinator_impl->isend proc~group_global_coordinator_impl->proc~get_group_leader_rank proc~flush_group_results flush_group_results proc~group_global_coordinator_impl->proc~flush_group_results proc~handle_group_node_requests handle_group_node_requests proc~group_global_coordinator_impl->proc~handle_group_node_requests proc~handle_local_worker_requests_group handle_local_worker_requests_group proc~group_global_coordinator_impl->proc~handle_local_worker_requests_group proc~handle_local_worker_results_to_batch handle_local_worker_results_to_batch proc~group_global_coordinator_impl->proc~handle_local_worker_results_to_batch proc~handle_node_results_to_batch handle_node_results_to_batch proc~group_global_coordinator_impl->proc~handle_node_results_to_batch proc~queue_destroy queue_destroy proc~group_global_coordinator_impl->proc~queue_destroy proc~queue_init_from_list queue_init_from_list proc~group_global_coordinator_impl->proc~queue_init_from_list proc~queue_is_empty queue_is_empty proc~group_global_coordinator_impl->proc~queue_is_empty proc~receive_group_assignment_matrix receive_group_assignment_matrix proc~group_global_coordinator_impl->proc~receive_group_assignment_matrix proc~result_irecv->irecv proc~result_irecv->recv proc~result_isend->isend send send proc~result_isend->send proc~flush_group_results->isend proc~flush_group_results->proc~result_isend proc~result_destroy calculation_result_t%result_destroy proc~flush_group_results->proc~result_destroy proc~handle_group_node_requests->iprobe proc~handle_group_node_requests->irecv proc~handle_group_node_requests->isend proc~queue_pop queue_pop proc~handle_group_node_requests->proc~queue_pop proc~send_fragment_payload_from_row send_fragment_payload_from_row proc~handle_group_node_requests->proc~send_fragment_payload_from_row proc~handle_local_worker_requests_group->iprobe proc~handle_local_worker_requests_group->irecv proc~handle_local_worker_requests_group->isend proc~handle_local_worker_requests_group->proc~queue_pop proc~handle_local_worker_requests_group->proc~send_fragment_payload_from_row proc~handle_local_worker_results_to_batch->abort_comm proc~handle_local_worker_results_to_batch->error proc~handle_local_worker_results_to_batch->iprobe proc~handle_local_worker_results_to_batch->proc~error_get_message proc~handle_local_worker_results_to_batch->proc~result_irecv proc~handle_local_worker_results_to_batch->to_char proc~handle_local_worker_results_to_batch->proc~flush_group_results proc~append_result_to_batch append_result_to_batch proc~handle_local_worker_results_to_batch->proc~append_result_to_batch proc~handle_local_worker_results_to_batch->proc~result_destroy proc~handle_node_results_to_batch->abort_comm proc~handle_node_results_to_batch->error proc~handle_node_results_to_batch->iprobe proc~handle_node_results_to_batch->irecv proc~handle_node_results_to_batch->proc~error_get_message proc~handle_node_results_to_batch->proc~result_irecv proc~handle_node_results_to_batch->to_char proc~handle_node_results_to_batch->proc~flush_group_results proc~handle_node_results_to_batch->proc~append_result_to_batch proc~handle_node_results_to_batch->proc~result_destroy proc~receive_group_assignment_matrix->irecv proc~receive_group_assignment_matrix->recv proc~result_reset calculation_result_t%result_reset proc~result_destroy->proc~result_reset proc~send_fragment_payload_from_row->isend proc~build_fragment_payload_from_row build_fragment_payload_from_row proc~send_fragment_payload_from_row->proc~build_fragment_payload_from_row

Called by

proc~~node_coordinator~~CalledByGraph proc~node_coordinator node_coordinator interface~node_coordinator node_coordinator interface~node_coordinator->proc~node_coordinator proc~gmbe_run_distributed gmbe_context_t%gmbe_run_distributed proc~gmbe_run_distributed->interface~node_coordinator proc~mbe_run_distributed mbe_context_t%mbe_run_distributed proc~mbe_run_distributed->interface~node_coordinator

Source Code

   module subroutine node_coordinator(ctx)
      !! Node coordinator for distributing fragments to local workers
      !! Handles work requests and result collection from local workers
      use mqc_many_body_expansion, only: many_body_expansion_t
      class(*), intent(in) :: ctx

      ! Cast to many_body_expansion_t via select type
      select type (ctx)
      class is (many_body_expansion_t)
         call node_coordinator_impl(ctx)
      class default
         call logger%error("node_coordinator: expected many_body_expansion_t")
         call abort_comm(comm_world(), 1)
      end select
   end subroutine node_coordinator