From 5e560cb14879ffa9bebac42a1c0f5654a1c04796 Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Fri, 3 Dec 2004 21:05:22 +0000 Subject: [PATCH] Fix a problem that affected attributes - we were missing the vm_register function call. This commit was SVN r3692. --- src/attribute/attribute_predefined.c | 27 ++++++------------------ src/mca/ns/base/base.h | 7 +++++++ src/mca/ns/base/ns_base_local_fns.c | 24 +++++++++++++++++++++ src/mca/ns/base/ns_base_open.c | 31 +++++++++++++++++++++++++++- src/mpi/runtime/ompi_mpi_init.c | 5 +++++ src/runtime/ompi_rte_vm_status.c | 2 +- src/runtime/runtime.h | 4 ++-- src/tools/ompid/ompid.c | 2 +- 8 files changed, 76 insertions(+), 26 deletions(-) diff --git a/src/attribute/attribute_predefined.c b/src/attribute/attribute_predefined.c index f40da00730..e64089c237 100644 --- a/src/attribute/attribute_predefined.c +++ b/src/attribute/attribute_predefined.c @@ -67,7 +67,7 @@ int ompi_attr_create_predefined(void) rc = ompi_registry.subscribe( OMPI_REGISTRY_OR, - OMPI_REGISTRY_NOTIFY_ON_STARTUP|OMPI_REGISTRY_NOTIFY_INCLUDE_STARTUP_DATA, + OMPI_REGISTRY_NOTIFY_ON_STARTUP|OMPI_REGISTRY_NOTIFY_INCLUDE_STARTUP_DATA, OMPI_RTE_VM_STATUS_SEGMENT, NULL, ompi_attr_create_predefined_callback, @@ -84,12 +84,10 @@ void ompi_attr_create_predefined_callback( ompi_registry_notify_message_t *msg, void *cbdata) { - int num, err; + int err; ompi_list_item_t *item; ompi_registry_value_t *reg_value; - ompi_buffer_t buffer; - char *bogus; - ompi_process_name_t name; + ompi_rte_vm_status_t *vm_stat; /* Set some default values */ @@ -124,26 +122,13 @@ void ompi_attr_create_predefined_callback( NULL != item; item = ompi_list_remove_first(&msg->data)) { reg_value = (ompi_registry_value_t *) item; - buffer = (ompi_buffer_t) reg_value->object; - - /* Node name */ - ompi_unpack_string(buffer, &bogus); - free(bogus); - - /* Process name */ - ompi_unpack(buffer, &name, 1, OMPI_NAME); - free(&name); - - /* OOB contact info */ - ompi_unpack_string(buffer, &bogus); - free(bogus); + vm_stat = ompi_rte_unpack_vm_status(reg_value); /* Process slot count */ - ompi_unpack(buffer, &num, 1, OMPI_INT32); - attr_universe_size += num; + attr_universe_size += vm_stat->num_cpus; /* Discard the rest */ - ompi_buffer_free(buffer); + free(vm_stat); OBJ_RELEASE(item); } } diff --git a/src/mca/ns/base/base.h b/src/mca/ns/base/base.h index 6c9c21d3c3..6dc4563671 100644 --- a/src/mca/ns/base/base.h +++ b/src/mca/ns/base/base.h @@ -114,6 +114,13 @@ OMPI_DECLSPEC mca_ns_base_vpid_t mca_ns_base_reserve_range(mca_ns_base_jobid_ OMPI_DECLSPEC int mca_ns_base_free_name(ompi_process_name_t* name); +OMPI_DECLSPEC mca_ns_base_cellid_t mca_ns_base_create_cellid_not_available(void); + +OMPI_DECLSPEC mca_ns_base_jobid_t mca_ns_base_create_jobid_not_available(void); + +OMPI_DECLSPEC mca_ns_base_vpid_t mca_ns_base_get_vpid_range_not_available(mca_ns_base_jobid_t job, + mca_ns_base_vpid_t range); + /* diff --git a/src/mca/ns/base/ns_base_local_fns.c b/src/mca/ns/base/ns_base_local_fns.c index dc600cf233..7fa431fe71 100644 --- a/src/mca/ns/base/ns_base_local_fns.c +++ b/src/mca/ns/base/ns_base_local_fns.c @@ -35,6 +35,30 @@ * globals */ + +/* + * "not available" functions + */ +mca_ns_base_cellid_t +mca_ns_base_create_cellid_not_available(void) +{ + return MCA_NS_BASE_CELLID_MAX; +} + +mca_ns_base_jobid_t +mca_ns_base_create_jobid_not_available(void) +{ + return MCA_NS_BASE_JOBID_MAX; +} + +mca_ns_base_vpid_t +mca_ns_base_get_vpid_range_not_available(mca_ns_base_jobid_t job, + mca_ns_base_vpid_t range) +{ + return MCA_NS_BASE_VPID_MAX; +} + + /* * functions */ diff --git a/src/mca/ns/base/ns_base_open.c b/src/mca/ns/base/ns_base_open.c index 39c3da8ee0..f7fa2d69d1 100644 --- a/src/mca/ns/base/ns_base_open.c +++ b/src/mca/ns/base/ns_base_open.c @@ -40,7 +40,36 @@ * Global variables */ int mca_ns_base_output = -1; -mca_ns_base_module_t ompi_name_server; +mca_ns_base_module_t ompi_name_server = { + mca_ns_base_create_cellid_not_available, + mca_ns_base_assign_cellid_to_process, + mca_ns_base_create_jobid_not_available, + mca_ns_base_create_process_name, + mca_ns_base_copy_process_name, + mca_ns_base_convert_string_to_process_name, + mca_ns_base_get_vpid_range_not_available, + mca_ns_base_free_name, + mca_ns_base_get_proc_name_string, + mca_ns_base_get_vpid_string, + mca_ns_base_convert_vpid_to_string, + mca_ns_base_convert_string_to_vpid, + mca_ns_base_get_jobid_string, + mca_ns_base_convert_jobid_to_string, + mca_ns_base_convert_string_to_jobid, + mca_ns_base_get_cellid_string, + mca_ns_base_convert_cellid_to_string, + mca_ns_base_convert_string_to_cellid, + mca_ns_base_get_vpid, + mca_ns_base_get_jobid, + mca_ns_base_get_cellid, + mca_ns_base_compare, + mca_ns_base_pack_name, + mca_ns_base_unpack_name, + mca_ns_base_pack_cellid, + mca_ns_base_unpack_cellid, + mca_ns_base_pack_jobid, + mca_ns_base_unpack_jobid +}; bool mca_ns_base_selected = false; ompi_list_t mca_ns_base_components_available; mca_ns_base_component_t mca_ns_base_selected_component; diff --git a/src/mpi/runtime/ompi_mpi_init.c b/src/mpi/runtime/ompi_mpi_init.c index b8af421b8b..ffae185e2c 100644 --- a/src/mpi/runtime/ompi_mpi_init.c +++ b/src/mpi/runtime/ompi_mpi_init.c @@ -281,6 +281,11 @@ int ompi_mpi_init(int argc, char **argv, int requested, int *provided) goto error; } + /* + * Set the virtual machine status for this node + */ + ompi_rte_vm_register(); + /* execute the compound command - no return data requested * we'll get it all from the startup message */ diff --git a/src/runtime/ompi_rte_vm_status.c b/src/runtime/ompi_rte_vm_status.c index e61a82a4cf..21090d4d79 100644 --- a/src/runtime/ompi_rte_vm_status.c +++ b/src/runtime/ompi_rte_vm_status.c @@ -133,7 +133,7 @@ ompi_rte_vm_status_t return stat_ptr; } -int ompi_vm_register(void) +int ompi_rte_vm_register(void) { ompi_rte_vm_status_t status; diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h index 915b151fea..675d47c793 100644 --- a/src/runtime/runtime.h +++ b/src/runtime/runtime.h @@ -490,9 +490,9 @@ OMPI_DECLSPEC void ompi_rte_parse_environ(void); /** - * Register a daemon on the virtual machine segment. + * Register on the virtual machine segment. */ -OMPI_DECLSPEC int ompi_vm_register(void); +OMPI_DECLSPEC int ompi_rte_vm_register(void); /** * Startup a job - notify processes that all ready to begin diff --git a/src/tools/ompid/ompid.c b/src/tools/ompid/ompid.c index 22eab8bbc1..0f3f60da86 100644 --- a/src/tools/ompid/ompid.c +++ b/src/tools/ompid/ompid.c @@ -236,7 +236,7 @@ int main(int argc, char *argv[]) /* register this node on the virtual machine */ - ompi_vm_register(); + ompi_rte_vm_register(); if (ompi_daemon_debug) { ompi_output(0, "[%d,%d,%d] ompid: issuing callback", ompi_rte_get_self()->cellid,