diff --git a/README b/README index fb7405036a..88765ec5e5 100644 --- a/README +++ b/README @@ -988,10 +988,6 @@ RUN-TIME SYSTEM SUPPORT Force the building of for the Cray Alps run-time environment. If Alps support cannot be found, configure will abort. ---with-loadleveler - Force the building of LoadLeveler scheduler support. If LoadLeveler - support cannot be found, configure will abort. - --with-lsf= Specify the directory where the LSF libraries and header files are located. This option is generally only necessary if the LSF headers diff --git a/config/orte_check_loadleveler.m4 b/config/orte_check_loadleveler.m4 deleted file mode 100644 index a8d609981b..0000000000 --- a/config/orte_check_loadleveler.m4 +++ /dev/null @@ -1,53 +0,0 @@ -# -*- shell-script -*- -# -# 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) 2006-2009 Cisco Systems, Inc. All rights reserved. -# Copyright (c) 2011 IBM Corporation. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# 1. if --with-loadleveler is given, always build -# 2. if --without-loadleveler is given, never build -# 3. if neither is given, build if-and-only-if the OS is Linux or AIX - -# ORTE_CHECK_LOADLEVELER(prefix, [action-if-found], [action-if-not-found]) -# -------------------------------------------------------- -AC_DEFUN([ORTE_CHECK_LOADLEVELER],[ - AC_ARG_WITH([loadleveler], - [AC_HELP_STRING([--with-loadleveler], - [Build LoadLeveler scheduler component (default: yes)])]) - - if test "$with_loadleveler" = "no" ; then - orte_check_loadleveler_happy="no" - elif test "$with_loadleveler" = "" ; then - # unless user asked, only build LoadLeveler component on Linux - # and AIX (these are the platforms that LoadLeveler supports) - case $host in - *-linux*|*-aix*) - orte_check_loadleveler_happy="yes" - ;; - *) - orte_check_loadleveler_happy="no" - ;; - esac - else - orte_check_loadleveler_happy="yes" - fi - - AS_IF([test "$orte_check_loadleveler_happy" = "yes"], - [$2], - [$3]) -]) diff --git a/contrib/platform/embedded/debug b/contrib/platform/embedded/debug index 313b6dfac8..a8a12f7b85 100644 --- a/contrib/platform/embedded/debug +++ b/contrib/platform/embedded/debug @@ -22,7 +22,6 @@ with_devel_headers=yes with_alps=no with_ftb=no with_sge=no -with_loadleveler=no with_xgrid=no with_slurm=no with_tm=no diff --git a/contrib/platform/embedded/optimized b/contrib/platform/embedded/optimized index b250c9b47f..163c054553 100644 --- a/contrib/platform/embedded/optimized +++ b/contrib/platform/embedded/optimized @@ -22,7 +22,6 @@ with_devel_headers=yes with_alps=no with_ftb=no with_sge=no -with_loadleveler=no with_xgrid=no with_slurm=no with_tm=no diff --git a/orte/mca/ras/loadleveler/Makefile.am b/orte/mca/ras/loadleveler/Makefile.am deleted file mode 100644 index fb7c1e32fa..0000000000 --- a/orte/mca/ras/loadleveler/Makefile.am +++ /dev/null @@ -1,53 +0,0 @@ -# -# 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) 2010 Cisco Systems, Inc. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -AM_CPPFLAGS = $(ras_loadleveler_CPPFLAGS) - -sources = \ - ras_loadleveler.h \ - ras_loadleveler_component.c \ - ras_loadleveler_module.c - - -# Make the output library in this directory, and name it either -# mca__.la (for DSO builds) or libmca__.la -# (for static builds). - -if MCA_BUILD_orte_ras_loadleveler_DSO -lib = -lib_sources = -component = mca_ras_loadleveler.la -component_sources = $(sources) -else -lib = libmca_ras_loadleveler.la -lib_sources = $(sources) -component = -component_sources = -endif - -mcacomponentdir = $(ortelibdir) -mcacomponent_LTLIBRARIES = $(component) -mca_ras_loadleveler_la_SOURCES = $(component_sources) -mca_ras_loadleveler_la_LDFLAGS = -module -avoid-version $(ras_loadleveler_LDFLAGS) -mca_ras_loadleveler_la_LIBADD = $(ras_loadleveler_LIBS) - -noinst_LTLIBRARIES = $(lib) -libmca_ras_loadleveler_la_SOURCES = $(lib_sources) -libmca_ras_loadleveler_la_LDFLAGS = -module -avoid-version $(ras_loadleveler_LDFLAGS) -libmca_ras_loadleveler_la_LIBADD = $(ras_loadleveler_LIBS) diff --git a/orte/mca/ras/loadleveler/configure.m4 b/orte/mca/ras/loadleveler/configure.m4 deleted file mode 100644 index 5106ec76e5..0000000000 --- a/orte/mca/ras/loadleveler/configure.m4 +++ /dev/null @@ -1,40 +0,0 @@ -# -*- shell-script -*- -# -# 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) 2009-2010 Cisco Systems, Inc. All rights reserved. -# Copyright (c) 2011-2013 Los Alamos National Security, LLC. -# All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# MCA_ras_loadleveler_CONFIG([action-if-found], [action-if-not-found]) -# ----------------------------------------------------------- -AC_DEFUN([MCA_orte_ras_loadleveler_CONFIG],[ - AC_CONFIG_FILES([orte/mca/ras/loadleveler/Makefile]) - - ORTE_CHECK_LOADLEVELER([ras_loadleveler], [ras_loadleveler_good=1], [ras_loadleveler_good=0]) - - # if check worked, set wrapper flags if so. - # Evaluate succeed / fail - AS_IF([test "$ras_loadleveler_good" = "1"], - [$1], - [$2]) - - # set build flags to use in makefile - AC_SUBST([ras_loadleveler_CPPFLAGS]) - AC_SUBST([ras_loadleveler_LDFLAGS]) - AC_SUBST([ras_loadleveler_LIBS]) -])dnl diff --git a/orte/mca/ras/loadleveler/owner.txt b/orte/mca/ras/loadleveler/owner.txt deleted file mode 100644 index af4ebbf6a6..0000000000 --- a/orte/mca/ras/loadleveler/owner.txt +++ /dev/null @@ -1,7 +0,0 @@ -# -# owner/status file -# owner: institution that is responsible for this package -# status: e.g. active, maintenance, unmaintained -# -owner: IBM -status: maintenance diff --git a/orte/mca/ras/loadleveler/ras_loadleveler.h b/orte/mca/ras/loadleveler/ras_loadleveler.h deleted file mode 100644 index 7e4410d167..0000000000 --- a/orte/mca/ras/loadleveler/ras_loadleveler.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ -/** - * @file - * - * Resource Allocation (Loadleveler) - */ -#ifndef ORTE_RAS_LOADLEVELER_H -#define ORTE_RAS_LOADLEVELER_H - -#include "orte_config.h" -#include "orte/mca/ras/ras.h" -#include "orte/mca/ras/base/base.h" - -BEGIN_C_DECLS - - ORTE_DECLSPEC extern orte_ras_base_component_t mca_ras_loadleveler_component; - ORTE_DECLSPEC extern orte_ras_base_module_t orte_ras_loadleveler_module; - -END_C_DECLS - -#endif diff --git a/orte/mca/ras/loadleveler/ras_loadleveler_component.c b/orte/mca/ras/loadleveler/ras_loadleveler_component.c deleted file mode 100644 index e7aff9df9a..0000000000 --- a/orte/mca/ras/loadleveler/ras_loadleveler_component.c +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ -/* - * Copyright (c) 2004-2008 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) 2015 Los Alamos National Security, LLC. All rights - * reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "orte_config.h" - -#include "opal/mca/base/base.h" -#include "orte/runtime/orte_globals.h" -#include "orte/util/name_fns.h" - -#include "orte/mca/ras/base/ras_private.h" -#include "ras_loadleveler.h" - - -/* - * Local variables - */ -static int param_priority; - - -/* - * Local functions - */ -static int orte_ras_loadleveler_register(void); -static int orte_ras_loadleveler_open(void); -static int orte_ras_loadleveler_component_query(mca_base_module_t **module, int *priority); - -orte_ras_base_component_t mca_ras_loadleveler_component = { - /* First, the mca_base_component_t struct containing meta - information about the component itself */ - .base_version = { - ORTE_RAS_BASE_VERSION_2_0_0, - - /* Component name and version */ - .mca_component_name = "loadleveler", - MCA_BASE_MAKE_VERSION(component, ORTE_MAJOR_VERSION, ORTE_MINOR_VERSION, - ORTE_RELEASE_VERSION), - - /* Component open and close functions */ - .mca_open_component = orte_ras_loadleveler_open, - .mca_query_component = orte_ras_loadleveler_component_query, - .mca_register_component_params = orte_ras_loadleveler_register, - }, - .base_data = { - /* The component is checkpoint ready */ - MCA_BASE_METADATA_PARAM_CHECKPOINT - }, -}; - -static int orte_ras_loadleveler_register(void) -{ - /* for now we set the priority lower then the priority of the POE RAS - * so that it is used whenever the LOADL_PROCESSOR_LIST is actually set */ - param_priority = 90; - (void) mca_base_component_var_register(&mca_ras_loadleveler_component.base_version, - "priority", "Priority of the loadleveler ras component", - MCA_BASE_VAR_TYPE_INT, NULL, 0, 0, - OPAL_INFO_LVL_9, - MCA_BASE_VAR_SCOPE_READONLY, ¶m_priority); - - return ORTE_SUCCESS; -} - -static int orte_ras_loadleveler_open(void) -{ - return ORTE_SUCCESS; -} - -static int orte_ras_loadleveler_component_query(mca_base_module_t **module, int *priority) -{ - /* Are we running under a LOADLEVELER job? */ - if (NULL != getenv("LOADL_STEP_ID")) { - *priority = param_priority; - OPAL_OUTPUT_VERBOSE((2, orte_ras_base_framework.framework_output, - "%s ras:loadleveler: available for selection", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME))); - *module = (mca_base_module_t *) &orte_ras_loadleveler_module; - return ORTE_SUCCESS; - } - - /* Sadly, no */ - OPAL_OUTPUT_VERBOSE((2, orte_ras_base_framework.framework_output, - "%s ras:loadleveler: NOT available for selection", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME))); - *module = NULL; - return ORTE_ERROR; -} - diff --git a/orte/mca/ras/loadleveler/ras_loadleveler_module.c b/orte/mca/ras/loadleveler/ras_loadleveler_module.c deleted file mode 100644 index 558a2a133f..0000000000 --- a/orte/mca/ras/loadleveler/ras_loadleveler_module.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (c) 2004-2009 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) 2006 Cisco Systems, Inc. All rights reserved. - * Copyright (c) 2010-2016 IBM Corporation. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - */ - -#include "orte_config.h" - -#include -#include -#include - -#include "opal/util/argv.h" -#include "opal/util/output.h" -#include "opal/util/net.h" - -#include "orte/mca/errmgr/errmgr.h" -#include "orte/runtime/orte_globals.h" -#include "orte/constants.h" - -#include "orte/mca/ras/base/ras_private.h" -#include "ras_loadleveler.h" - - -/* - * Local functions - */ -static int orte_ras_loadleveler_allocate(orte_job_t *jdata, opal_list_t *nodes); -static int orte_ras_loadleveler_finalize(void); - -static int orte_ras_loadleveler_discover(opal_list_t *nodelist); -static int ll_getline(FILE *fp, char *input); - -#define LL_FILE_MAX_LINE_LENGTH 512 - -/* - * Global variable - */ -orte_ras_base_module_t orte_ras_loadleveler_module = { - NULL, - orte_ras_loadleveler_allocate, - NULL, - orte_ras_loadleveler_finalize -}; - - -/* - * Discover available (pre-allocated) nodes. Allocate the - * requested number of nodes/process slots to the job. - */ -static int orte_ras_loadleveler_allocate(orte_job_t *jdata, opal_list_t *nodes) -{ - int ret = ORTE_SUCCESS; - - if (ORTE_SUCCESS != (ret = orte_ras_loadleveler_discover(nodes))) { - ORTE_ERROR_LOG(ret); - return ret; - } - - /* If we didn't find anything, then this - * is an unrecoverable error - report it - */ - if (opal_list_is_empty(nodes)) { - opal_output(orte_ras_base_framework.framework_output, - "ras:loadleveler:allocate: No nodes were found in the LOADL_HOSTFILE - %s", - getenv("LOADL_HOSTFILE")); - return ORTE_ERR_NOT_FOUND; - } - - return ret; -} - -/* - * There's really nothing to do here - */ -static int orte_ras_loadleveler_finalize(void) -{ - OPAL_OUTPUT_VERBOSE((1, orte_ras_base_framework.framework_output, - "ras:loadleveler:finalize: success (nothing to do)")); - return ORTE_SUCCESS; -} - -/** - * Discover the available resources. Obtain directly from LoadLeveler (and - * therefore have no need to validate) -- ignore hostfile or any other - * user-specified parameters. - */ -static int orte_ras_loadleveler_discover(opal_list_t* nodelist) -{ - orte_node_t *node; - opal_list_item_t* item; - FILE *fp; - char *hostname; - char *filename; - char input[LL_FILE_MAX_LINE_LENGTH]; - char *ptr; - - /* Ignore anything that the user already specified -- we're - getting nodes only from LoadLeveler. */ - filename = getenv("LOADL_HOSTFILE"); - if(NULL == filename) { - opal_output(orte_ras_base_framework.framework_output, - "ras:loadleveler:allocate:discover: LOADL_HOSTFILE not set. " - "Unable to discover allocated nodes."); - return ORTE_ERROR; - } - fp = fopen(filename, "r"); - if (NULL == fp) { - ORTE_ERROR_LOG(ORTE_ERR_FILE_OPEN_FAILURE); - return ORTE_ERR_FILE_OPEN_FAILURE; - } - - /* Iterate through all the nodes and make an entry for each */ - while (0 != ll_getline(fp, input)) { - hostname = strdup(input); - if( !orte_keep_fqdn_hostnames && !opal_net_isaddr(hostname) ) { - if (NULL != (ptr = strchr(hostname, '.'))) { - *ptr = '\0'; - } - } - - OPAL_OUTPUT_VERBOSE((1, orte_ras_base_framework.framework_output, - "%s ras:loadleveler:allocate:discover: got hostname %s", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), hostname)); - - /* Remember that LoadLeveler may list the same node more than once. - So we have to check for duplicates. */ - for (item = opal_list_get_first(nodelist); - opal_list_get_end(nodelist) != item; - item = opal_list_get_next(item)) { - node = (orte_node_t*) item; - if (0 == strcmp(node->name, hostname)) { - ++node->slots; - - OPAL_OUTPUT_VERBOSE((1, orte_ras_base_framework.framework_output, - "%s ras:loadleveler:allocate:discover: found -- bumped slots to %d", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), node->slots)); - break; - } - } - - /* Did we find it? */ - if (opal_list_get_end(nodelist) == item) { - /* Nope -- didn't find it, so add a new item to the list */ - OPAL_OUTPUT_VERBOSE((1, orte_ras_base_framework.framework_output, - "%s ras:loadleveler:allocate:discover: not found -- added to list", - ORTE_NAME_PRINT(ORTE_PROC_MY_NAME))); - - node = OBJ_NEW(orte_node_t); - node->name = hostname; - node->state = ORTE_NODE_STATE_UP; - node->slots_inuse = 0; - node->slots_max = 0; - node->slots = 1; - opal_list_append(nodelist, &node->super); - } else { - /* Yes, so we need to free the hostname that came back */ - free(hostname); - } - } - fclose(fp); - - return ORTE_SUCCESS; -} - -static int ll_getline(FILE *fp, char *input) -{ - char *ret; - - ret = fgets(input, LL_FILE_MAX_LINE_LENGTH, fp); - if (NULL != ret) { - input[strlen(input)-1] = '\0'; /* remove newline */ - return 1; - } - - return 0; -}