From f334607c34f853297206d90024c017e94bdb9ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20FOYER?= Date: Tue, 27 Jun 2017 19:01:43 +0200 Subject: [PATCH 1/3] Simplify the communicator's name caching management (#6) Signed-off-by: Clement Foyer --- .../mca/common/monitoring/common_monitoring.h | 1 + .../monitoring/common_monitoring_coll.c | 22 ++++++++++++------- ompi/mca/pml/monitoring/pml_monitoring_comm.c | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ompi/mca/common/monitoring/common_monitoring.h b/ompi/mca/common/monitoring/common_monitoring.h index 5c4cef00d3..a199adef99 100644 --- a/ompi/mca/common/monitoring/common_monitoring.h +++ b/ompi/mca/common/monitoring/common_monitoring.h @@ -110,6 +110,7 @@ typedef struct mca_monitoring_coll_data_t mca_monitoring_coll_data_t; OMPI_DECLSPEC OBJ_CLASS_DECLARATION(mca_monitoring_coll_data_t); OMPI_DECLSPEC mca_monitoring_coll_data_t*mca_common_monitoring_coll_new(ompi_communicator_t*comm); +OMPI_DECLSPEC int mca_common_monitoring_coll_cache_name(ompi_communicator_t*comm); OMPI_DECLSPEC void mca_common_monitoring_coll_release(mca_monitoring_coll_data_t*data); OMPI_DECLSPEC void mca_common_monitoring_coll_o2a(size_t size, mca_monitoring_coll_data_t*data); OMPI_DECLSPEC void mca_common_monitoring_coll_a2o(size_t size, mca_monitoring_coll_data_t*data); diff --git a/ompi/mca/common/monitoring/common_monitoring_coll.c b/ompi/mca/common/monitoring/common_monitoring_coll.c index c68ae442f1..9383eb415d 100644 --- a/ompi/mca/common/monitoring/common_monitoring_coll.c +++ b/ompi/mca/common/monitoring/common_monitoring_coll.c @@ -41,13 +41,20 @@ struct mca_monitoring_coll_data_t { /* Collectives operation monitoring */ static opal_hash_table_t *comm_data = NULL; +int mca_common_monitoring_coll_cache_name(ompi_communicator_t*comm) +{ + mca_monitoring_coll_data_t*data; + int ret = opal_hash_table_get_value_uint64(comm_data, *((uint64_t*)&comm), (void*)&data); + if( OPAL_SUCCESS == ret ) { + data->comm_name = strdup(comm->c_name); + data->p_comm = NULL; + } + return ret; +} + static inline void mca_common_monitoring_coll_cache(mca_monitoring_coll_data_t*data) { - if( data->is_released ) { - /* As long as the data struct is not released, we still have the communicator to - immediately fetch the communicator's name */ - data->comm_name = strdup(data->p_comm->c_name); - } + int world_rank; if( -1 == data->world_rank ) { /* Get current process world_rank */ mca_common_monitoring_get_world_rank(ompi_comm_rank(data->p_comm), data->p_comm, @@ -160,9 +167,8 @@ void mca_common_monitoring_coll_flush(FILE *pf, mca_monitoring_coll_data_t*data) "O2A\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n" "A2O\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n" "A2A\t%" PRId32 "\t%zu bytes\t%zu msgs sent\n", - data->p_comm ? data->p_comm->c_name - : data->comm_name ? data->comm_name : "(no-name)", - data->procs, + data->comm_name ? data->comm_name : data->p_comm ? + data->p_comm->c_name : "(no-name)", data->procs, data->world_rank, data->o2a_size, data->o2a_count, data->world_rank, data->a2o_size, data->a2o_count, data->world_rank, data->a2a_size, data->a2a_count); diff --git a/ompi/mca/pml/monitoring/pml_monitoring_comm.c b/ompi/mca/pml/monitoring/pml_monitoring_comm.c index 44b7d0c9d6..b689ef637e 100644 --- a/ompi/mca/pml/monitoring/pml_monitoring_comm.c +++ b/ompi/mca/pml/monitoring/pml_monitoring_comm.c @@ -20,5 +20,6 @@ int mca_pml_monitoring_add_comm(struct ompi_communicator_t* comm) int mca_pml_monitoring_del_comm(struct ompi_communicator_t* comm) { + mca_common_monitoring_coll_cache_name(comm); return pml_selected_module.pml_del_comm(comm); } From 458ccc12e101af54d6ae4fa6891d239edd957184 Mon Sep 17 00:00:00 2001 From: George Bosilca Date: Thu, 29 Jun 2017 18:58:58 +0200 Subject: [PATCH 2/3] Move the profiling library in common/monitoring Signed-off-by: George Bosilca --- configure.ac | 5 +--- ompi/mca/common/monitoring/Makefile.am | 18 +++++++++++++ .../common}/monitoring/aggregate_profile.pl | 0 ompi/mca/common/monitoring/configure.m4 | 26 +++++++++++++++++++ .../mca/common}/monitoring/monitoring_prof.c | 0 .../mca/common}/monitoring/profile2mat.pl | 0 test/monitoring/Makefile.am | 17 ------------ 7 files changed, 45 insertions(+), 21 deletions(-) rename {test => ompi/mca/common}/monitoring/aggregate_profile.pl (100%) create mode 100644 ompi/mca/common/monitoring/configure.m4 rename {test => ompi/mca/common}/monitoring/monitoring_prof.c (100%) rename {test => ompi/mca/common}/monitoring/profile2mat.pl (100%) diff --git a/configure.ac b/configure.ac index 929ec70e8b..d49b068fbe 100644 --- a/configure.ac +++ b/configure.ac @@ -1420,11 +1420,8 @@ AC_CONFIG_FILES([ test/threads/Makefile test/util/Makefile ]) + m4_ifdef([project_ompi], [AC_CONFIG_FILES([test/monitoring/Makefile])]) -m4_ifdef([project_ompi], [ - m4_ifdef([MCA_BUILD_ompi_pml_monitoring_DSO_TRUE], - [AC_CONFIG_LINKS(test/monitoring/profile2mat.pl:test/monitoring/profile2mat.pl - test/monitoring/aggregate_profile.pl:test/monitoring/aggregate_profile.pl)])]) AC_CONFIG_FILES([contrib/dist/mofed/debian/rules], [chmod +x contrib/dist/mofed/debian/rules]) diff --git a/ompi/mca/common/monitoring/Makefile.am b/ompi/mca/common/monitoring/Makefile.am index b857feecf8..7e15dc3c44 100644 --- a/ompi/mca/common/monitoring/Makefile.am +++ b/ompi/mca/common/monitoring/Makefile.am @@ -1,4 +1,7 @@ # +# Copyright (c) 2016 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. # Copyright (c) 2016 Inria. All rights reserved. # Copyright (c) 2017 Research Organization for Information Science # and Technology (RIST). All rights reserved. @@ -9,6 +12,8 @@ # $HEADER$ # +EXTRA_DIST = profile2mat.pl aggregate_profile.pl + sources = common_monitoring.c common_monitoring_coll.c headers = common_monitoring.h common_monitoring_coll.h @@ -19,6 +24,19 @@ component_noinst = libmca_common_monitoring_noinst.la if MCA_BUILD_ompi_common_monitoring_DSO lib_LTLIBRARIES += $(component_install) +lib_LTLIBRARIES += ompi_monitoring_prof.la + +ompi_monitoring_prof_la_SOURCES = monitoring_prof.c +ompi_monitoring_prof_la_LDFLAGS= \ + -module -avoid-version -shared $(WRAPPER_EXTRA_LDFLAGS) +ompi_monitoring_prof_la_LIBADD = \ + $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ + $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la + +if OPAL_INSTALL_BINARIES +bin_SCRIPTS = profile2mat.pl aggregate_profile.pl +endif # OPAL_INSTALL_BINARIES + else noinst_LTLIBRARIES += $(component_noinst) endif diff --git a/test/monitoring/aggregate_profile.pl b/ompi/mca/common/monitoring/aggregate_profile.pl similarity index 100% rename from test/monitoring/aggregate_profile.pl rename to ompi/mca/common/monitoring/aggregate_profile.pl diff --git a/ompi/mca/common/monitoring/configure.m4 b/ompi/mca/common/monitoring/configure.m4 new file mode 100644 index 0000000000..345c3a55d2 --- /dev/null +++ b/ompi/mca/common/monitoring/configure.m4 @@ -0,0 +1,26 @@ +# -*- shell-script -*- +# +# Copyright (c) 2017 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# MCA_ompi_common_monitoring_CONFIG([action-if-can-compile], +# [action-if-cant-compile]) +# ------------------------------------------------ +AC_DEFUN([MCA_ompi_common_monitoring_CONFIG],[ + AC_CONFIG_FILES([ompi/mca/common/monitoring/Makefile]) + + m4_ifdef([project_ompi], [ + m4_ifdef([MCA_BUILD_ompi_common_monitoring_DSO_TRUE], + [AC_CONFIG_LINKS(profile2mat.pl:test/monitoring/profile2mat.pl + aggregate_profile.pl:test/monitoring/aggregate_profile.pl)])]) + + + [$1] +])dnl diff --git a/test/monitoring/monitoring_prof.c b/ompi/mca/common/monitoring/monitoring_prof.c similarity index 100% rename from test/monitoring/monitoring_prof.c rename to ompi/mca/common/monitoring/monitoring_prof.c diff --git a/test/monitoring/profile2mat.pl b/ompi/mca/common/monitoring/profile2mat.pl similarity index 100% rename from test/monitoring/profile2mat.pl rename to ompi/mca/common/monitoring/profile2mat.pl diff --git a/test/monitoring/Makefile.am b/test/monitoring/Makefile.am index 93ec737ea9..b95d59ed4d 100644 --- a/test/monitoring/Makefile.am +++ b/test/monitoring/Makefile.am @@ -14,8 +14,6 @@ # $HEADER$ # -EXTRA_DIST = profile2mat.pl aggregate_profile.pl - # This test requires multiple processes to run. Don't run it as part # of 'make check' if PROJECT_OMPI @@ -45,21 +43,6 @@ if PROJECT_OMPI example_reduce_count_LDADD = \ $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la - -if MCA_BUILD_ompi_pml_monitoring_DSO - lib_LTLIBRARIES = ompi_monitoring_prof.la - ompi_monitoring_prof_la_SOURCES = monitoring_prof.c - ompi_monitoring_prof_la_LDFLAGS= \ - -module -avoid-version -shared $(WRAPPER_EXTRA_LDFLAGS) - ompi_monitoring_prof_la_LIBADD = \ - $(top_builddir)/ompi/lib@OMPI_LIBMPI_NAME@.la \ - $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la -endif # MCA_BUILD_ompi_pml_monitoring_DSO - -if OPAL_INSTALL_BINARIES -bin_SCRIPTS = profile2mat.pl aggregate_profile.pl -endif # OPAL_INSTALL_BINARIES - endif # PROJECT_OMPI distclean: From 64bff0e326ca6bb32083161157c11019412fd99e Mon Sep 17 00:00:00 2001 From: George Bosilca Date: Thu, 29 Jun 2017 21:07:20 +0200 Subject: [PATCH 3/3] Disable monitoring if we compile statically. Protect all components against compilation on static builds. Signed-off-by: George Bosilca --- ompi/mca/coll/monitoring/configure.m4 | 23 +++++++++++++++++++++++ ompi/mca/common/monitoring/configure.m4 | 4 +++- ompi/mca/osc/monitoring/configure.m4 | 13 ++++++++----- ompi/mca/pml/monitoring/configure.m4 | 24 ++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 ompi/mca/coll/monitoring/configure.m4 create mode 100644 ompi/mca/pml/monitoring/configure.m4 diff --git a/ompi/mca/coll/monitoring/configure.m4 b/ompi/mca/coll/monitoring/configure.m4 new file mode 100644 index 0000000000..2f72be629b --- /dev/null +++ b/ompi/mca/coll/monitoring/configure.m4 @@ -0,0 +1,23 @@ +# -*- shell-script -*- +# +# Copyright (c) 2017 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# MCA_ompi_coll_monitoring_CONFIG([action-if-can-compile], +# [action-if-cant-compile]) +# ------------------------------------------------ +AC_DEFUN([MCA_ompi_coll_monitoring_CONFIG],[ + AC_CONFIG_FILES([ompi/mca/coll/monitoring/Makefile]) + + AS_IF([test MCA_BUILD_ompi_common_monitoring_DSO_TRUE == ''], + [$1], + [$2]) +])dnl + diff --git a/ompi/mca/common/monitoring/configure.m4 b/ompi/mca/common/monitoring/configure.m4 index 345c3a55d2..5ee7a2cda5 100644 --- a/ompi/mca/common/monitoring/configure.m4 +++ b/ompi/mca/common/monitoring/configure.m4 @@ -22,5 +22,7 @@ AC_DEFUN([MCA_ompi_common_monitoring_CONFIG],[ aggregate_profile.pl:test/monitoring/aggregate_profile.pl)])]) - [$1] + AS_IF([test MCA_BUILD_ompi_common_monitoring_DSO_TRUE == ''], + [$1], + [$2]) ])dnl diff --git a/ompi/mca/osc/monitoring/configure.m4 b/ompi/mca/osc/monitoring/configure.m4 index 24b8bfbd87..2682c47bfc 100644 --- a/ompi/mca/osc/monitoring/configure.m4 +++ b/ompi/mca/osc/monitoring/configure.m4 @@ -11,9 +11,12 @@ # MCA_ompi_osc_monitoring_CONFIG() # ------------------------------------------------ AC_DEFUN([MCA_ompi_osc_monitoring_CONFIG],[ - AC_CONFIG_FILES([ompi/mca/osc/monitoring/Makefile]) + AC_CONFIG_FILES([ompi/mca/osc/monitoring/Makefile]) - OPAL_CHECK_PORTALS4([osc_monitoring], - [AC_DEFINE([OMPI_WITH_OSC_PORTALS4], [1], [Whether or not to generate template for osc_portals4])], - []) - ])dnl + AS_IF([test MCA_BUILD_ompi_common_monitoring_DSO_TRUE == ''], + [$1], + [$2]) + OPAL_CHECK_PORTALS4([osc_monitoring], + [AC_DEFINE([OMPI_WITH_OSC_PORTALS4], [1], [Whether or not to generate template for osc_portals4])], + []) +])dnl diff --git a/ompi/mca/pml/monitoring/configure.m4 b/ompi/mca/pml/monitoring/configure.m4 new file mode 100644 index 0000000000..b559fc1761 --- /dev/null +++ b/ompi/mca/pml/monitoring/configure.m4 @@ -0,0 +1,24 @@ +# -*- shell-script -*- +# +# Copyright (c) 2017 The University of Tennessee and The University +# of Tennessee Research Foundation. All rights +# reserved. +# $COPYRIGHT$ +# +# Additional copyrights may follow +# +# $HEADER$ +# + +# MCA_ompi_coll_monitoring_CONFIG([action-if-can-compile], +# [action-if-cant-compile]) +# ------------------------------------------------ +AC_DEFUN([MCA_ompi_pml_monitoring_CONFIG],[ + AC_CONFIG_FILES([ompi/mca/pml/monitoring/Makefile]) + + AS_IF([test MCA_BUILD_ompi_common_monitoring_DSO_TRUE == ''], + [$1], + [$2]) +])dnl + +