125d236173
We've been fighting the battle of trying to create a regex generator and parser that can handle arbitrary hostname schemes - without long-term success. The worst of it is that there is no way of checking to see if the computed regex is correct short of parsing it and doing a character-by-character comparison with the original string. Ugh...there has to be a better solution. One option is to investigate using 3rd-party regex libraries as those are coming from communities whose sole focus is resolving that problem. However, someone would need to spend the time to investigate it, and we'd have to find a license-friendly implementation. Another option is to quit beating our heads against the wall and just compress the information. It won't be as much of a reduction, but we also won't keep hitting scenarios where things break. In this case, it seems that "perfection" is definitely the enemy of "good enough". This PR implements the compression option while retaining the possibility of people adding regex-generating components. The compression code used in ORTE is consolidated into the opal/compress framework. That framework currently held bzip and gzip components for use in compressing checkpoint files - since we no longer support C/R, I have .opal_ignore'd those components. However, I have left the original framework APIs alone in case someone ever decides to redo C/R. The APIs of interest here are added to the framework - specifically, the "compress_block" and "decompress_block" functions. I then moved the ORTE zlib compression code into a new component in this framework. Unfortunately, the framework currently is a single-select one - i.e., only one active component at a time. Since I .opal_ignore'd the other two and made the priority of zlib high, this isn't a problem. However, if someone wants to re-enable bzip/gzip or add another component, they might need to transition opal/compress to a multi-select framework. Included changes: * Consolidate the compression code into the opal/compress framework * Move the ORTE zlib compression code into a new opal/compress/zlib component * Ignore the bzip and gzip components in opal/compress framework * Add a "compress_base_limit" MCA param to set the threshold above which we compress data - defaults to 4096 bytes * Delete stale brucks and rcd components from orte/grpcomm framework * Delete the orte/regx framework * Update the launch system to use opal/compress instead of string regex * Provide a default module if no zlib is available * Fix some misc multi-node issues * Properly generate the nidmap in response to a "connection warmup" message so the remote daemon knows the children it needs to launch. * Remove stale references to orte_node_regex * opal_byte_object_t's are not OPAL objects - properly release allocated memory. * Set the topology * Currently only handling homogeneous case * Update the compress framework files to conform * Consolidate open/close into one "frame" file. Ensure we open/close the framework Signed-off-by: Ralph Castain <rhc@pmix.org>
88 строки
3.0 KiB
Makefile
88 строки
3.0 KiB
Makefile
#
|
|
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
# University Research and Technology
|
|
# Corporation. All rights reserved.
|
|
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
# of Tennessee Research Foundation. All rights
|
|
# reserved.
|
|
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
# University of Stuttgart. All rights reserved.
|
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
|
# All rights reserved.
|
|
# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
|
|
# Copyright (c) 2014 Cisco Systems, Inc. All rights reserved.
|
|
# Copyright (c) 2014-2019 Intel, Inc. All rights reserved.
|
|
# Copyright (c) 2016 Research Organization for Information Science
|
|
# and Technology (RIST). All rights reserved.
|
|
# $COPYRIGHT$
|
|
#
|
|
# Additional copyrights may follow
|
|
#
|
|
# $HEADER$
|
|
#
|
|
|
|
# This makefile.am does not stand on its own - it is included from orte/Makefile.am
|
|
|
|
include $(top_srcdir)/Makefile.ompi-rules
|
|
|
|
dist_ortedata_DATA += util/hostfile/help-hostfile.txt \
|
|
util/dash_host/help-dash-host.txt \
|
|
util/help-regex.txt
|
|
|
|
nodist_man_MANS = util/hostfile/orte_hosts.7
|
|
|
|
# We are using $(am_dirstamp) instead of creating our own dirstamp since there
|
|
# is src code in util/hostfile directory is created. The automake process
|
|
# creates the $(am_dirstamp), we found the use of this in the generated Makefile
|
|
# in the util/Makefile
|
|
$(nodist_man_MANS): util/hostfile/$(am__dirstamp) $(top_builddir)/opal/include/opal_config.h
|
|
|
|
EXTRA_DIST += $(nodist_man_MANS:.7=.7in)
|
|
|
|
AM_LFLAGS = -Porte_util_hostfile_
|
|
LEX_OUTPUT_ROOT = lex.orte_util_hostfile_
|
|
|
|
headers += \
|
|
util/name_fns.h \
|
|
util/proc_info.h \
|
|
util/session_dir.h \
|
|
util/show_help.h \
|
|
util/error_strings.h \
|
|
util/context_fns.h \
|
|
util/parse_options.h \
|
|
util/pre_condition_transports.h \
|
|
util/hnp_contact.h \
|
|
util/hostfile/hostfile.h \
|
|
util/hostfile/hostfile_lex.h \
|
|
util/dash_host/dash_host.h \
|
|
util/comm/comm.h \
|
|
util/attr.h \
|
|
util/listener.h \
|
|
util/threads.h \
|
|
util/nidmap.h
|
|
|
|
lib@ORTE_LIB_PREFIX@open_rte_la_SOURCES += \
|
|
util/error_strings.c \
|
|
util/name_fns.c \
|
|
util/proc_info.c \
|
|
util/session_dir.c \
|
|
util/show_help.c \
|
|
util/context_fns.c \
|
|
util/parse_options.c \
|
|
util/pre_condition_transports.c \
|
|
util/hnp_contact.c \
|
|
util/hostfile/hostfile_lex.l \
|
|
util/hostfile/hostfile.c \
|
|
util/dash_host/dash_host.c \
|
|
util/comm/comm.c \
|
|
util/attr.c \
|
|
util/listener.c \
|
|
util/nidmap.c
|
|
|
|
# Remove the generated man pages
|
|
distclean-local:
|
|
rm -f $(nodist_man_MANS)
|
|
|
|
maintainer-clean-local:
|
|
rm -f util/hostfile/hostfile_lex.c
|