Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions opal/mca/pmix/pmix4x/pmix/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,45 @@ Master (not on release branches yet)
- Fix a bug when registering default event handlers


3.1.0 -- 17 Jan 2019
----------------------
**** THIS RELEASE MARKS THE STARTING POINT FOR FULL COMPLIANCE
**** WITH THE PMIX v3 STANDARD. ALL API BEHAVIORS AND ATTRIBUTE
**** DEFINITIONS MEET THE v3 STANDARD SPECIFICATIONS.
- Add a new, faster dstore GDS component 'ds21'
- Performance optimizations for the dstore GDS components.
- Plug miscellaneous memory leaks
- Silence an unnecessary warning message when checking connection
to a non-supporting server
- Ensure lost-connection events get delivered to default event
handlers
- Correctly handle cache refresh for queries
- Protect against race conditions between host and internal library
when dealing with async requests
- Cleanup tool operations and add support for connections to
remote servers. Initial support for debugger direct/indirect
launch verified with PRRTE. Cleanup setting of tmpdir options.
Drop rendezvous files when acting as a launcher
- Automatically store the server URI for easy access by client
- Provide MCA parameter to control TCP connect retry/timeout
- Update event notification system to properly evict oldest events
when more space is needed
- Fix a number of error paths
- Update IOF cache code to properly drop oldest message. Provide
MCA parameter for setting cache size.
- Handle setsockopt(SO_RCVTIMEO) not being supported
- Ensure that epilogs get run even when connections unexpectedly
terminate. Properly split epilog strings to process multiple
paths
- Pass the tool's command line to the server so it can be returned
in queries
- Add support for C11 atomics
- Support collection and forwarding of fabric-specific envars
- Improve handling of hwloc configure option
- Fix PMIx_server_generate_regex to preserve node ordering
- Fix a bug when registering default event handlers


3.0.2 -- 18 Sept 2018
----------------------
- Ensure we cleanup any active sensors when a peer departs. Allow the
Expand Down
4 changes: 2 additions & 2 deletions opal/mca/pmix/pmix4x/pmix/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ greek=a1
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".

repo_rev=git99971222
repo_rev=git03a8b5da

# If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in
Expand All @@ -44,7 +44,7 @@ tarball_version=

# The date when this release was created

date="Jun 27, 2019"
date="Jul 16, 2019"

# The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library
Expand Down
8 changes: 4 additions & 4 deletions opal/mca/pmix/pmix4x/pmix/config/pmix.m4
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ AC_DEFUN([PMIX_SETUP_CORE],[
[Link the output PMIx library to this extra lib (used in embedded mode)]))
AC_MSG_CHECKING([for extra lib])
AS_IF([test ! -z "$with_pmix_extra_lib"],
[AS_IF([test "$with_pmix_extra_lib" == "yes" || test "$with_pmix_extra_lib" == "no"],
[AS_IF([test "$with_pmix_extra_lib" = "yes" || test "$with_pmix_extra_lib" = "no"],
[AC_MSG_RESULT([ERROR])
AC_MSG_WARN([Invalid value for --with-extra-pmix-lib:])
AC_MSG_WARN([ $with_pmix_extra_lib])
Expand All @@ -209,7 +209,7 @@ AC_DEFUN([PMIX_SETUP_CORE],[
[Link any embedded components/tools that require it to the provided libtool lib (used in embedded mode)]))
AC_MSG_CHECKING([for extra ltlib])
AS_IF([test ! -z "$with_pmix_extra_ltlib"],
[AS_IF([test "$with_pmix_extra_ltlib" == "yes" || test "$with_pmix_extra_ltlib" == "no"],
[AS_IF([test "$with_pmix_extra_ltlib" = "yes" || test "$with_pmix_extra_ltlib" = "no"],
[AC_MSG_RESULT([ERROR])
AC_MSG_WARN([Invalid value for --with-pmix-extra-ltlib:])
AC_MSG_WARN([ $with_pmix_extra_ltlib])
Expand Down Expand Up @@ -664,7 +664,7 @@ AC_DEFUN([PMIX_SETUP_CORE],[
# -lrt might be needed for clock_gettime
PMIX_SEARCH_LIBS_CORE([clock_gettime], [rt])

AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf strsignal socketpair strncpy_s usleep statfs statvfs getpeereid getpeerucred strnlen posix_fallocate tcgetpgrp setpgid ptsname openpty])
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf strsignal socketpair strncpy_s usleep statfs statvfs getpeereid getpeerucred strnlen posix_fallocate tcgetpgrp setpgid ptsname openpty setenv])

# On some hosts, htonl is a define, so the AC_CHECK_FUNC will get
# confused. On others, it's in the standard library, but stubbed with
Expand Down Expand Up @@ -1245,7 +1245,7 @@ AC_MSG_CHECKING([if want to support dlopen of non-global namespaces])
AC_ARG_ENABLE([nonglobal-dlopen],
AC_HELP_STRING([--enable-nonglobal-dlopen],
[enable non-global dlopen (default: enabled)]))
if test "$enable_nonglobal_dlopen" == "no"; then
if test "$enable_nonglobal_dlopen" = "no"; then
AC_MSG_RESULT([no])
pmix_need_libpmix=0
else
Expand Down
2 changes: 1 addition & 1 deletion opal/mca/pmix/pmix4x/pmix/config/pmix_setup_hwloc.m4
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ AC_DEFUN([_PMIX_HWLOC_EXTERNAL],[
if test "$with_hwloc" != "no"; then
AC_MSG_CHECKING([for hwloc in])
if test ! -z "$with_hwloc" && test "$with_hwloc" != "yes"; then
pmix_hwloc_dir=$with_hwloc
pmix_hwloc_dir=$with_hwloc/include
pmix_hwloc_standard_header_location=no
pmix_hwloc_standard_lib_location=no
AS_IF([test -z "$with_hwloc_libdir" || test "$with_hwloc_libdir" = "yes"],
Expand Down
3 changes: 1 addition & 2 deletions opal/mca/pmix/pmix4x/pmix/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ LT_PREREQ([2.2.6])

pmix_enable_shared="$enable_shared"
pmix_enable_static="$enable_static"
AS_IF([test ! -z "$enable_static" && test "$enable_static" == "yes"],
AS_IF([test ! -z "$enable_static" && test "$enable_static" = "yes"],
[CFLAGS="$CFLAGS -fPIC"])

AM_ENABLE_SHARED
Expand Down Expand Up @@ -201,7 +201,6 @@ AS_IF([test "$pmix_debug" = "1"],

LT_INIT()
LT_LANG([C])
LT_LANG([C++])

############################################################################
# Setup the core
Expand Down
4 changes: 2 additions & 2 deletions opal/mca/pmix/pmix4x/pmix/contrib/whitespace-purge.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
#
# Copyright (c) 2015 Intel, Inc. All rights reserved.
# Copyright (c) 2015-2019 Intel, Inc. All rights reserved.
# Copyright (c) 2015 Los Alamos National Security, LLC. All rights
# reserved
# Copyright (c) 2015 Cisco Systems, Inc.
Expand All @@ -18,7 +18,7 @@ for file in $(git ls-files) ; do
# skip sym links, pdfs, etc. If any other file types should be
# skipped add the check here.
type=$(file -b --mime-type -h $file)
if test ${type::4} == "text" ; then
if test ${type::4} = "text" ; then
# Eliminate whitespace at the end of lines
perl -pi -e 's/\s*$/\n/' $file
fi
Expand Down
78 changes: 62 additions & 16 deletions opal/mca/pmix/pmix4x/pmix/include/pmix_common.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -268,14 +268,19 @@ typedef uint32_t pmix_rank_t;
#define PMIX_PARENT_ID "pmix.parent" // (pmix_proc_t*) identifier of the process that called PMIx_Spawn
// to launch this proc's application
#define PMIX_EXIT_CODE "pmix.exit.code" // (int) exit code returned when proc terminated
#define PMIX_NETWORK_COORDINATE "pmix.net.coord" // (pmix_coord_t*) Network coordinate of the specified process
#define PMIX_NETWORK_COORD_SYSTEM "pmix.net.coordsys" // (pmix_coord_system_t) Network coordinate system being employed to
// describe the specified network plane
#define PMIX_NETWORK_COORDINATE "pmix.net.coord" // (pmix_coord_t*) Network coordinate of the specified process in
// the given view type (e.g., logical vs physical)
#define PMIX_NETWORK_VIEW "pmix.net.view" // (pmix_coord_view_t) Requested view type (e.g., logical vs physical)
#define PMIX_NETWORK_DIMS "pmix.net.dims" // (uint32_t) Number of dimensions in the specified network plane/view
#define PMIX_NETWORK_PLANE "pmix.net.plane" // (char*) string ID of a network plane
#define PMIX_NETWORK_SWITCH "pmix.net.switch" // (char*) string ID of a network switch
#define PMIX_NETWORK_NIC "pmix.net.nic" // (char*) string ID of a NIC
#define PMIX_NETWORK_ENDPT "pmix.net.endpt" // (assigned) network endpt for process - type assigned by
// fabric provider
#define PMIX_NETWORK_SHAPE "pmix.net.shape" // (pmix_data_array_t*) number of interfaces (uint32_t) on each dimension of the
// specified network plane in the requested view
#define PMIX_NETWORK_SHAPE_STRING "pmix.net.shapestr" // (char*) network shape expressed as a string (e.g., "10x12x2")


/* size info */
#define PMIX_UNIV_SIZE "pmix.univ.size" // (uint32_t) #procs in this nspace
Expand Down Expand Up @@ -1079,19 +1084,6 @@ typedef enum {
} pmix_group_operation_t;


/* define a structure for a proc's network coordinate */
typedef struct pmix_coord {
int x;
int y;
int z;
} pmix_coord_t;

/* define coordinate system values */
typedef uint8_t pmix_coord_system_t;
#define PMIX_COORD_CARTESIAN 0x00
#define PMIX_COORD_TOROID 0x01
#define PMIX_COORD_CYLINDRICAL 0x02


/* define some "hooks" external libraries can use to
* intercept memory allocation/release operations */
Expand Down Expand Up @@ -1143,6 +1135,60 @@ static inline void* pmix_calloc(size_t n, size_t m)
(PMIX_CHECK_NSPACE((a)->nspace, (b)->nspace) && ((a)->rank == (b)->rank || (PMIX_RANK_WILDCARD == (a)->rank || PMIX_RANK_WILDCARD == (b)->rank)))


/**** PMIX COORD ****/
/* define coordinate system views */
typedef uint8_t pmix_coord_view_t;
#define PMIX_COORD_VIEW_UNDEF 0x00
#define PMIX_COORD_LOGICAL_VIEW 0x01
#define PMIX_COORD_PHYSICAL_VIEW 0x02

/* define a structure for a proc's network coordinate */
typedef struct pmix_coord {
pmix_coord_view_t view;
int *coord;
size_t dims;
} pmix_coord_t;

#define PMIX_COORD_CREATE(m, d, n) \
do { \
(m) = (pmix_coord_t*)pmix_calloc((n), sizeof(pmix_coord_t)); \
if (NULL != (m)) { \
(m)->view = PMIX_COORD_VIEW_UNDEF; \
(m)->dims = (d); \
(m)->coord = (int*)pmix_calloc((m)->dims, sizeof(int)); \
} \
} while(0)

#define PMIX_COORD_CONSTRUCT(m, d) \
do { \
(m)->view = PMIX_COORD_VIEW_UNDEF; \
(m)->coord = NULL; \
(m)->dims = 0; \
} while(0)

#define PMIX_COORD_DESTRUCT(m) \
do { \
(m)->view = PMIX_COORD_VIEW_UNDEF; \
if (NULL != (m)->coord) { \
pmix_free((m)->coord); \
(m)->coord = NULL; \
(m)->dims = 0; \
} \
} while(0)

#define PMIX_COORD_FREE(m, n) \
do { \
size_t _nc_; \
if (NULL != (m)) { \
for (_nc_ = 0; _nc_ < (n); _nc_++) { \
PMIX_COORD_DESTRUCT(&(m)[_nc_]); \
} \
free((m)); \
(m) = NULL; \
} \
} while(0)


/**** PMIX BYTE OBJECT ****/
typedef struct pmix_byte_object {
char *bytes;
Expand Down
100 changes: 20 additions & 80 deletions opal/mca/pmix/pmix4x/pmix/include/pmix_sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,20 @@ extern "C" {
typedef struct pmix_fabric_s {
/* user-supplied name for this fabric */
char *name;
/* revision - tracks how many times the
* fabric info has been updated. Used to detect
* that a change has occurred since the last
* time the data was accessed. Restricted to
* PMIx-internal use */
uint64_t revision;
/* PMIx server-defined object for internal use */
/* communication cost array - the number of vertices
* (nverts) equals the number of interfaces in the
* fabric. This equates to the number of columns & rows
* in the commcost array as the matrix is symmetric */
uint16_t **commcost;
uint32_t nverts;
/* object pointer for use by the PMIx server library */
void *module;
} pmix_fabric_t;

/* convenience macros to support pmix_fabric_t */
#define PMIX_FABRIC_CONSTRUCT(x) \
memset(x, 0, sizeof(pmix_fabric_t))

/* Register for access to fabric-related information, including
* communication cost matrix. This call must be made prior to
* requesting information from a fabric.
Expand All @@ -83,9 +87,9 @@ typedef struct pmix_fabric_s {
* utilize this field
*
* directives - an optional array of values indicating desired
* behaviors and/or fabric to be accessed via
* the returned struct. If NULL, then the highest
* priority available fabric will return the struct
* behaviors and/or fabric to be accessed. If NULL,
* then the highest priority available fabric will
* be used
*
* ndirs - number of elements in the directives array
*
Expand All @@ -106,62 +110,9 @@ PMIX_EXPORT pmix_status_t PMIx_server_register_fabric(pmix_fabric_t *fabric,
*/
PMIX_EXPORT pmix_status_t PMIx_server_deregister_fabric(pmix_fabric_t *fabric);

/* Get the number of vertices in the provided fabric.
* To avoid blocking the caller, this function will
* always return immediately, returning a PMIX_ERR_RESOURCE_BUSY
* status if the matrix is in the process of being updated.
*
* fabric - pointer to the pmix_fabric_t struct provided
* to the registration function
*
* nverts - pointer to the location where the number of
* vertices is to be returned
*
* Return values include:
*
* PMIX_SUCCESS - indicates return of a valid value
* PMIX_ERR_RESOURCE_BUSY - matrix is being updated
* PMIX_ERR_FABRIC_UPDATED - fabric info has been updated since
* last call involving this pmix_fabric_t
*/
PMIX_EXPORT pmix_status_t PMIx_server_get_num_vertices(pmix_fabric_t *fabric,
uint32_t *nverts);

/* Obtain communication cost for messages transmitted from indicated
* source to destination across the provided fabric - i.e.,
* the value of the (src,dest) entry of that fabric's communication
* cost matrix. To avoid blocking the caller, this function will
* always return immediately, returning a PMIX_ERR_RESOURCE_BUSY
* status if the matrix is in the process of being updated.
*
* fabric - pointer to the pmix_fabric_t struct provided to
* the registration function
*
* src - the index of the originating vertex for the communication
*
* dest - the index of the destination vertex for the communication
*
* cost - pointer to the location where the cost is to be returned
*
* Return values include:
*
* PMIX_SUCCESS - indicates return of a valid value
* PMIX_ERR_BAD_PARAM - src and/or dest is out of bounds
* PMIX_ERR_RESOURCE_BUSY - matrix is being updated
* PMIX_ERR_FABRIC_UPDATED - fabric info has been updated since
* last call involving this pmix_fabric_t
*/
PMIX_EXPORT pmix_status_t PMIx_server_get_comm_cost(pmix_fabric_t *fabric,
uint32_t src, uint32_t dest,
uint16_t *cost);

/* Given a communication cost matrix index, return the corresponding
* vertex info in the provided fabric and the name of the node upon
/* Given a communication cost matrix index for a specified fabric,
* return the corresponding vertex info and the name of the node upon
* which it resides.
* If the PMIX_ERR_RESOURCE_BUSY or PMIX_ERR_FABRIC_UPDATED status is
* returned, then the caller should update their cost information
* before re-issuing this request to ensure accurate correlation
* between cost and LID
*
* fabric - pointer to the pmix_fabric_t struct provided to
* the registration function
Expand All @@ -179,20 +130,14 @@ PMIX_EXPORT pmix_status_t PMIx_server_get_comm_cost(pmix_fabric_t *fabric,
*
* PMIX_SUCCESS - indicates return of a valid value
* PMIX_ERR_BAD_PARAM - provided index is out of bounds
* PMIX_ERR_RESOURCE_BUSY - matrix is being updated
* PMIX_ERR_FABRIC_UPDATED - fabric info has been updated since
* last call involving this pmix_fabric_t
*/
PMIX_EXPORT pmix_status_t PMIx_server_get_vertex_info(pmix_fabric_t *fabric,
uint32_t i, pmix_value_t *vertex,
char **nodename);

/* Given vertex info, return the corresponding communication cost matrix
* index and the name of the node upon which it resides.
* If the PMIX_ERR_RESOURCE_BUSY or PMIX_ERR_FABRIC_UPDATED status is
* returned, then the caller should update their cost information
* before re-issuing this request to ensure accurate correlation
* between cost and LID
/* Given vertex info and the name of the device upon which that
* vertex resides, return the corresponding communication cost matrix
* index
*
* fabric - pointer to the pmix_fabric_t struct provided to
* the registration function
Expand All @@ -201,10 +146,6 @@ PMIX_EXPORT pmix_status_t PMIx_server_get_vertex_info(pmix_fabric_t *fabric,
*
* i - pointer to the location where the index is to be returned
*
* nodename - pointer to the location where the string nodename
* is to be returned. The caller is responsible for
* releasing the string when done
*
* Return values include:
*
* PMIX_SUCCESS - indicates return of a valid value
Expand All @@ -214,8 +155,7 @@ PMIX_EXPORT pmix_status_t PMIx_server_get_vertex_info(pmix_fabric_t *fabric,
* last call involving this pmix_fabric_t
*/
PMIX_EXPORT pmix_status_t PMIx_server_get_index(pmix_fabric_t *fabric,
pmix_value_t *vertex, uint32_t *i,
char **nodename);
pmix_value_t *vertex, uint32_t *i);

#if defined(c_plusplus) || defined(__cplusplus)
}
Expand Down
Loading