diff -Nru slurm-llnl-2.2.7/aclocal.m4 slurm-llnl-2.3.2/aclocal.m4 --- slurm-llnl-2.2.7/aclocal.m4 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/aclocal.m4 2011-12-05 17:20:08.000000000 +0000 @@ -353,7 +353,7 @@ Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. -_PKG_TEXT])dnl +_PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) @@ -364,7 +364,7 @@ _PKG_TEXT -To get pkg-config, see .])dnl +To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS @@ -1367,6 +1367,7 @@ m4_include([auxdir/x_ac_hwloc.m4]) m4_include([auxdir/x_ac_iso.m4]) m4_include([auxdir/x_ac_lua.m4]) +m4_include([auxdir/x_ac_man2html.m4]) m4_include([auxdir/x_ac_munge.m4]) m4_include([auxdir/x_ac_ncurses.m4]) m4_include([auxdir/x_ac_pam.m4]) @@ -1377,5 +1378,6 @@ m4_include([auxdir/x_ac_setproctitle.m4]) m4_include([auxdir/x_ac_sgi_job.m4]) m4_include([auxdir/x_ac_slurm_ssl.m4]) +m4_include([auxdir/x_ac_srun.m4]) m4_include([auxdir/x_ac_sun_const.m4]) m4_include([auxdir/x_ac_xcpu.m4]) diff -Nru slurm-llnl-2.2.7/auxdir/ltmain.sh slurm-llnl-2.3.2/auxdir/ltmain.sh --- slurm-llnl-2.2.7/auxdir/ltmain.sh 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/ltmain.sh 2011-12-05 17:20:08.000000000 +0000 @@ -65,7 +65,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1 +# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu3 # automake: $automake_version # autoconf: $autoconf_version # @@ -73,7 +73,7 @@ PROGRAM=ltmain.sh PACKAGE=libtool -VERSION="2.2.6b Debian-2.2.6b-2ubuntu1" +VERSION="2.2.6b Debian-2.2.6b-2ubuntu3" TIMESTAMP="" package_revision=1.3017 diff -Nru slurm-llnl-2.2.7/auxdir/Makefile.am slurm-llnl-2.3.2/auxdir/Makefile.am --- slurm-llnl-2.2.7/auxdir/Makefile.am 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -15,6 +15,7 @@ x_ac_bluegene.m4 \ x_ac_cflags.m4 \ x_ac_cray.m4 \ + x_ac_databases.m4 \ x_ac_debug.m4 \ x_ac_elan.m4 \ x_ac_env.m4 \ @@ -22,12 +23,17 @@ x_ac_gpl_licensed.m4 \ x_ac_hwloc.m4 \ x_ac_iso.m4 \ - x_ac_pam.m4 \ + x_ac_lua.m4 \ + x_ac_man2html.m4 \ x_ac_munge.m4 \ x_ac_ncurses.m4 \ x_ac_pam.m4 \ + x_ac_printf_null.m4 \ x_ac_ptrace.m4 \ x_ac_readline.m4 \ x_ac_setproctitle.m4 \ + x_ac_sgi_job.m4 \ x_ac_slurm_ssl.m4 \ - x_ac_sun_const.m4 + x_ac_srun.m4 \ + x_ac_sun_const.m4 \ + x_ac_xcpu.m4 diff -Nru slurm-llnl-2.2.7/auxdir/Makefile.in slurm-llnl-2.3.2/auxdir/Makefile.in --- slurm-llnl-2.2.7/auxdir/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -61,6 +61,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -71,6 +72,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -92,7 +94,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -129,6 +134,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -186,6 +192,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -221,6 +228,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -284,6 +292,7 @@ x_ac_bluegene.m4 \ x_ac_cflags.m4 \ x_ac_cray.m4 \ + x_ac_databases.m4 \ x_ac_debug.m4 \ x_ac_elan.m4 \ x_ac_env.m4 \ @@ -291,15 +300,20 @@ x_ac_gpl_licensed.m4 \ x_ac_hwloc.m4 \ x_ac_iso.m4 \ - x_ac_pam.m4 \ + x_ac_lua.m4 \ + x_ac_man2html.m4 \ x_ac_munge.m4 \ x_ac_ncurses.m4 \ x_ac_pam.m4 \ + x_ac_printf_null.m4 \ x_ac_ptrace.m4 \ x_ac_readline.m4 \ x_ac_setproctitle.m4 \ + x_ac_sgi_job.m4 \ x_ac_slurm_ssl.m4 \ - x_ac_sun_const.m4 + x_ac_srun.m4 \ + x_ac_sun_const.m4 \ + x_ac_xcpu.m4 all: all-am diff -Nru slurm-llnl-2.2.7/auxdir/slurm.m4 slurm-llnl-2.3.2/auxdir/slurm.m4 --- slurm-llnl-2.2.7/auxdir/slurm.m4 2011-06-10 16:55:35.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/slurm.m4 2011-12-05 17:20:08.000000000 +0000 @@ -204,7 +204,7 @@ SLURM_RELEASE="unstable svn build $DATE" SLURM_VERSION_STRING="$SLURM_MAJOR.$SLURM_MINOR ($SLURM_RELEASE)" else - SLURM_RELEASE="`echo $RELEASE | sed 's/^.*\.//'`" + SLURM_RELEASE="`echo $RELEASE | sed 's/^0\.//'`" SLURM_VERSION_STRING="$SLURM_MAJOR.$SLURM_MINOR.$SLURM_MICRO" test $RELEASE = "1" || SLURM_VERSION_STRING="$SLURM_VERSION_STRING-$SLURM_RELEASE" fi @@ -225,4 +225,25 @@ ]) dnl AC_SLURM_VERSION +dnl +dnl Test if we want to include rpath in the executables (default=yes) +dnl Doing so is generally discouraged due to problems this causes in upgrading +dnl software and general incompatability issues +dnl +AC_DEFUN([X_AC_RPATH], [ + ac_with_rpath=yes + AC_MSG_CHECKING([whether to include rpath in build]) + AC_ARG_WITH( + [rpath], + AS_HELP_STRING(--without-rpath, Do not include rpath in build), + [ case "$withval" in + yes) ac_with_rpath=yes ;; + no) ac_with_rpath=no ;; + *) AC_MSG_RESULT([doh!]) + AC_MSG_ERROR([bad value "$withval" for --without-rpath]) ;; + esac + ] + ) + AC_MSG_RESULT([$ac_with_rpath]) +]) diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_bluegene.m4 slurm-llnl-2.3.2/auxdir/x_ac_bluegene.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_bluegene.m4 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_bluegene.m4 2011-12-05 17:20:08.000000000 +0000 @@ -15,6 +15,7 @@ AC_DEFUN([X_AC_BGL], [ + ac_real_bluegene_loaded=no ac_bluegene_loaded=no AC_ARG_WITH(db2-dir, AS_HELP_STRING(--with-db2-dir=PATH,Specify path to parent directory of DB2 library), [ trydb2dir=$withval ]) @@ -109,6 +110,7 @@ AC_DEFINE_UNQUOTED(BG_SERIAL, "$bg_serial", [Define the BG_SERIAL value]) #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes + ac_real_bluegene_loaded=yes fi AC_SUBST(BG_INCLUDES) @@ -193,7 +195,8 @@ AC_DEFINE_UNQUOTED(BG_SERIAL, "$bg_serial", [Define the BG_SERIAL value]) #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes - fi + ac_real_bluegene_loaded=yes + fi AC_SUBST(BG_INCLUDES) ]) @@ -212,6 +215,7 @@ if test "x$ac_bluegene_loaded" = "xyes" ; then bg_default_dirs="" elif test "x$bgq_emulation" = "xyes"; then + AC_DEFINE(HAVE_4D, 1, [Define to 1 if 4-dimensional architecture]) AC_DEFINE(SYSTEM_DIMENSIONS, 4, [4-dimensional schedulable architecture]) AC_DEFINE(HAVE_BG, 1, [Define to 1 if emulating or running on Blue Gene system]) AC_DEFINE(HAVE_BGQ, 1, [Define to 1 if emulating or running on Blue Gene/Q system]) @@ -220,11 +224,13 @@ bg_default_dirs="" #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes + ac_bgq_loaded=yes else bg_default_dirs="/bgsys/drivers/ppcfloor" fi libname=bgsched + loglibname=log4cxx for bg_dir in $trydb2dir "" $bg_default_dirs; do # Skip directories that don't exist @@ -232,49 +238,80 @@ continue; fi - soloc=$bg_dir/lib64/lib$libname.so + soloc=$bg_dir/hlcs/lib/lib$libname.so # Search for required BG API libraries in the directory if test -z "$have_bg_ar" -a -f "$soloc" ; then have_bgq_ar=yes - bg_ldflags="$bg_ldflags -L$bg_dir/lib64 -L/usr/lib64 -Wl,--unresolved-symbols=ignore-in-shared-libs -l$libname" + if test "$ac_with_rpath" = "yes"; then + bg_ldflags="$bg_ldflags -Wl,-rpath -Wl,$bg_dir/hlcs/lib -L$bg_dir/hlcs/lib -l$libname" + else + bg_ldflags="$bg_ldflags -L$bg_dir/hlcs/lib -l$libname" + fi + fi + + soloc=$bg_dir/extlib/lib/lib$loglibname.so + if test -z "$have_bg_ar" -a -f "$soloc" ; then + have_bgq_ar=yes + if test "$ac_with_rpath" = "yes"; then + bg_ldflags="$bg_ldflags -Wl,-rpath -Wl,$bg_dir/extlib/lib -L$bg_dir/extlib/lib -l$loglibname" + else + bg_ldflags="$bg_ldflags -L$bg_dir/extlib/lib -l$loglibname" + fi fi # Search for headers in the directory - if test -z "$have_bg_hdr" -a -f "$bg_dir/include/rm_api.h" ; then + if test -z "$have_bg_hdr" -a -f "$bg_dir/hlcs/include/bgsched/bgsched.h" ; then have_bgq_hdr=yes - bg_includes="-I$bg_dir/include" + bg_includes="-I$bg_dir/hlcs/include" fi + if test -z "$have_bg_hdr" -a -f "$bg_dir/extlib/include/log4cxx/logger.h" ; then + have_bgq_hdr=yes + bg_includes="$bg_includes -I$bg_dir/extlib/include" + fi done if test ! -z "$have_bgq_ar" -a ! -z "$have_bgq_hdr" ; then # ac_with_readline="no" # Test to make sure the api is good saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$saved_LDFLAGS $bg_ldflags -m64" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ int rm_set_serial(char *); ]], [[ rm_set_serial(""); ]])],[have_bgq_files=yes],[AC_MSG_ERROR(There is a problem linking to the BG/P api.)]) + LDFLAGS="$saved_LDFLAGS $bg_ldflags -m64 $bg_includes" + AC_LANG_PUSH(C++) + AC_LINK_IFELSE([AC_LANG_PROGRAM( + [[#include +#include ]], + [[ bgsched::init(""); + log4cxx::LoggerPtr logger_ptr(log4cxx::Logger::getLogger( "ibm" ));]])], + [have_bgq_files=yes], + [AC_MSG_ERROR(There is a problem linking to the BG/Q api.)]) + AC_LANG_POP(C++) LDFLAGS="$saved_LDFLAGS" fi if test ! -z "$have_bgq_files" ; then + BG_LDFLAGS="$bg_ldflags" BG_INCLUDES="$bg_includes" CFLAGS="$CFLAGS -m64" CXXFLAGS="$CXXFLAGS $CFLAGS" - AC_DEFINE(HAVE_3D, 1, [Define to 1 if 3-dimensional architecture]) - AC_DEFINE(SYSTEM_DIMENSIONS, 3, [3-dimensional architecture]) + AC_DEFINE(HAVE_4D, 1, [Define to 1 if 4-dimensional architecture]) + AC_DEFINE(SYSTEM_DIMENSIONS, 4, [4-dimensional architecture]) AC_DEFINE(HAVE_BG, 1, [Define to 1 if emulating or running on Blue Gene system]) AC_DEFINE(HAVE_BGQ, 1, [Define to 1 if emulating or running on Blue Gene/Q system]) AC_DEFINE(HAVE_FRONT_END, 1, [Define to 1 if running slurmd on front-end only]) AC_DEFINE(HAVE_BG_FILES, 1, [Define to 1 if have Blue Gene files]) - AC_DEFINE_UNQUOTED(BG_BRIDGE_SO, "$soloc", [Define the BG_BRIDGE_SO value]) + #AC_DEFINE_UNQUOTED(BG_BRIDGE_SO, "$soloc", [Define the BG_BRIDGE_SO value]) - AC_MSG_CHECKING(for BG serial value) - bg_serial="BGQ" - AC_ARG_WITH(bg-serial,, [bg_serial="$withval"]) - AC_MSG_RESULT($bg_serial) - AC_DEFINE_UNQUOTED(BG_SERIAL, "$bg_serial", [Define the BG_SERIAL value]) + AC_MSG_NOTICE([Running on a legitimate BG/Q system]) + # AC_MSG_CHECKING(for BG serial value) + # bg_serial="BGQ" + # AC_ARG_WITH(bg-serial,, [bg_serial="$withval"]) + # AC_MSG_RESULT($bg_serial) + # AC_DEFINE_UNQUOTED(BG_SERIAL, "$bg_serial", [Define the BG_SERIAL value]) #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes - fi + ac_real_bluegene_loaded=yes + ac_bgq_loaded=yes + fi AC_SUBST(BG_INCLUDES) + AC_SUBST(BG_LDFLAGS) ]) diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_cray.m4 slurm-llnl-2.3.2/auxdir/x_ac_cray.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_cray.m4 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_cray.m4 2011-12-05 17:20:08.000000000 +0000 @@ -6,45 +6,84 @@ # X_AC_CRAY # # DESCRIPTION: -# Test for Cray systems including XT with 3-D interconect -# Also test for the apbasil client (Cray's Batch Application Scheduler -# Interface Layer interface) -##***************************************************************************** +# Test for Cray XT and XE systems with 2-D/3-D interconnects. +# Tests for required libraries (native Cray systems only): +# * mySQL (relies on testing for mySQL presence earlier); +# * libexpat, needed for XML-RPC calls to Cray's BASIL +# (Batch Application Scheduler Interface Layer) interface. +#***************************************************************************** + +AC_DEFUN([X_AC_CRAY], +[ + ac_have_cray="no" + ac_have_real_cray="no" + ac_have_alps_emulation="no" + ac_have_cray_emulation="no" + + AC_ARG_WITH( + [alps-emulation], + AS_HELP_STRING(--with-alps-emulation,Run SLURM against an emulated Alps system - requires option cray.conf @<:@default=no@:>@), + [test "$withval" = no || ac_have_alps_emulation=yes], + [ac_have_alps_emulation=no]) -AC_DEFUN([X_AC_CRAY], [ - AC_MSG_CHECKING([for Cray XT]) AC_ARG_ENABLE( - [cray-xt], - AS_HELP_STRING(--enable-cray-xt,enable Cray XT system support), - [ case "$enableval" in - yes) x_ac_cray_xt=yes ;; - no) x_ac_cray_xt=no ;; - *) AC_MSG_RESULT([doh!]) - AC_MSG_ERROR([bad value "$enableval" for --enable-cray-xt]) ;; - esac - ], - [x_ac_cray_xt=no] + [cray-emulation], + AS_HELP_STRING(--enable-cray-emulation,Run SLURM in an emulated Cray mode), + [ case "$enableval" in + yes) ac_have_cray_emulation="yes" ;; + no) ac_have_cray_emulation="no" ;; + *) AC_MSG_ERROR([bad value "$enableval" for --enable-cray-emulation]) ;; + esac ] ) - if test "$x_ac_cray_xt" = yes; then - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_3D, 1, [Define to 1 if 3-dimensional architecture]) - AC_DEFINE(SYSTEM_DIMENSIONS, 3, [3-dimensional architecture]) - AC_DEFINE(HAVE_CRAY,1,[Define if Cray system]) - AC_DEFINE(HAVE_FRONT_END, 1, [Define to 1 if running slurmd on front-end only]) + if test "$ac_have_alps_emulation" = "yes"; then + ac_have_cray="yes" + AC_MSG_NOTICE([Running A Cray system against an Alps emulation]) + AC_DEFINE(HAVE_ALPS_EMULATION, 1, [Define to 1 if running against an Alps emulation]) + elif test "$ac_have_cray_emulation" = "yes"; then + ac_have_cray="yes" + AC_MSG_NOTICE([Running in Cray emulation mode]) + AC_DEFINE(HAVE_CRAY_EMULATION, 1, [Define to 1 for emulating a Cray XT/XE system]) else - AC_MSG_RESULT([no]) + # Check for a Cray-specific file: + # * older XT systems use an /etc/xtrelease file + # * newer XT/XE systems use an /etc/opt/cray/release/xtrelease file + # * both have an /etc/xthostname + AC_MSG_CHECKING([whether this is a native Cray XT or XE system or have ALPS simulator]) + + if test -f /etc/xtrelease || test -d /etc/opt/cray/release; then + ac_have_cray="yes" + ac_have_real_cray="yes" + AC_DEFINE(HAVE_REAL_CRAY, 1, [Define to 1 for running on a real Cray XT/XE system]) + fi + AC_MSG_RESULT([$ac_have_cray]) fi - AC_ARG_WITH(apbasil, AS_HELP_STRING(--with-apbasil=PATH,Specify path to apbasil command), [ try_apbasil=$withval ]) - apbasil_default_locs="/usr/bin/apbasil" - for apbasil_loc in $try_apbasil "" $apbasil_default_locs; do - if test -z "$have_apbasil" -a -x "$apbasil_loc" ; then - have_apbasil=$apbasil_loc + if test "$ac_have_cray" = "yes"; then + # libexpat is always required for the XML-RPC interface + AC_CHECK_HEADER(expat.h, [], + AC_MSG_ERROR([Cray BASIL requires expat headers/rpm])) + AC_CHECK_LIB(expat, XML_ParserCreate, [], + AC_MSG_ERROR([Cray BASIL requires libexpat.so (i.e. libexpat1-dev)])) + + if test "$ac_have_real_cray" = "yes"; then + AC_CHECK_LIB([job], [job_getjid], [], + AC_MSG_ERROR([Need cray-job (usually in /opt/cray/job/default)])) fi - done - if test ! -z "$have_apbasil" ; then - AC_DEFINE_UNQUOTED(APBASIL_LOC, "$have_apbasil", [Define the apbasil command location]) + + if test -z "$MYSQL_CFLAGS" || test -z "$MYSQL_LIBS"; then + AC_MSG_ERROR([Cray BASIL requires the cray-MySQL-devel-enterprise rpm]) + fi + + AC_DEFINE(HAVE_3D, 1, [Define to 1 if 3-dimensional architecture]) + AC_DEFINE(SYSTEM_DIMENSIONS, 3, [3-dimensional architecture]) + AC_DEFINE(HAVE_FRONT_END, 1, [Define to 1 if running slurmd on front-end only]) + AC_DEFINE(HAVE_CRAY, 1, [Define to 1 for Cray XT/XE systems]) + AC_DEFINE(SALLOC_KILL_CMD, 1, [Define to 1 for salloc to kill child processes at job termination]) + AC_DEFINE(SALLOC_RUN_FOREGROUND, 1, [Define to 1 to require salloc execution in the foreground.]) fi + AM_CONDITIONAL(HAVE_CRAY, test "$ac_have_cray" = "yes") + AM_CONDITIONAL(HAVE_REAL_CRAY, test "$ac_have_real_cray" = "yes") + AM_CONDITIONAL(HAVE_ALPS_EMULATION, test "$ac_have_alps_emulation" = "yes") + AM_CONDITIONAL(HAVE_CRAY_EMULATION, test "$ac_have_cray_emulation" = "yes") ]) - diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_debug.m4 slurm-llnl-2.3.2/auxdir/x_ac_debug.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_debug.m4 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_debug.m4 2011-12-05 17:20:08.000000000 +0000 @@ -33,6 +33,7 @@ ) if test "$x_ac_debug" = yes; then test "$GCC" = yes && CFLAGS="$CFLAGS -Wall -fno-strict-aliasing" + test "$GXX" = yes && CXXFLAGS="$CXXFLAGS -Wall -fno-strict-aliasing" else AC_DEFINE([NDEBUG], [1], [Define to 1 if you are building a production release.] @@ -91,6 +92,24 @@ fi AC_MSG_RESULT([${x_ac_partial_attach=no}]) + AC_MSG_CHECKING([whether salloc should kill child processes at job termination]) + AC_ARG_ENABLE( + [salloc-kill-cmd], + AS_HELP_STRING(--enable-salloc-kill-cmd,salloc should kill child processes at job termination), + [ case "$enableval" in + yes) x_ac_salloc_kill_cmd=yes ;; + no) x_ac_salloc_kill_cmd=no ;; + *) AC_MSG_RESULT([doh!]) + AC_MSG_ERROR([bad value "$enableval" for --enable-salloc-kill-cmd]) ;; + esac + ] + ) + if test "$x_ac_salloc_kill_cmd" = yes; then + AC_DEFINE(SALLOC_KILL_CMD, 1, [Define to 1 for salloc to kill child processes at job termination]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi AC_MSG_CHECKING([whether to disable salloc execution in the background]) AC_ARG_ENABLE( diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_lua.m4 slurm-llnl-2.3.2/auxdir/x_ac_lua.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_lua.m4 2011-06-10 16:55:35.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_lua.m4 2011-12-05 17:20:08.000000000 +0000 @@ -22,9 +22,9 @@ if test "x$x_ac_have_lua" = "xyes"; then saved_CFLAGS="$CFLAGS" - saved_LDFLAGS="$LDFLAGS" + saved_LIBS="$LIBS" CFLAGS="$CFLAGS $lua_CFLAGS" - LDFLAGS="$LDFLAGS $lua_LIBS" + LIBS="$LIBS $lua_LIBS" AC_MSG_CHECKING([for whether we can link to liblua]) AC_TRY_LINK( [#include @@ -37,7 +37,7 @@ AC_MSG_RESULT([$x_ac_have_lua]) CFLAGS="$saved_CFLAGS" - LDFLAGS="$saved_LDFLAGS" + LIBS="$saved_LIBS" fi AM_CONDITIONAL(HAVE_LUA, test "x$x_ac_have_lua" = "xyes") diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_man2html.m4 slurm-llnl-2.3.2/auxdir/x_ac_man2html.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_man2html.m4 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_man2html.m4 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,23 @@ +##***************************************************************************** +# AUTHOR: +# Don Lipari +# +# SYNOPSIS: +# X_AC_MAN2HTML +# +# DESCRIPTION: +# Test for the presence of the man2html command. +# +##***************************************************************************** + +AC_DEFUN([X_AC_MAN2HTML], +[ + AC_MSG_CHECKING([whether man2html is available]) + AC_CHECK_PROG(ac_have_man2html, man2html, [yes], [no], [$bindir:/usr/bin:/usr/local/bin]) + + AM_CONDITIONAL(HAVE_MAN2HTML, test "x$ac_have_man2html" == "xyes") + + if test "x$ac_have_man2html" != "xyes" ; then + AC_MSG_NOTICE([Unable to build man page html files without man2html]) + fi +]) diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_munge.m4 slurm-llnl-2.3.2/auxdir/x_ac_munge.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_munge.m4 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_munge.m4 2011-12-05 17:20:08.000000000 +0000 @@ -36,7 +36,7 @@ test -f "$d/include/munge.h" || continue for bit in $_x_ac_munge_libs; do test -d "$d/$bit" || continue - + _x_ac_munge_libs_save="$LIBS" LIBS="-L$d/$bit -lmunge $LIBS" AC_LINK_IFELSE( @@ -54,7 +54,11 @@ else MUNGE_LIBS="-lmunge" MUNGE_CPPFLAGS="-I$x_ac_cv_munge_dir/include" - MUNGE_LDFLAGS="-L$x_ac_cv_munge_dir/$bit" + if test "$ac_with_rpath" = "yes"; then + MUNGE_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_munge_dir/$bit -L$x_ac_cv_munge_dir/$bit" + else + MUNGE_LDFLAGS="-L$x_ac_cv_munge_dir/$bit" + fi fi AC_SUBST(MUNGE_LIBS) diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_srun.m4 slurm-llnl-2.3.2/auxdir/x_ac_srun.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_srun.m4 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_srun.m4 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,32 @@ +##***************************************************************************** +## $Id: x_ac_srun.m4 17616 2009-05-27 21:24:58Z jette $ +##***************************************************************************** +# AUTHOR: +# Morris Jette +# +# SYNOPSIS: +# AC_SRUN +# +# DESCRIPTION: +# Adds support for --with-srun2aprun. If set then build srun-aprun wrapper +# rather than native SLURM srun. +##***************************************************************************** + +AC_DEFUN([X_AC_SRUN2APRUN], +[ + ac_with_srun2aprun="no" + + AC_MSG_CHECKING([for whether to include srun-aprun wrapper rather than native SLURM srun]) + AC_ARG_WITH([srun2aprun], + AS_HELP_STRING(--with-srun2aprun,use aprun wrapper instead of native SLURM srun command), + [ case "$withval" in + yes) ac_with_srun2aprun=yes ;; + no) ac_with_srun2aprun=no ;; + *) AC_MSG_RESULT([doh!]) + AC_MSG_ERROR([bad value "$withval" for --with-srun2aprun]) ;; + esac + ] + ) + AC_MSG_RESULT($ac_with_srun2aprun) + AM_CONDITIONAL(BUILD_SRUN2APRUN, test "x$ac_with_srun2aprun" = "xyes") +]) diff -Nru slurm-llnl-2.2.7/auxdir/x_ac_sun_const.m4 slurm-llnl-2.3.2/auxdir/x_ac_sun_const.m4 --- slurm-llnl-2.2.7/auxdir/x_ac_sun_const.m4 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/auxdir/x_ac_sun_const.m4 2011-12-05 17:20:08.000000000 +0000 @@ -6,7 +6,7 @@ # X_AC_SUN_CONST # # DESCRIPTION: -# Test for Sun Constellation system with 3-D interconect +# Test for Sun Constellation system with 3-D interconnect ##***************************************************************************** AC_DEFUN([X_AC_SUN_CONST], [ diff -Nru slurm-llnl-2.2.7/BUILD.NOTES slurm-llnl-2.3.2/BUILD.NOTES --- slurm-llnl-2.2.7/BUILD.NOTES 2011-06-10 16:57:26.000000000 +0000 +++ slurm-llnl-2.3.2/BUILD.NOTES 2011-12-05 17:20:08.000000000 +0000 @@ -23,9 +23,11 @@ Here is a step-by-step HOWTO for creating a new release of SLURM on a Linux cluster (See BlueGene and AIX specific notes below for some differences). -0. svn co https://eris.llnl.gov/svn/slurm/trunk slurm - svn co https://eris.llnl.gov/svn/chaos/private/buildfarm/trunk buildfarm - put the buildfarm directory in your search path +0. Get current copies of SLURM and buildfarm + > git clone https://@github.com/chaos/slurm.git + > svn co https://eris.llnl.gov/svn/chaos/private/buildfarm/trunk buildfarm + place the buildfarm directory in your search path + > export PATH=~/buildfarm:$PATH 1. Update NEWS and META files for the new release. In the META file, the API, Major, Minor, Micro, Version, and Release fields must all by up-to-date. **** DON'T UPDATE META UNTIL RIGHT BEFORE THE TAG **** @@ -35,39 +37,37 @@ files, but not to code. - this is a prerelease (Release = 0.preX) 2. Tag the repository with the appropriate name for the new version. - svn copy https://eris.llnl.gov/svn/slurm/trunk \ - https://eris.llnl.gov/svn/slurm/tags/slurm-1-2-0-0-pre3 \ - -m "description" + > git tag -a slurm-2-3-0-0-pre5 -m "create tag v2.3.0-pre5" + > git push --tags 3. Use the rpm make target to create the new RPMs. This requires a .rpmmacros (.rpmrc for newer versions of rpmbuild) file containing: %_slurm_sysconfdir /etc/slurm %_with_debug 1 %_with_sgijob 1 %_with_elan 1 (ONLY ON SYSTEMS WITH ELAN SWITCH) - I usually build with using the following syntax: - build -s https://eris.llnl.gov/svn/slurm/tags/slurm-1-2-0-0-pre3 -4. Remove the RPMs that we don't want: - rm -f slurm-perlapi*rpm slurm-torque*rpm -5. Move the RPMs to - /usr/local/admin/rpms/llnl/RPMS-RHEL4/x86_64 (odevi, or gauss) - /usr/local/admin/rpms/llnl/RPMS-RHEL4/i386/ (adevi) - /usr/local/admin/rpms/llnl/RPMS-RHEL4/ia64/ (tdevi) - send an announcement email (with the latest entry from the NEWS - file) out to linux-admin@lists.llnl.gov. -6. Copy tagged bzip file (e.g. slurm-0.6.0-0.pre3.bz2) to FTP server - for external SLURM users. -7. Copy bzip file and rpms (including src.rpm) to sourceforge.net: - ncftp upload.sf.net - cd upload - put filename - Use SourceForge admin tool to add new release, including changelog. + NOTE: build will make a tar-ball based upon ALL of the files in your current + local directory. If that includes scratch files, everyone will get those + files in the tar-ball. For that reason, it is a good idea to clone a clean + copy of the repository and build from that + > git clone https://@github.com/chaos/slurm.git + Build using the following syntax: + > build --snapshot -s OR + > build --nosnapshot -s + --nosnapshot will name the tar-ball and RPMs based upon the META file + --snapshot will name the tar-ball and RPMs based upon the META file plus a + timestamp. Do this to make a tar-ball for a non-tagged release. + NOTE: should be a fully-qualified pathname +4. scp the files to schedmd.com in to ~/www/download/development or + ~/www/download/development. Move the older files to ~/www/download/archive, + login to schedmd.com, cd to ~/download, and execute "php process.php" to + update the web pages. BlueGene build notes: 0. If on a bgp system and you want sview export these variables - export CFLAGS="-I/opt/gnome/lib/gtk-2.0/include -I/opt/gnome/lib/glib-2.0/include $CFLAGS" - export LIBS="-L/usr/X11R6/lib64 $LIBS" - export CMD_LDFLAGS='-L/usr/X11R6/lib64' - export PKG_CONFIG_PATH="/opt/gnome/lib64/pkgconfig/:$PKG_CONFIG_PATH" + > export CFLAGS="-I/opt/gnome/lib/gtk-2.0/include -I/opt/gnome/lib/glib-2.0/include $CFLAGS" + > export LIBS="-L/usr/X11R6/lib64 $LIBS" + > export CMD_LDFLAGS='-L/usr/X11R6/lib64' + > export PKG_CONFIG_PATH="/opt/gnome/lib64/pkgconfig/:$PKG_CONFIG_PATH" 1. Use the rpm make target to create the new RPMs. This requires a .rpmmacros (.rpmrc for newer versions of rpmbuild) file containing: %_prefix /usr @@ -76,13 +76,17 @@ %_without_pam 1 %_with_debug 1 Build on Service Node with using the following syntax - rpmbuild -ta slurm-...bz2 + > rpmbuild -ta slurm-...bz2 The RPM files get written to the directory /usr/src/packages/RPMS/ppc64 To build and run on AIX: -0. svn co https://eris.llnl.gov/svn/slurm/trunk slurm - svn co https://eris.llnl.gov/svn/buildfarm/trunk buildfarm +0. Get current copies of SLURM and buildfarm + > git clone https://@github.com/chaos/slurm.git + > svn co https://eris.llnl.gov/svn/chaos/private/buildfarm/trunk buildfarm + put the buildfarm directory in your search path + > export PATH=~/buildfarm:$PATH + Put the buildfarm directory in your search path Also, you will need several commands to appear FIRST in your PATH: @@ -93,10 +97,11 @@ I do this by making symlinks to those commands in the buildfarm directory, then making the buildfarm directory the first one in my PATH. Also, make certain that the "proctrack" rpm is installed. -1. export OBJECT_MODE=32 - export PKG_CONFIG="/usr/bin/pkg-config" +1. Export some environment variables + > export OBJECT_MODE=32 + > export PKG_CONFIG="/usr/bin/pkg-config" 2. Build with: - ./configure --enable-debug --prefix=/opt/freeware \ + > ./configure --enable-debug --prefix=/opt/freeware \ --sysconfdir=/opt/freeware/etc/slurm \ --with-ssl=/opt/freeware --with-munge=/opt/freeware \ --with-proctrack=/opt/freeware @@ -119,11 +124,23 @@ %with_munge "--with-munge=/opt/freeware" %with_proctrack "--with-proctrack=/opt/freeware" Log in to the machine "uP". uP is currently the lowest-common-denominator - AIX machine. - CC=/usr/bin/gcc build -s https://eris.llnl.gov/svn/slurm/tags/slurm-1-2-0-0-pre3 -4. export MP_RMLIB=./slurm_ll_api.so - export CHECKPOINT=yes -5. poe hostname -rmpool debug + AIX machine. + NOTE: build will make a tar-ball based upon ALL of the files in your current + local directory. If that includes scratch files, everyone will get those + files in the tar-ball. For that reason, it is a good idea to clone a clean + copy of the repository and build from that + > git clone https://@github.com/chaos/slurm.git + Build using the following syntax: + > export CC=/usr/bin/gcc + > build --snapshot -s OR + > build --nosnapshot -s + --nosnapshot will name the tar-ball and RPMs based upon the META file + --snapshot will name the tar-ball and RPMs based upon the META file plus a + timestamp. Do this to make a tar-ball for a non-tagged release. +4. Test POE after telling POE where to find SLURM's LoadLeveler wrapper. + > export MP_RMLIB=./slurm_ll_api.so + > export CHECKPOINT=yes +5. > poe hostname -rmpool debug 6. To debug, set SLURM_LL_API_DEBUG=3 before running poe - will create a file /tmp/slurm.* It can also be helpful to use poe options "-ilevel 6 -pmdlog yes" @@ -205,9 +222,17 @@ with the bug. For memory leaks (for AIX use zerofault, zf; for linux use valgrind) - - run configure with the option --enable-memory-leak-debug - - valgrind --tool=memcheck --leak-check=yes --num-callers=6 --leak-resolution=med \ - ./slurmctld -Dc >ctld.out 2>&1 (or similar like for slurmd) + - Run configure with the option "--enable-memory-leak-debug" to completely + release allocated memory when the daemons exit + - valgrind --tool=memcheck --leak-check=yes --num-callers=8 --leak-resolution=med \ + ./slurmctld -Dc >valg.ctld.out 2>&1 + - valgrind --tool=memcheck --leak-check=yes --num-callers=8 --leak-resolution=med \ + ./slurmd -Dc >valg.slurmd.out 2>&1 (Probably only one one node of cluster) + - Run the regression test. In the globals.local file include: + "set enable_memory_leak_debug 1" + - Shutdown the daemons using "scontrol shutdown" + - Examine the end of the log files for leaks. pthread_create() and dlopen() + have small memory leaks on some systems, which do not grow over time Before new major release: - Test on ia64, i386, x86_64, BGL, AIX, OSX, XCPU diff -Nru slurm-llnl-2.2.7/config.h.in slurm-llnl-2.3.2/config.h.in --- slurm-llnl-2.2.7/config.h.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/config.h.in 2011-12-05 17:20:08.000000000 +0000 @@ -3,9 +3,6 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD -/* Define the apbasil command location */ -#undef APBASIL_LOC - /* Define the BG_BRIDGE_SO value */ #undef BG_BRIDGE_SO @@ -39,9 +36,15 @@ /* Define to 1 if 3-dimensional architecture */ #undef HAVE_3D +/* Define to 1 if 4-dimensional architecture */ +#undef HAVE_4D + /* Define to 1 for AIX operating system */ #undef HAVE_AIX +/* Define to 1 if running against an Alps emulation */ +#undef HAVE_ALPS_EMULATION + /* Define to 1 if emulating or running on Blue Gene system */ #undef HAVE_BG @@ -63,9 +66,12 @@ /* Define to 1 if you have the `cfmakeraw' function. */ #undef HAVE_CFMAKERAW -/* Define if Cray system */ +/* Define to 1 for Cray XT/XE systems */ #undef HAVE_CRAY +/* Define to 1 for emulating a Cray XT/XE system */ +#undef HAVE_CRAY_EMULATION + /* Define to 1 if you have the header file. */ #undef HAVE_CURSES_H @@ -136,6 +142,12 @@ /* define if you have libelanhosts. */ #undef HAVE_LIBELANHOSTS +/* Define to 1 if you have the `expat' library (-lexpat). */ +#undef HAVE_LIBEXPAT + +/* Define to 1 if you have the `job' library (-ljob). */ +#undef HAVE_LIBJOB + /* define if you have libntbl. */ #undef HAVE_LIBNTBL @@ -209,6 +221,9 @@ /* Define if you are compiling with readline. */ #undef HAVE_READLINE +/* Define to 1 for running on a real Cray XT/XE system */ +#undef HAVE_REAL_CRAY + /* Define to 1 if you have the `sched_setaffinity' function. */ #undef HAVE_SCHED_SETAFFINITY @@ -389,6 +404,9 @@ /* Define the project's release. */ #undef RELEASE +/* Define to 1 for salloc to kill child processes at job termination */ +#undef SALLOC_KILL_CMD + /* Define to 1 to require salloc execution in the foreground. */ #undef SALLOC_RUN_FOREGROUND @@ -461,7 +479,7 @@ /* Define to 1 if strerror_r returns char *. */ #undef STRERROR_R_CHAR_P -/* Define system dimension count */ +/* 3-dimensional architecture */ #undef SYSTEM_DIMENSIONS /* Define to 1 if you can safely include both and . */ diff -Nru slurm-llnl-2.2.7/configure slurm-llnl-2.3.2/configure --- slurm-llnl-2.2.7/configure 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/configure 2011-12-05 17:20:08.000000000 +0000 @@ -743,6 +743,8 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS +BUILD_SRUN2APRUN_FALSE +BUILD_SRUN2APRUN_TRUE WITH_BLCR_FALSE WITH_BLCR_TRUE BLCR_LDFLAGS @@ -766,6 +768,10 @@ SSL_LIBS SSL_LDFLAGS READLINE_LIBS +HAVE_MAN2HTML +HAVE_MAN2HTML_FALSE +HAVE_MAN2HTML_TRUE +ac_have_man2html HAVE_LUA_FALSE HAVE_LUA_TRUE lua_LIBS @@ -787,6 +793,14 @@ SLURMCTLD_PORT DEBUG_MODULES_FALSE DEBUG_MODULES_TRUE +HAVE_CRAY_EMULATION_FALSE +HAVE_CRAY_EMULATION_TRUE +HAVE_ALPS_EMULATION_FALSE +HAVE_ALPS_EMULATION_TRUE +HAVE_REAL_CRAY_FALSE +HAVE_REAL_CRAY_TRUE +HAVE_CRAY_FALSE +HAVE_CRAY_TRUE WITH_PGSQL_FALSE WITH_PGSQL_TRUE PGSQL_CFLAGS @@ -827,6 +841,8 @@ NUMA_LIBS WITH_GNU_LD_FALSE WITH_GNU_LD_TRUE +WITH_CXX_FALSE +WITH_CXX_TRUE PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG @@ -848,12 +864,8 @@ FGREP SED LIBTOOL -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX +WITH_CYGWIN_FALSE +WITH_CYGWIN_TRUE HAVE_AIX_PROCTRACK_FALSE HAVE_AIX_PROCTRACK_TRUE EGREP @@ -869,6 +881,22 @@ BLUEGENE_LOADED BLUEGENE_LOADED_FALSE BLUEGENE_LOADED_TRUE +BGQ_LOADED +BGQ_LOADED_FALSE +BGQ_LOADED_TRUE +BG_LDFLAGS +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +REAL_BG_L_P_LOADED +REAL_BG_L_P_LOADED_FALSE +REAL_BG_L_P_LOADED_TRUE +BG_L_P_LOADED +BG_L_P_LOADED_FALSE +BG_L_P_LOADED_TRUE BGL_LOADED BGL_LOADED_FALSE BGL_LOADED_TRUE @@ -981,6 +1009,7 @@ ac_user_opts=' enable_option_checking enable_maintainer_mode +with_rpath with_db2_dir enable_bluegene_emulation enable_bgl_emulation @@ -1001,8 +1030,6 @@ with_pam_dir enable_iso8601 enable_load_env_no_login -enable_cray_xt -with_apbasil enable_sun_const with_dimensions with_hwloc @@ -1010,10 +1037,13 @@ enable_gtktest with_mysql_config with_pg_config +with_alps_emulation +enable_cray_emulation enable_debug enable_memory_leak_debug enable_front_end enable_partial_attach +enable_salloc_kill_cmd enable_salloc_background with_slurmctld_port with_slurmd_port @@ -1024,6 +1054,7 @@ with_munge enable_multiple_slurmd with_blcr +with_srun2aprun ' ac_precious_vars='build_alias host_alias @@ -1033,10 +1064,10 @@ LDFLAGS LIBS CPPFLAGS -CPP CXX CXXFLAGS CCC +CPP CXXCPP PKG_CONFIG PKG_CONFIG_PATH @@ -1683,15 +1714,18 @@ --enable-load-env-no-login enable --get-user-env option to load user environment without .login - --enable-cray-xt enable Cray XT system support --enable-sun-const enable Sun Constellation system support --disable-gtktest do not try to compile and run a test GTK+ program + --enable-cray-emulation Run SLURM in an emulated Cray mode --enable-debug enable debugging code for development --enable-memory-leak-debug enable memory leak debugging code for development --enable-front-end enable slurmd operation on a front-end --disable-partial-attach disable debugger partial task attach support + --enable-salloc-kill-cmd + salloc should kill child processes at job + termination --disable-salloc-background disable salloc execution in the background --enable-multiple-slurmd @@ -1700,6 +1734,7 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --without-rpath Do not include rpath in build --with-db2-dir=PATH Specify path to parent directory of DB2 library --with-bg-serial=NAME set BG_SERIAL value @@ -1710,7 +1745,6 @@ --with-cpusetdir=PATH specify path to cpuset directory default is /dev/cpuset --with-pam_dir=PATH Specify path to PAM module installation - --with-apbasil=PATH Specify path to apbasil command --with-dimensions=N set system dimension count for generic computer system --with-hwloc=PATH Specify path to hwloc installation @@ -1718,6 +1752,8 @@ --with-mysql_config=PATH Specify path to mysql_config binary --with-pg_config=PATH Specify path to pg_config binary + --with-alps-emulation Run SLURM against an emulated Alps system - requires + option cray.conf [default=no] --with-slurmctld-port=N set slurmctld default port [6817] --with-slurmd-port=N set slurmd default port [6818] --with-slurmdbd-port=N set slurmdbd default port [6819] @@ -1727,6 +1763,8 @@ --with-ssl=PATH Specify path to OpenSSL installation --with-munge=PATH Specify path to munge installation --with-blcr=PATH Specify path to BLCR installation + --with-srun2aprun use aprun wrapper instead of native SLURM srun + command Some influential environment variables: CC C compiler command @@ -1736,9 +1774,9 @@ LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags + CPP C preprocessor CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH @@ -1912,6 +1950,90 @@ } # ac_fn_c_try_link +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. @@ -2109,44 +2231,6 @@ } # ac_fn_c_check_header_compile -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly @@ -2251,52 +2335,6 @@ } # ac_fn_cxx_try_cpp -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR @@ -2938,7 +2976,7 @@ SLURM_RELEASE="unstable svn build $DATE" SLURM_VERSION_STRING="$SLURM_MAJOR.$SLURM_MINOR ($SLURM_RELEASE)" else - SLURM_RELEASE="`echo $RELEASE | sed 's/^.*\.//'`" + SLURM_RELEASE="`echo $RELEASE | sed 's/^0\.//'`" SLURM_VERSION_STRING="$SLURM_MAJOR.$SLURM_MINOR.$SLURM_MICRO" test $RELEASE = "1" || SLURM_VERSION_STRING="$SLURM_VERSION_STRING-$SLURM_RELEASE" fi @@ -3482,6 +3520,28 @@ ac_config_headers="$ac_config_headers slurm/slurm.h" + + ac_with_rpath=yes + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include rpath in build" >&5 +$as_echo_n "checking whether to include rpath in build... " >&6; } + +# Check whether --with-rpath was given. +if test "${with_rpath+set}" = set; then : + withval=$with_rpath; case "$withval" in + yes) ac_with_rpath=yes ;; + no) ac_with_rpath=no ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: doh!" >&5 +$as_echo "doh!" >&6; } + as_fn_error $? "bad value \"$withval\" for --without-rpath" "$LINENO" 5 ;; + esac + + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_with_rpath" >&5 +$as_echo "$ac_with_rpath" >&6; } + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" @@ -4463,6 +4523,7 @@ + ac_real_bluegene_loaded=no ac_bluegene_loaded=no @@ -4630,6 +4691,7 @@ #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes + ac_real_bluegene_loaded=yes fi @@ -4785,48 +4847,460 @@ #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes - fi + ac_real_bluegene_loaded=yes + fi - # test for bluegene emulation mode - # Check whether --enable-bgq-emulation was given. -if test "${enable_bgq_emulation+set}" = set; then : - enableval=$enable_bgq_emulation; case "$enableval" in - yes) bgq_emulation=yes ;; - no) bgq_emulation=no ;; - *) as_fn_error $? "bad value \"$enableval\" for --enable-bgq-emulation" "$LINENO" 5 ;; - esac + if test "x$ac_bluegene_loaded" = "xyes"; then + BG_L_P_LOADED_TRUE= + BG_L_P_LOADED_FALSE='#' +else + BG_L_P_LOADED_TRUE='#' + BG_L_P_LOADED_FALSE= fi - # Skip if already set - if test "x$ac_bluegene_loaded" = "xyes" ; then - bg_default_dirs="" - elif test "x$bgq_emulation" = "xyes"; then - -$as_echo "#define SYSTEM_DIMENSIONS 4" >>confdefs.h - - -$as_echo "#define HAVE_BG 1" >>confdefs.h + if test "x$ac_real_bluegene_loaded" = "xyes"; then + REAL_BG_L_P_LOADED_TRUE= + REAL_BG_L_P_LOADED_FALSE='#' +else + REAL_BG_L_P_LOADED_TRUE='#' + REAL_BG_L_P_LOADED_FALSE= +fi -$as_echo "#define HAVE_BGQ 1" >>confdefs.h -$as_echo "#define HAVE_FRONT_END 1" >>confdefs.h +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + + # test for bluegene emulation mode + # Check whether --enable-bgq-emulation was given. +if test "${enable_bgq_emulation+set}" = set; then : + enableval=$enable_bgq_emulation; case "$enableval" in + yes) bgq_emulation=yes ;; + no) bgq_emulation=no ;; + *) as_fn_error $? "bad value \"$enableval\" for --enable-bgq-emulation" "$LINENO" 5 ;; + esac +fi + + + # Skip if already set + if test "x$ac_bluegene_loaded" = "xyes" ; then + bg_default_dirs="" + elif test "x$bgq_emulation" = "xyes"; then + +$as_echo "#define HAVE_4D 1" >>confdefs.h + + +$as_echo "#define SYSTEM_DIMENSIONS 4" >>confdefs.h + + +$as_echo "#define HAVE_BG 1" >>confdefs.h + + +$as_echo "#define HAVE_BGQ 1" >>confdefs.h + + +$as_echo "#define HAVE_FRONT_END 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: Running in BG/Q emulation mode" >&5 $as_echo "$as_me: Running in BG/Q emulation mode" >&6;} bg_default_dirs="" #define ac_bluegene_loaded so we don't load another bluegene conf ac_bluegene_loaded=yes + ac_bgq_loaded=yes else bg_default_dirs="/bgsys/drivers/ppcfloor" fi libname=bgsched + loglibname=log4cxx for bg_dir in $trydb2dir "" $bg_default_dirs; do # Skip directories that don't exist @@ -4834,55 +5308,88 @@ continue; fi - soloc=$bg_dir/lib64/lib$libname.so + soloc=$bg_dir/hlcs/lib/lib$libname.so # Search for required BG API libraries in the directory if test -z "$have_bg_ar" -a -f "$soloc" ; then have_bgq_ar=yes - bg_ldflags="$bg_ldflags -L$bg_dir/lib64 -L/usr/lib64 -Wl,--unresolved-symbols=ignore-in-shared-libs -l$libname" + if test "$ac_with_rpath" = "yes"; then + bg_ldflags="$bg_ldflags -Wl,-rpath -Wl,$bg_dir/hlcs/lib -L$bg_dir/hlcs/lib -l$libname" + else + bg_ldflags="$bg_ldflags -L$bg_dir/hlcs/lib -l$libname" + fi + fi + + soloc=$bg_dir/extlib/lib/lib$loglibname.so + if test -z "$have_bg_ar" -a -f "$soloc" ; then + have_bgq_ar=yes + if test "$ac_with_rpath" = "yes"; then + bg_ldflags="$bg_ldflags -Wl,-rpath -Wl,$bg_dir/extlib/lib -L$bg_dir/extlib/lib -l$loglibname" + else + bg_ldflags="$bg_ldflags -L$bg_dir/extlib/lib -l$loglibname" + fi fi # Search for headers in the directory - if test -z "$have_bg_hdr" -a -f "$bg_dir/include/rm_api.h" ; then + if test -z "$have_bg_hdr" -a -f "$bg_dir/hlcs/include/bgsched/bgsched.h" ; then have_bgq_hdr=yes - bg_includes="-I$bg_dir/include" + bg_includes="-I$bg_dir/hlcs/include" fi + if test -z "$have_bg_hdr" -a -f "$bg_dir/extlib/include/log4cxx/logger.h" ; then + have_bgq_hdr=yes + bg_includes="$bg_includes -I$bg_dir/extlib/include" + fi done if test ! -z "$have_bgq_ar" -a ! -z "$have_bgq_hdr" ; then # ac_with_readline="no" # Test to make sure the api is good saved_LDFLAGS="$LDFLAGS" - LDFLAGS="$saved_LDFLAGS $bg_ldflags -m64" + LDFLAGS="$saved_LDFLAGS $bg_ldflags -m64 $bg_includes" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - int rm_set_serial(char *); +#include +#include int main () { - rm_set_serial(""); + bgsched::init(""); + log4cxx::LoggerPtr logger_ptr(log4cxx::Logger::getLogger( "ibm" )); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO"; then : have_bgq_files=yes else - as_fn_error $? "There is a problem linking to the BG/P api." "$LINENO" 5 + as_fn_error $? "There is a problem linking to the BG/Q api." "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + LDFLAGS="$saved_LDFLAGS" fi if test ! -z "$have_bgq_files" ; then + BG_LDFLAGS="$bg_ldflags" BG_INCLUDES="$bg_includes" CFLAGS="$CFLAGS -m64" CXXFLAGS="$CXXFLAGS $CFLAGS" -$as_echo "#define HAVE_3D 1" >>confdefs.h +$as_echo "#define HAVE_4D 1" >>confdefs.h -$as_echo "#define SYSTEM_DIMENSIONS 3" >>confdefs.h +$as_echo "#define SYSTEM_DIMENSIONS 4" >>confdefs.h $as_echo "#define HAVE_BG 1" >>confdefs.h @@ -4896,32 +5403,32 @@ $as_echo "#define HAVE_BG_FILES 1" >>confdefs.h + #AC_DEFINE_UNQUOTED(BG_BRIDGE_SO, "$soloc", [Define the BG_BRIDGE_SO value]) -cat >>confdefs.h <<_ACEOF -#define BG_BRIDGE_SO "$soloc" -_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: Running on a legitimate BG/Q system" >&5 +$as_echo "$as_me: Running on a legitimate BG/Q system" >&6;} + # AC_MSG_CHECKING(for BG serial value) + # bg_serial="BGQ" + # AC_ARG_WITH(bg-serial,, [bg_serial="$withval"]) + # AC_MSG_RESULT($bg_serial) + # AC_DEFINE_UNQUOTED(BG_SERIAL, "$bg_serial", [Define the BG_SERIAL value]) + #define ac_bluegene_loaded so we don't load another bluegene conf + ac_bluegene_loaded=yes + ac_real_bluegene_loaded=yes + ac_bgq_loaded=yes + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BG serial value" >&5 -$as_echo_n "checking for BG serial value... " >&6; } - bg_serial="BGQ" -# Check whether --with-bg-serial was given. -if test "${with_bg_serial+set}" = set; then : - withval=$with_bg_serial; bg_serial="$withval" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bg_serial" >&5 -$as_echo "$bg_serial" >&6; } -cat >>confdefs.h <<_ACEOF -#define BG_SERIAL "$bg_serial" -_ACEOF - - #define ac_bluegene_loaded so we don't load another bluegene conf - ac_bluegene_loaded=yes - fi + if test "x$ac_bgq_loaded" = "xyes"; then + BGQ_LOADED_TRUE= + BGQ_LOADED_FALSE='#' +else + BGQ_LOADED_TRUE='#' + BGQ_LOADED_FALSE= +fi @@ -4935,6 +5442,7 @@ + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5638,11 +6146,26 @@ ;; esac +ac_have_cygwin=no case "$host" in + *cygwin) LDFLAGS="$LDFLAGS -no-undefined" + SO_LDFLAGS="$SO_LDFLAGS \$(top_builddir)/src/api/libslurmhelper.la" + + ac_have_cygwin=yes + ;; *solaris*) CC="/usr/sfw/bin/gcc" CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -I/usr/sfw/include" LDFLAGS="$LDFLAGS -L/usr/sfw/lib" + ;; esac + if test x"$ac_have_cygwin" == x"yes"; then + WITH_CYGWIN_TRUE= + WITH_CYGWIN_FALSE='#' +else + WITH_CYGWIN_TRUE='#' + WITH_CYGWIN_FALSE= +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -7205,13 +7728,13 @@ else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:7208: $ac_compile\"" >&5) + (eval echo "\"\$as_me:7731: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:7211: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:7734: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:7214: output\"" >&5) + (eval echo "\"\$as_me:7737: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -8416,7 +8939,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 8419 "configure"' > conftest.$ac_ext + echo '#line 8942 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -9704,7 +10227,6 @@ - # Set options @@ -10205,11 +10727,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10208: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10730: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10212: \$? = $ac_status" >&5 + echo "$as_me:10734: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -10544,11 +11066,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10547: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11069: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10551: \$? = $ac_status" >&5 + echo "$as_me:11073: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -10649,11 +11171,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10652: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11174: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10656: \$? = $ac_status" >&5 + echo "$as_me:11178: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10704,11 +11226,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10707: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11229: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10711: \$? = $ac_status" >&5 + echo "$as_me:11233: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -13088,7 +13610,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13091 "configure" +#line 13613 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13184,7 +13706,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13187 "configure" +#line 13709 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15140,11 +15662,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15143: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15665: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15147: \$? = $ac_status" >&5 + echo "$as_me:15669: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15239,11 +15761,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15242: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15764: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15246: \$? = $ac_status" >&5 + echo "$as_me:15768: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15291,11 +15813,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15294: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15816: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15298: \$? = $ac_status" >&5 + echo "$as_me:15820: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -16378,6 +16900,14 @@ fi fi + if test -n "$ac_ct_CXX"; then + WITH_CXX_TRUE= + WITH_CXX_FALSE='#' +else + WITH_CXX_TRUE='#' + WITH_CXX_FALSE= +fi + if test "$with_gnu_ld" = "yes"; then WITH_GNU_LD_TRUE= WITH_GNU_LD_FALSE='#' @@ -18110,90 +18640,31 @@ -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$acx_pthread_ok" = xyes; then - -$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h - - : -else - acx_pthread_ok=no - as_fn_error $? "Error: Cannot figure out how to use pthreads!" "$LINENO" 5 -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -# Always define WITH_PTHREADS if we make it this far - -$as_echo "#define WITH_PTHREADS 1" >>confdefs.h - -LDFLAGS="$LDFLAGS " -CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -LIBS="$PTHREAD_LIBS $LIBS" - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Cray XT" >&5 -$as_echo_n "checking for Cray XT... " >&6; } - # Check whether --enable-cray-xt was given. -if test "${enable_cray_xt+set}" = set; then : - enableval=$enable_cray_xt; case "$enableval" in - yes) x_ac_cray_xt=yes ;; - no) x_ac_cray_xt=no ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: doh!" >&5 -$as_echo "doh!" >&6; } - as_fn_error $? "bad value \"$enableval\" for --enable-cray-xt" "$LINENO" 5 ;; - esac - -else - x_ac_cray_xt=no - -fi - - - if test "$x_ac_cray_xt" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define HAVE_3D 1" >>confdefs.h - - -$as_echo "#define SYSTEM_DIMENSIONS 3" >>confdefs.h - - -$as_echo "#define HAVE_CRAY 1" >>confdefs.h - - -$as_echo "#define HAVE_FRONT_END 1" >>confdefs.h - - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h -# Check whether --with-apbasil was given. -if test "${with_apbasil+set}" = set; then : - withval=$with_apbasil; try_apbasil=$withval + : +else + acx_pthread_ok=no + as_fn_error $? "Error: Cannot figure out how to use pthreads!" "$LINENO" 5 fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - apbasil_default_locs="/usr/bin/apbasil" - for apbasil_loc in $try_apbasil "" $apbasil_default_locs; do - if test -z "$have_apbasil" -a -x "$apbasil_loc" ; then - have_apbasil=$apbasil_loc - fi - done - if test ! -z "$have_apbasil" ; then -cat >>confdefs.h <<_ACEOF -#define APBASIL_LOC "$have_apbasil" -_ACEOF - fi +# Always define WITH_PTHREADS if we make it this far + +$as_echo "#define WITH_PTHREADS 1" >>confdefs.h + +LDFLAGS="$LDFLAGS " +CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Sun Constellation system" >&5 @@ -19275,6 +19746,230 @@ + ac_have_cray="no" + ac_have_real_cray="no" + ac_have_alps_emulation="no" + ac_have_cray_emulation="no" + + +# Check whether --with-alps-emulation was given. +if test "${with_alps_emulation+set}" = set; then : + withval=$with_alps_emulation; test "$withval" = no || ac_have_alps_emulation=yes +else + ac_have_alps_emulation=no +fi + + + # Check whether --enable-cray-emulation was given. +if test "${enable_cray_emulation+set}" = set; then : + enableval=$enable_cray_emulation; case "$enableval" in + yes) ac_have_cray_emulation="yes" ;; + no) ac_have_cray_emulation="no" ;; + *) as_fn_error $? "bad value \"$enableval\" for --enable-cray-emulation" "$LINENO" 5 ;; + esac + +fi + + + if test "$ac_have_alps_emulation" = "yes"; then + ac_have_cray="yes" + { $as_echo "$as_me:${as_lineno-$LINENO}: Running A Cray system against an Alps emulation" >&5 +$as_echo "$as_me: Running A Cray system against an Alps emulation" >&6;} + +$as_echo "#define HAVE_ALPS_EMULATION 1" >>confdefs.h + + elif test "$ac_have_cray_emulation" = "yes"; then + ac_have_cray="yes" + { $as_echo "$as_me:${as_lineno-$LINENO}: Running in Cray emulation mode" >&5 +$as_echo "$as_me: Running in Cray emulation mode" >&6;} + +$as_echo "#define HAVE_CRAY_EMULATION 1" >>confdefs.h + + else + # Check for a Cray-specific file: + # * older XT systems use an /etc/xtrelease file + # * newer XT/XE systems use an /etc/opt/cray/release/xtrelease file + # * both have an /etc/xthostname + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether this is a native Cray XT or XE system or have ALPS simulator" >&5 +$as_echo_n "checking whether this is a native Cray XT or XE system or have ALPS simulator... " >&6; } + + if test -f /etc/xtrelease || test -d /etc/opt/cray/release; then + ac_have_cray="yes" + ac_have_real_cray="yes" + +$as_echo "#define HAVE_REAL_CRAY 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_have_cray" >&5 +$as_echo "$ac_have_cray" >&6; } + fi + + if test "$ac_have_cray" = "yes"; then + # libexpat is always required for the XML-RPC interface + ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" +if test "x$ac_cv_header_expat_h" = x""yes; then : + +else + as_fn_error $? "Cray BASIL requires expat headers/rpm" "$LINENO" 5 +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5 +$as_echo_n "checking for XML_ParserCreate in -lexpat... " >&6; } +if test "${ac_cv_lib_expat_XML_ParserCreate+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lexpat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XML_ParserCreate (); +int +main () +{ +return XML_ParserCreate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_expat_XML_ParserCreate=yes +else + ac_cv_lib_expat_XML_ParserCreate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5 +$as_echo "$ac_cv_lib_expat_XML_ParserCreate" >&6; } +if test "x$ac_cv_lib_expat_XML_ParserCreate" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBEXPAT 1 +_ACEOF + + LIBS="-lexpat $LIBS" + +else + as_fn_error $? "Cray BASIL requires libexpat.so (i.e. libexpat1-dev)" "$LINENO" 5 +fi + + + if test "$ac_have_real_cray" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for job_getjid in -ljob" >&5 +$as_echo_n "checking for job_getjid in -ljob... " >&6; } +if test "${ac_cv_lib_job_job_getjid+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ljob $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char job_getjid (); +int +main () +{ +return job_getjid (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_job_job_getjid=yes +else + ac_cv_lib_job_job_getjid=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_job_job_getjid" >&5 +$as_echo "$ac_cv_lib_job_job_getjid" >&6; } +if test "x$ac_cv_lib_job_job_getjid" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBJOB 1 +_ACEOF + + LIBS="-ljob $LIBS" + +else + as_fn_error $? "Need cray-job (usually in /opt/cray/job/default)" "$LINENO" 5 +fi + + fi + + if test -z "$MYSQL_CFLAGS" || test -z "$MYSQL_LIBS"; then + as_fn_error $? "Cray BASIL requires the cray-MySQL-devel-enterprise rpm" "$LINENO" 5 + fi + + +$as_echo "#define HAVE_3D 1" >>confdefs.h + + +$as_echo "#define SYSTEM_DIMENSIONS 3" >>confdefs.h + + +$as_echo "#define HAVE_FRONT_END 1" >>confdefs.h + + +$as_echo "#define HAVE_CRAY 1" >>confdefs.h + + +$as_echo "#define SALLOC_KILL_CMD 1" >>confdefs.h + + +$as_echo "#define SALLOC_RUN_FOREGROUND 1" >>confdefs.h + + fi + if test "$ac_have_cray" = "yes"; then + HAVE_CRAY_TRUE= + HAVE_CRAY_FALSE='#' +else + HAVE_CRAY_TRUE='#' + HAVE_CRAY_FALSE= +fi + + if test "$ac_have_real_cray" = "yes"; then + HAVE_REAL_CRAY_TRUE= + HAVE_REAL_CRAY_FALSE='#' +else + HAVE_REAL_CRAY_TRUE='#' + HAVE_REAL_CRAY_FALSE= +fi + + if test "$ac_have_alps_emulation" = "yes"; then + HAVE_ALPS_EMULATION_TRUE= + HAVE_ALPS_EMULATION_FALSE='#' +else + HAVE_ALPS_EMULATION_TRUE='#' + HAVE_ALPS_EMULATION_FALSE= +fi + + if test "$ac_have_cray_emulation" = "yes"; then + HAVE_CRAY_EMULATION_TRUE= + HAVE_CRAY_EMULATION_FALSE='#' +else + HAVE_CRAY_EMULATION_TRUE='#' + HAVE_CRAY_EMULATION_FALSE= +fi + + + + @@ -19353,6 +20048,7 @@ if test "$x_ac_debug" = yes; then test "$GCC" = yes && CFLAGS="$CFLAGS -Wall -fno-strict-aliasing" + test "$GXX" = yes && CXXFLAGS="$CXXFLAGS -Wall -fno-strict-aliasing" else $as_echo "#define NDEBUG 1" >>confdefs.h @@ -19430,6 +20126,31 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${x_ac_partial_attach=no}" >&5 $as_echo "${x_ac_partial_attach=no}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether salloc should kill child processes at job termination" >&5 +$as_echo_n "checking whether salloc should kill child processes at job termination... " >&6; } + # Check whether --enable-salloc-kill-cmd was given. +if test "${enable_salloc_kill_cmd+set}" = set; then : + enableval=$enable_salloc_kill_cmd; case "$enableval" in + yes) x_ac_salloc_kill_cmd=yes ;; + no) x_ac_salloc_kill_cmd=no ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: doh!" >&5 +$as_echo "doh!" >&6; } + as_fn_error $? "bad value \"$enableval\" for --enable-salloc-kill-cmd" "$LINENO" 5 ;; + esac + + +fi + + if test "$x_ac_salloc_kill_cmd" = yes; then + +$as_echo "#define SALLOC_KILL_CMD 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable salloc execution in the background" >&5 $as_echo_n "checking whether to disable salloc execution in the background... " >&6; } @@ -19976,9 +20697,9 @@ if test "x$x_ac_have_lua" = "xyes"; then saved_CFLAGS="$CFLAGS" - saved_LDFLAGS="$LDFLAGS" + saved_LIBS="$LIBS" CFLAGS="$CFLAGS $lua_CFLAGS" - LDFLAGS="$LDFLAGS $lua_LIBS" + LIBS="$LIBS $lua_LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for whether we can link to liblua" >&5 $as_echo_n "checking for whether we can link to liblua... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -20007,7 +20728,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_ac_have_lua" >&5 $as_echo "$x_ac_have_lua" >&6; } CFLAGS="$saved_CFLAGS" - LDFLAGS="$saved_LDFLAGS" + LIBS="$saved_LIBS" fi if test "x$x_ac_have_lua" = "xyes"; then @@ -20021,6 +20742,73 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether man2html is available" >&5 +$as_echo_n "checking whether man2html is available... " >&6; } + # Extract the first word of "man2html", so it can be a program name with args. +set dummy man2html; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_have_man2html+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_have_man2html"; then + ac_cv_prog_ac_have_man2html="$ac_have_man2html" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$bindir:/usr/bin:/usr/local/bin" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_have_man2html="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_ac_have_man2html" && ac_cv_prog_ac_have_man2html="no" +fi +fi +ac_have_man2html=$ac_cv_prog_ac_have_man2html +if test -n "$ac_have_man2html"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_have_man2html" >&5 +$as_echo "$ac_have_man2html" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + if test "x$ac_have_man2html" == "xyes"; then + HAVE_MAN2HTML_TRUE= + HAVE_MAN2HTML_FALSE='#' +else + HAVE_MAN2HTML_TRUE='#' + HAVE_MAN2HTML_FALSE= +fi + + + if test "x$ac_have_man2html" != "xyes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Unable to build man page html files without man2html" >&5 +$as_echo "$as_me: Unable to build man page html files without man2html" >&6;} + fi + + if test "x$ac_have_man2html" = "xyes"; then + HAVE_MAN2HTML_TRUE= + HAVE_MAN2HTML_FALSE='#' +else + HAVE_MAN2HTML_TRUE='#' + HAVE_MAN2HTML_FALSE= +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for support of printf(\"%s\", NULL)" >&5 $as_echo_n "checking for support of printf(\"%s\", NULL)... " >&6; } if test "$cross_compiling" = yes; then : @@ -20374,7 +21162,11 @@ else MUNGE_LIBS="-lmunge" MUNGE_CPPFLAGS="-I$x_ac_cv_munge_dir/include" - MUNGE_LDFLAGS="-L$x_ac_cv_munge_dir/$bit" + if test "$ac_with_rpath" = "yes"; then + MUNGE_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_munge_dir/$bit -L$x_ac_cv_munge_dir/$bit" + else + MUNGE_LDFLAGS="-L$x_ac_cv_munge_dir/$bit" + fi fi @@ -20619,8 +21411,38 @@ + ac_with_srun2aprun="no" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for whether to include srun-aprun wrapper rather than native SLURM srun" >&5 +$as_echo_n "checking for whether to include srun-aprun wrapper rather than native SLURM srun... " >&6; } + +# Check whether --with-srun2aprun was given. +if test "${with_srun2aprun+set}" = set; then : + withval=$with_srun2aprun; case "$withval" in + yes) ac_with_srun2aprun=yes ;; + no) ac_with_srun2aprun=no ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: doh!" >&5 +$as_echo "doh!" >&6; } + as_fn_error $? "bad value \"$withval\" for --with-srun2aprun" "$LINENO" 5 ;; + esac + + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_with_srun2aprun" >&5 +$as_echo "$ac_with_srun2aprun" >&6; } + if test "x$ac_with_srun2aprun" = "xyes"; then + BUILD_SRUN2APRUN_TRUE= + BUILD_SRUN2APRUN_FALSE='#' +else + BUILD_SRUN2APRUN_TRUE='#' + BUILD_SRUN2APRUN_FALSE= +fi + + + -ac_config_files="$ac_config_files Makefile config.xml auxdir/Makefile contribs/Makefile contribs/pam/Makefile contribs/perlapi/Makefile contribs/perlapi/libslurm/Makefile contribs/perlapi/libslurm/perl/Makefile.PL contribs/perlapi/libslurmdb/Makefile contribs/perlapi/libslurmdb/perl/Makefile.PL contribs/torque/Makefile contribs/phpext/Makefile contribs/phpext/slurm_php/config.m4 contribs/sjobexit/Makefile contribs/slurmdb-direct/Makefile src/Makefile src/api/Makefile src/common/Makefile src/db_api/Makefile src/database/Makefile src/sacct/Makefile src/sacctmgr/Makefile src/sreport/Makefile src/sstat/Makefile src/sshare/Makefile src/salloc/Makefile src/sbatch/Makefile src/sattach/Makefile src/sprio/Makefile src/srun/Makefile src/srun_cr/Makefile src/slurmd/Makefile src/slurmd/slurmd/Makefile src/slurmd/slurmstepd/Makefile src/slurmdbd/Makefile src/slurmctld/Makefile src/sbcast/Makefile src/scontrol/Makefile src/scancel/Makefile src/squeue/Makefile src/sinfo/Makefile src/smap/Makefile src/strigger/Makefile src/sview/Makefile src/plugins/Makefile src/plugins/accounting_storage/Makefile src/plugins/accounting_storage/common/Makefile src/plugins/accounting_storage/filetxt/Makefile src/plugins/accounting_storage/mysql/Makefile src/plugins/accounting_storage/pgsql/Makefile src/plugins/accounting_storage/none/Makefile src/plugins/accounting_storage/slurmdbd/Makefile src/plugins/auth/Makefile src/plugins/auth/authd/Makefile src/plugins/auth/munge/Makefile src/plugins/auth/none/Makefile src/plugins/checkpoint/Makefile src/plugins/checkpoint/aix/Makefile src/plugins/checkpoint/none/Makefile src/plugins/checkpoint/ompi/Makefile src/plugins/checkpoint/xlch/Makefile src/plugins/checkpoint/blcr/Makefile src/plugins/checkpoint/blcr/cr_checkpoint.sh src/plugins/checkpoint/blcr/cr_restart.sh src/plugins/crypto/Makefile src/plugins/crypto/munge/Makefile src/plugins/crypto/openssl/Makefile src/plugins/gres/Makefile src/plugins/gres/gpu/Makefile src/plugins/gres/nic/Makefile src/plugins/jobacct_gather/Makefile src/plugins/jobacct_gather/linux/Makefile src/plugins/jobacct_gather/aix/Makefile src/plugins/jobacct_gather/none/Makefile src/plugins/jobcomp/Makefile src/plugins/jobcomp/filetxt/Makefile src/plugins/jobcomp/none/Makefile src/plugins/jobcomp/script/Makefile src/plugins/jobcomp/mysql/Makefile src/plugins/jobcomp/pgsql/Makefile src/plugins/job_submit/Makefile src/plugins/job_submit/cnode/Makefile src/plugins/job_submit/defaults/Makefile src/plugins/job_submit/logging/Makefile src/plugins/job_submit/lua/Makefile src/plugins/job_submit/partition/Makefile src/plugins/preempt/Makefile src/plugins/preempt/none/Makefile src/plugins/preempt/partition_prio/Makefile src/plugins/preempt/qos/Makefile src/plugins/priority/Makefile src/plugins/priority/basic/Makefile src/plugins/priority/multifactor/Makefile src/plugins/proctrack/Makefile src/plugins/proctrack/aix/Makefile src/plugins/proctrack/pgid/Makefile src/plugins/proctrack/linuxproc/Makefile src/plugins/proctrack/rms/Makefile src/plugins/proctrack/sgi_job/Makefile src/plugins/proctrack/cgroup/Makefile src/plugins/proctrack/lua/Makefile src/plugins/sched/Makefile src/plugins/sched/backfill/Makefile src/plugins/sched/builtin/Makefile src/plugins/sched/hold/Makefile src/plugins/sched/wiki/Makefile src/plugins/sched/wiki2/Makefile src/plugins/select/Makefile src/plugins/select/bgq/Makefile src/plugins/select/bluegene/Makefile src/plugins/select/bluegene/block_allocator/Makefile src/plugins/select/bluegene/plugin/Makefile src/plugins/select/cons_res/Makefile src/plugins/select/cray/Makefile src/plugins/select/linear/Makefile src/plugins/switch/Makefile src/plugins/switch/elan/Makefile src/plugins/switch/none/Makefile src/plugins/switch/federation/Makefile src/plugins/mpi/Makefile src/plugins/mpi/mpich1_p4/Makefile src/plugins/mpi/mpich1_shmem/Makefile src/plugins/mpi/mpichgm/Makefile src/plugins/mpi/mpichmx/Makefile src/plugins/mpi/mvapich/Makefile src/plugins/mpi/lam/Makefile src/plugins/mpi/none/Makefile src/plugins/mpi/openmpi/Makefile src/plugins/task/Makefile src/plugins/task/affinity/Makefile src/plugins/task/none/Makefile src/plugins/topology/Makefile src/plugins/topology/3d_torus/Makefile src/plugins/topology/node_rank/Makefile src/plugins/topology/none/Makefile src/plugins/topology/tree/Makefile doc/Makefile doc/man/Makefile doc/html/Makefile doc/html/configurator.html testsuite/Makefile testsuite/expect/Makefile testsuite/slurm_unit/Makefile testsuite/slurm_unit/api/Makefile testsuite/slurm_unit/api/manual/Makefile testsuite/slurm_unit/common/Makefile" +ac_config_files="$ac_config_files Makefile config.xml auxdir/Makefile contribs/Makefile contribs/arrayrun/Makefile contribs/cray/Makefile contribs/lua/Makefile contribs/pam/Makefile contribs/perlapi/Makefile contribs/perlapi/libslurm/Makefile contribs/perlapi/libslurm/perl/Makefile.PL contribs/perlapi/libslurmdb/Makefile contribs/perlapi/libslurmdb/perl/Makefile.PL contribs/torque/Makefile contribs/phpext/Makefile contribs/phpext/slurm_php/config.m4 contribs/sjobexit/Makefile contribs/slurmdb-direct/Makefile src/Makefile src/api/Makefile src/common/Makefile src/db_api/Makefile src/database/Makefile src/sacct/Makefile src/sacctmgr/Makefile src/sreport/Makefile src/sstat/Makefile src/sshare/Makefile src/salloc/Makefile src/sbatch/Makefile src/sattach/Makefile src/sprio/Makefile src/srun/Makefile src/srun_cr/Makefile src/slurmd/Makefile src/slurmd/common/Makefile src/slurmd/slurmd/Makefile src/slurmd/slurmstepd/Makefile src/slurmdbd/Makefile src/slurmctld/Makefile src/sbcast/Makefile src/scontrol/Makefile src/scancel/Makefile src/squeue/Makefile src/sinfo/Makefile src/smap/Makefile src/strigger/Makefile src/sview/Makefile src/plugins/Makefile src/plugins/accounting_storage/Makefile src/plugins/accounting_storage/common/Makefile src/plugins/accounting_storage/filetxt/Makefile src/plugins/accounting_storage/mysql/Makefile src/plugins/accounting_storage/pgsql/Makefile src/plugins/accounting_storage/none/Makefile src/plugins/accounting_storage/slurmdbd/Makefile src/plugins/auth/Makefile src/plugins/auth/authd/Makefile src/plugins/auth/munge/Makefile src/plugins/auth/none/Makefile src/plugins/checkpoint/Makefile src/plugins/checkpoint/aix/Makefile src/plugins/checkpoint/none/Makefile src/plugins/checkpoint/ompi/Makefile src/plugins/checkpoint/blcr/Makefile src/plugins/checkpoint/blcr/cr_checkpoint.sh src/plugins/checkpoint/blcr/cr_restart.sh src/plugins/crypto/Makefile src/plugins/crypto/munge/Makefile src/plugins/crypto/openssl/Makefile src/plugins/gres/Makefile src/plugins/gres/gpu/Makefile src/plugins/gres/nic/Makefile src/plugins/jobacct_gather/Makefile src/plugins/jobacct_gather/linux/Makefile src/plugins/jobacct_gather/aix/Makefile src/plugins/jobacct_gather/none/Makefile src/plugins/jobcomp/Makefile src/plugins/jobcomp/filetxt/Makefile src/plugins/jobcomp/none/Makefile src/plugins/jobcomp/script/Makefile src/plugins/jobcomp/mysql/Makefile src/plugins/jobcomp/pgsql/Makefile src/plugins/job_submit/Makefile src/plugins/job_submit/cnode/Makefile src/plugins/job_submit/defaults/Makefile src/plugins/job_submit/logging/Makefile src/plugins/job_submit/lua/Makefile src/plugins/job_submit/partition/Makefile src/plugins/preempt/Makefile src/plugins/preempt/none/Makefile src/plugins/preempt/partition_prio/Makefile src/plugins/preempt/qos/Makefile src/plugins/priority/Makefile src/plugins/priority/basic/Makefile src/plugins/priority/multifactor/Makefile src/plugins/proctrack/Makefile src/plugins/proctrack/aix/Makefile src/plugins/proctrack/cgroup/Makefile src/plugins/proctrack/pgid/Makefile src/plugins/proctrack/linuxproc/Makefile src/plugins/proctrack/rms/Makefile src/plugins/proctrack/sgi_job/Makefile src/plugins/proctrack/lua/Makefile src/plugins/sched/Makefile src/plugins/sched/backfill/Makefile src/plugins/sched/builtin/Makefile src/plugins/sched/hold/Makefile src/plugins/sched/wiki/Makefile src/plugins/sched/wiki2/Makefile src/plugins/select/Makefile src/plugins/select/bluegene/Makefile src/plugins/select/bluegene/ba/Makefile src/plugins/select/bluegene/ba_bgq/Makefile src/plugins/select/bluegene/bl/Makefile src/plugins/select/bluegene/bl_bgq/Makefile src/plugins/select/bluegene/sfree/Makefile src/plugins/select/cons_res/Makefile src/plugins/select/cray/Makefile src/plugins/select/cray/libalps/Makefile src/plugins/select/cray/libemulate/Makefile src/plugins/select/linear/Makefile src/plugins/switch/Makefile src/plugins/switch/elan/Makefile src/plugins/switch/none/Makefile src/plugins/switch/federation/Makefile src/plugins/mpi/Makefile src/plugins/mpi/mpich1_p4/Makefile src/plugins/mpi/mpich1_shmem/Makefile src/plugins/mpi/mpichgm/Makefile src/plugins/mpi/mpichmx/Makefile src/plugins/mpi/mvapich/Makefile src/plugins/mpi/lam/Makefile src/plugins/mpi/none/Makefile src/plugins/mpi/openmpi/Makefile src/plugins/task/Makefile src/plugins/task/affinity/Makefile src/plugins/task/cgroup/Makefile src/plugins/task/none/Makefile src/plugins/topology/Makefile src/plugins/topology/3d_torus/Makefile src/plugins/topology/node_rank/Makefile src/plugins/topology/none/Makefile src/plugins/topology/tree/Makefile doc/Makefile doc/man/Makefile doc/html/Makefile doc/html/configurator.html testsuite/Makefile testsuite/expect/Makefile testsuite/slurm_unit/Makefile testsuite/slurm_unit/api/Makefile testsuite/slurm_unit/api/manual/Makefile testsuite/slurm_unit/common/Makefile" cat >confcache <<\_ACEOF @@ -20745,6 +21567,22 @@ as_fn_error $? "conditional \"BGL_LOADED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${BG_L_P_LOADED_TRUE}" && test -z "${BG_L_P_LOADED_FALSE}"; then + as_fn_error $? "conditional \"BG_L_P_LOADED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${REAL_BG_L_P_LOADED_TRUE}" && test -z "${REAL_BG_L_P_LOADED_FALSE}"; then + as_fn_error $? "conditional \"REAL_BG_L_P_LOADED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BGQ_LOADED_TRUE}" && test -z "${BGQ_LOADED_FALSE}"; then + as_fn_error $? "conditional \"BGQ_LOADED\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${BLUEGENE_LOADED_TRUE}" && test -z "${BLUEGENE_LOADED_FALSE}"; then as_fn_error $? "conditional \"BLUEGENE_LOADED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20757,6 +21595,10 @@ as_fn_error $? "conditional \"HAVE_AIX_PROCTRACK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${WITH_CYGWIN_TRUE}" && test -z "${WITH_CYGWIN_FALSE}"; then + as_fn_error $? "conditional \"WITH_CYGWIN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20769,6 +21611,10 @@ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${WITH_CXX_TRUE}" && test -z "${WITH_CXX_FALSE}"; then + as_fn_error $? "conditional \"WITH_CXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_GNU_LD_TRUE}" && test -z "${WITH_GNU_LD_FALSE}"; then as_fn_error $? "conditional \"WITH_GNU_LD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20806,6 +21652,22 @@ as_fn_error $? "conditional \"WITH_PGSQL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_CRAY_TRUE}" && test -z "${HAVE_CRAY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CRAY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_REAL_CRAY_TRUE}" && test -z "${HAVE_REAL_CRAY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_REAL_CRAY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ALPS_EMULATION_TRUE}" && test -z "${HAVE_ALPS_EMULATION_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ALPS_EMULATION\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CRAY_EMULATION_TRUE}" && test -z "${HAVE_CRAY_EMULATION_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CRAY_EMULATION\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${DEBUG_MODULES_TRUE}" && test -z "${DEBUG_MODULES_FALSE}"; then as_fn_error $? "conditional \"DEBUG_MODULES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20826,6 +21688,14 @@ as_fn_error $? "conditional \"HAVE_LUA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_MAN2HTML_TRUE}" && test -z "${HAVE_MAN2HTML_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MAN2HTML\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_MAN2HTML_TRUE}" && test -z "${HAVE_MAN2HTML_FALSE}"; then + as_fn_error $? "conditional \"HAVE_MAN2HTML\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_OPENSSL_TRUE}" && test -z "${HAVE_OPENSSL_FALSE}"; then as_fn_error $? "conditional \"HAVE_OPENSSL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20842,6 +21712,10 @@ as_fn_error $? "conditional \"WITH_BLCR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${BUILD_SRUN2APRUN_TRUE}" && test -z "${BUILD_SRUN2APRUN_FALSE}"; then + as_fn_error $? "conditional \"BUILD_SRUN2APRUN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 @@ -21804,6 +22678,9 @@ "config.xml") CONFIG_FILES="$CONFIG_FILES config.xml" ;; "auxdir/Makefile") CONFIG_FILES="$CONFIG_FILES auxdir/Makefile" ;; "contribs/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/Makefile" ;; + "contribs/arrayrun/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/arrayrun/Makefile" ;; + "contribs/cray/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/cray/Makefile" ;; + "contribs/lua/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/lua/Makefile" ;; "contribs/pam/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/pam/Makefile" ;; "contribs/perlapi/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/perlapi/Makefile" ;; "contribs/perlapi/libslurm/Makefile") CONFIG_FILES="$CONFIG_FILES contribs/perlapi/libslurm/Makefile" ;; @@ -21832,6 +22709,7 @@ "src/srun/Makefile") CONFIG_FILES="$CONFIG_FILES src/srun/Makefile" ;; "src/srun_cr/Makefile") CONFIG_FILES="$CONFIG_FILES src/srun_cr/Makefile" ;; "src/slurmd/Makefile") CONFIG_FILES="$CONFIG_FILES src/slurmd/Makefile" ;; + "src/slurmd/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/slurmd/common/Makefile" ;; "src/slurmd/slurmd/Makefile") CONFIG_FILES="$CONFIG_FILES src/slurmd/slurmd/Makefile" ;; "src/slurmd/slurmstepd/Makefile") CONFIG_FILES="$CONFIG_FILES src/slurmd/slurmstepd/Makefile" ;; "src/slurmdbd/Makefile") CONFIG_FILES="$CONFIG_FILES src/slurmdbd/Makefile" ;; @@ -21860,7 +22738,6 @@ "src/plugins/checkpoint/aix/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/aix/Makefile" ;; "src/plugins/checkpoint/none/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/none/Makefile" ;; "src/plugins/checkpoint/ompi/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/ompi/Makefile" ;; - "src/plugins/checkpoint/xlch/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/xlch/Makefile" ;; "src/plugins/checkpoint/blcr/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/blcr/Makefile" ;; "src/plugins/checkpoint/blcr/cr_checkpoint.sh") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/blcr/cr_checkpoint.sh" ;; "src/plugins/checkpoint/blcr/cr_restart.sh") CONFIG_FILES="$CONFIG_FILES src/plugins/checkpoint/blcr/cr_restart.sh" ;; @@ -21895,11 +22772,11 @@ "src/plugins/priority/multifactor/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/priority/multifactor/Makefile" ;; "src/plugins/proctrack/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/Makefile" ;; "src/plugins/proctrack/aix/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/aix/Makefile" ;; + "src/plugins/proctrack/cgroup/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/cgroup/Makefile" ;; "src/plugins/proctrack/pgid/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/pgid/Makefile" ;; "src/plugins/proctrack/linuxproc/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/linuxproc/Makefile" ;; "src/plugins/proctrack/rms/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/rms/Makefile" ;; "src/plugins/proctrack/sgi_job/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/sgi_job/Makefile" ;; - "src/plugins/proctrack/cgroup/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/cgroup/Makefile" ;; "src/plugins/proctrack/lua/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/proctrack/lua/Makefile" ;; "src/plugins/sched/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/sched/Makefile" ;; "src/plugins/sched/backfill/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/sched/backfill/Makefile" ;; @@ -21908,12 +22785,16 @@ "src/plugins/sched/wiki/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/sched/wiki/Makefile" ;; "src/plugins/sched/wiki2/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/sched/wiki2/Makefile" ;; "src/plugins/select/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/Makefile" ;; - "src/plugins/select/bgq/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bgq/Makefile" ;; "src/plugins/select/bluegene/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/Makefile" ;; - "src/plugins/select/bluegene/block_allocator/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/block_allocator/Makefile" ;; - "src/plugins/select/bluegene/plugin/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/plugin/Makefile" ;; + "src/plugins/select/bluegene/ba/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/ba/Makefile" ;; + "src/plugins/select/bluegene/ba_bgq/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/ba_bgq/Makefile" ;; + "src/plugins/select/bluegene/bl/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/bl/Makefile" ;; + "src/plugins/select/bluegene/bl_bgq/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/bl_bgq/Makefile" ;; + "src/plugins/select/bluegene/sfree/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/bluegene/sfree/Makefile" ;; "src/plugins/select/cons_res/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/cons_res/Makefile" ;; "src/plugins/select/cray/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/cray/Makefile" ;; + "src/plugins/select/cray/libalps/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/cray/libalps/Makefile" ;; + "src/plugins/select/cray/libemulate/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/cray/libemulate/Makefile" ;; "src/plugins/select/linear/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/select/linear/Makefile" ;; "src/plugins/switch/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/switch/Makefile" ;; "src/plugins/switch/elan/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/switch/elan/Makefile" ;; @@ -21930,6 +22811,7 @@ "src/plugins/mpi/openmpi/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/mpi/openmpi/Makefile" ;; "src/plugins/task/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/task/Makefile" ;; "src/plugins/task/affinity/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/task/affinity/Makefile" ;; + "src/plugins/task/cgroup/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/task/cgroup/Makefile" ;; "src/plugins/task/none/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/task/none/Makefile" ;; "src/plugins/topology/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/topology/Makefile" ;; "src/plugins/topology/3d_torus/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/topology/3d_torus/Makefile" ;; diff -Nru slurm-llnl-2.2.7/configure.ac slurm-llnl-2.3.2/configure.ac --- slurm-llnl-2.2.7/configure.ac 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/configure.ac 2011-12-05 17:20:08.000000000 +0000 @@ -25,6 +25,7 @@ AC_CONFIG_HEADERS([slurm/slurm.h]) dnl This needs to be close to the front to set CFLAGS=-m64 +X_AC_RPATH X_AC_BGL dnl we need to know if this is a bgl in the Makefile.am to do @@ -33,12 +34,28 @@ AC_SUBST(BGL_LOADED) X_AC_BGP + +dnl ok now check if We have an L or P system, Q is handled differently +dnl so handle it later. +AM_CONDITIONAL(BG_L_P_LOADED, test "x$ac_bluegene_loaded" = "xyes") +AC_SUBST(BG_L_P_LOADED) + +dnl ok now check if We are on a real L or P system, (test if to build srun +dnl or not. If we are emulating things we should build it. +AM_CONDITIONAL(REAL_BG_L_P_LOADED, test "x$ac_real_bluegene_loaded" = "xyes") +AC_SUBST(REAL_BG_L_P_LOADED) + X_AC_BGQ -dnl ok now check if bluegene was loaded at all +dnl We need to know if this is a Q system +AM_CONDITIONAL(BGQ_LOADED, test "x$ac_bgq_loaded" = "xyes") +AC_SUBST(BGQ_LOADED) + +dnl ok now check if any bluegene was loaded. AM_CONDITIONAL(BLUEGENE_LOADED, test "x$ac_bluegene_loaded" = "xyes") AC_SUBST(BLUEGENE_LOADED) + X_AC_AIX dnl @@ -54,14 +71,22 @@ [Define slurm_ prefix function aliases for plugins]) ;; esac +ac_have_cygwin=no dnl -dnl add some flags for Solaris +dnl add some flags for Solaris and cygwin dnl case "$host" in + *cygwin) LDFLAGS="$LDFLAGS -no-undefined" + SO_LDFLAGS="$SO_LDFLAGS \$(top_builddir)/src/api/libslurmhelper.la" + AC_SUBST(SO_LDFLAGS) + ac_have_cygwin=yes + ;; *solaris*) CC="/usr/sfw/bin/gcc" CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -I/usr/sfw/include" LDFLAGS="$LDFLAGS -L/usr/sfw/lib" + ;; esac +AM_CONDITIONAL(WITH_CYGWIN, test x"$ac_have_cygwin" == x"yes") dnl Checks for programs. dnl @@ -71,6 +96,7 @@ AC_PROG_LIBTOOL PKG_PROG_PKG_CONFIG([0.9.0]) +AM_CONDITIONAL(WITH_CXX, test -n "$ac_ct_CXX") AM_CONDITIONAL(WITH_GNU_LD, test "$with_gnu_ld" = "yes") @@ -172,7 +198,6 @@ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" -X_AC_CRAY X_AC_SUN_CONST X_AC_DIMENSIONS @@ -216,6 +241,9 @@ X_AC_DATABASES +dnl Cray ALPS/Basil support depends on mySQL +X_AC_CRAY + dnl checks for system services. dnl @@ -268,6 +296,12 @@ dnl X_AC_LUA +dnl check for presence of the man2html command +dnl +X_AC_MAN2HTML +AM_CONDITIONAL(HAVE_MAN2HTML, test "x$ac_have_man2html" = "xyes") +AC_SUBST(HAVE_MAN2HTML) + dnl check if we can use standard printf functions dnl X_AC_PRINTF_NULL @@ -335,6 +369,10 @@ dnl X_AC_BLCR +dnl +dnl Check to build native SLURM srun command or an aprun (Cray ALPS) wrapper. +dnl +X_AC_SRUN2APRUN dnl All slurm Makefiles: @@ -342,6 +380,9 @@ config.xml auxdir/Makefile contribs/Makefile + contribs/arrayrun/Makefile + contribs/cray/Makefile + contribs/lua/Makefile contribs/pam/Makefile contribs/perlapi/Makefile contribs/perlapi/libslurm/Makefile @@ -370,6 +411,7 @@ src/srun/Makefile src/srun_cr/Makefile src/slurmd/Makefile + src/slurmd/common/Makefile src/slurmd/slurmd/Makefile src/slurmd/slurmstepd/Makefile src/slurmdbd/Makefile @@ -398,7 +440,6 @@ src/plugins/checkpoint/aix/Makefile src/plugins/checkpoint/none/Makefile src/plugins/checkpoint/ompi/Makefile - src/plugins/checkpoint/xlch/Makefile src/plugins/checkpoint/blcr/Makefile src/plugins/checkpoint/blcr/cr_checkpoint.sh src/plugins/checkpoint/blcr/cr_restart.sh @@ -433,11 +474,11 @@ src/plugins/priority/multifactor/Makefile src/plugins/proctrack/Makefile src/plugins/proctrack/aix/Makefile + src/plugins/proctrack/cgroup/Makefile src/plugins/proctrack/pgid/Makefile src/plugins/proctrack/linuxproc/Makefile src/plugins/proctrack/rms/Makefile src/plugins/proctrack/sgi_job/Makefile - src/plugins/proctrack/cgroup/Makefile src/plugins/proctrack/lua/Makefile src/plugins/sched/Makefile src/plugins/sched/backfill/Makefile @@ -446,12 +487,16 @@ src/plugins/sched/wiki/Makefile src/plugins/sched/wiki2/Makefile src/plugins/select/Makefile - src/plugins/select/bgq/Makefile src/plugins/select/bluegene/Makefile - src/plugins/select/bluegene/block_allocator/Makefile - src/plugins/select/bluegene/plugin/Makefile + src/plugins/select/bluegene/ba/Makefile + src/plugins/select/bluegene/ba_bgq/Makefile + src/plugins/select/bluegene/bl/Makefile + src/plugins/select/bluegene/bl_bgq/Makefile + src/plugins/select/bluegene/sfree/Makefile src/plugins/select/cons_res/Makefile src/plugins/select/cray/Makefile + src/plugins/select/cray/libalps/Makefile + src/plugins/select/cray/libemulate/Makefile src/plugins/select/linear/Makefile src/plugins/switch/Makefile src/plugins/switch/elan/Makefile @@ -468,6 +513,7 @@ src/plugins/mpi/openmpi/Makefile src/plugins/task/Makefile src/plugins/task/affinity/Makefile + src/plugins/task/cgroup/Makefile src/plugins/task/none/Makefile src/plugins/topology/Makefile src/plugins/topology/3d_torus/Makefile diff -Nru slurm-llnl-2.2.7/contribs/arrayrun/arrayrun slurm-llnl-2.3.2/contribs/arrayrun/arrayrun --- slurm-llnl-2.2.7/contribs/arrayrun/arrayrun 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/arrayrun/arrayrun 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,69 @@ +#!/bin/bash +### Simulate an array job +### $Id: arrayrun,v 1.6 2011/02/10 11:57:53 root Exp $ + +### Copyright 2009,2010 Bjørn-Helge Mevik +### +### This program is free software; you can redistribute it and/or modify +### it under the terms of the GNU General Public License version 2 as +### published by the Free Software Foundation. +### +### This program is distributed in the hope that it will be useful, +### but WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +### GNU General Public License version 2 for more details. +### +### A copy of the GPL v. 2 text is available here: +### http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + + +## Debugging +#set -x + +### Configuration: +## The work horse: +WORKER=/site/lib/arrayrun_worker + +## Documentation: +function usage () { + echo "Run many instances of the same job or command in the queue system. +The instances are submitted via sbatch, and each get their own value +of the environment variable TASK_ID. This can be used to select which +intput or output file to use, etc. + +Usage: + arrayrun [-r] taskids [sbatch arguments] command [arguments] + arrayrun [-h | --help] + +Arguments: + '-r': Restart a job if it fails. For security reasons, each job is + restarted only once, and no more than 5 jobs will be restarted. + 'taskids': Run 'command' with TASK_ID set to the values specified in + 'taskids'. 'taskids' is a comma separated list of integers, + ranges of integers (first-last) or ranges with step size + (first-last:step). For instance + 1-5 means 1, 2, 3, 4, 5 + 1,4,6 means 1, 4, 6 + 10-20:5 means 10, 15, 20 + 1-5,15,100-150:25 means 1, 2, 3, 4, 5, 15, 100, 125, 150 + Note: spaces, negative number or decimal numbers are not allowed. + 'sbatch arguments': Any command line arguments for the implied sbatch. This + is most useful when 'command' is not a job script. + 'command': The command or job script to run. If it is a job script, it can + contain #SBATCH lines in addition to or instead of the 'sbatch + arguments'. + 'arguments': Any arguments for 'command'. + '-h', '--help' (or no arguments): Display this help." +} + +if [ $# == 0 -o "$1" == '--help' -o "$1" == '-h' ]; then + usage + exit 0 +fi + +if [ -n "$SLURM_JOB_ID" ]; then + ## Started in a job script. Run with srun to make "scancel" work + exec srun --ntasks=1 $WORKER "$@" +else + exec $WORKER "$@" +fi diff -Nru slurm-llnl-2.2.7/contribs/arrayrun/arrayrun_worker slurm-llnl-2.3.2/contribs/arrayrun/arrayrun_worker --- slurm-llnl-2.2.7/contribs/arrayrun/arrayrun_worker 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/arrayrun/arrayrun_worker 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,255 @@ +#!/usr/bin/perl +### Simulate an array job -- work horse script +### $Id: arrayrun_worker,v 1.30 2011/04/27 08:58:25 root Exp $ + +### Copyright 2009,2010,2011 Bjørn-Helge Mevik +### +### This program is free software; you can redistribute it and/or modify +### it under the terms of the GNU General Public License version 2 as +### published by the Free Software Foundation. +### +### This program is distributed in the hope that it will be useful, +### but WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +### GNU General Public License version 2 for more details. +### +### A copy of the GPL v. 2 text is available here: +### http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + + +### Note: This script is meant to be run by 'arrayrun'; do not +### run this script directly. + +use strict; +use List::Util qw/min/; +use Time::HiRes qw/sleep/; + +## Debug: +use warnings; +use constant DEBUG => 1; +$| = 1 if DEBUG; + +## Configuration: +my $maxJobs = 100; # Max total number of jobs in queue +my $maxIdleJobs = 10; # Max number of pending jobs in queue +my $maxBurst = 10; # Max number of jobs to submit at a time +my $pollSeconds = 180; # How many seconds to sleep between each poll +my $maxFails = 300; # Max errors to accept when submitting a job +my $retrySleep = 300; # Seconds to sleep between each retry +my $doubleCheckSleep = 30; # Seconds to sleep before double checking +my $maxRestarts = 10; # Max number of restarts all in all +my $sbatch = "/site/bin/sbatch";# Which sbatch command to use + +## Parse command line +my $restart = 0; +if (@ARGV && $ARGV[0] eq '-r') { + $restart = 1; + shift @ARGV; +} +my $jobSpec = shift @ARGV or die "Too few arguments\n"; +my @commandLine = @ARGV or die "Too few arguments\n"; +my @jobArray; +foreach (split /,/, $jobSpec) { + if (/^(\d+)$/) { + push @jobArray, $1; + } elsif (/^(\d+)[-:](\d+)$/) { + push @jobArray, $1 .. $2; + } elsif (/^(\d+)[-:](\d+):(\d+)$/) { + for (my $i = $1; $i <= $2; $i += $3) { + push @jobArray, $i; + } + } else { + die "Unknown TASK_ID specification: '$_'\n"; + } +} +die "No TASK_IDs specified\n" unless (@jobArray); + +print "TASK_IDs to submit: ", join(",", @jobArray), " +Command line: @commandLine\n" if DEBUG; +print "Will restart failed jobs\n" if DEBUG && $restart; + +## Setup +my $mainid = $ENV{'SLURM_JOB_ID'} || $ENV{'SLURM_JOBID'} || 'null'; +my $runids = []; # List of IDs of running jobs +my $pendids = []; # List of IDs of pending jobs +my $testids = []; # List of IDs to test +my %taskid; # TASK_ID for all submitted jobs +my @restartedTasks; # TASK_ID of all restarted jobs +my @tmp = (localtime())[5,4,3]; +my $starttime = sprintf "%d-%02d-%02d", $tmp[0] + 1900, $tmp[1] + 1, $tmp[2]; + +print "Main job id: $mainid\nStart time: $starttime\n" if DEBUG; + +## Trap signals such that any running sub jobs are cancelled if the +## main job is cancelled or times out. +sub clean_up { + print "Caught signal. Cleaning up...\n" if DEBUG; + ## Cancel any subjobs: + if (@{$runids} || @{$pendids} || @{$testids}) { + print "Cancelling @{$runids} @{$pendids} @{$testids}\n" if DEBUG; + system("echo scancel @{$runids} @{$pendids} @{$testids}"); + system("scancel @{$runids} @{$pendids} @{$testids}"); + print "Cancelled @{$runids} @{$pendids} @{$testids}\n" if DEBUG; + } + exit 0; +} +$SIG{'TERM'} = 'clean_up'; # scancel/timeout +$SIG{'INT'} = 'clean_up'; # ^C in interactive use + + +## Submit a job with fail resilience: +sub submit_job { + my $jobName = shift; + (my $commandLine = shift) || die "Job script not specified\n"; + my $id; + my $nFails = 0; + my $success = 0; + until ($success) { + my $fail = 0; + $id = `$sbatch --job-name=$jobName $commandLine 2>&1`; + if ($? == 0) { + chomp($id); + print " Result from submit: $id" if DEBUG; + if ($id =~ s/.*Submitted batch job //) { + $success = 1; + } + } else { + warn " sbatch failed with error code '$?' (output: '", + $id || '', "'): $!\n"; + $nFails++; + } + until ($success || $fail || $nFails > $maxFails) { + ## Double check that the job did not start + warn " Problem with submitting/checking job. Checking with squeue in a while.\n"; + sleep $doubleCheckSleep - 5 + int(rand(11)); + $id = `squeue -h -o '%i %j' -u $ENV{USER}`; + if ($? == 0) { + chomp($id); + print " Result from squeue: $id" if DEBUG; + if ($id =~ s/ $jobName//) { + warn "Job '$jobName' seems to have been started as jobid '$id'. Using that id.\n"; + $success = 1; + } else { + warn "Job '$jobName' did not start.\n"; + $fail = 1; + } + } else { + $nFails++; + } + } + unless ($success) { + if ($nFails <= $maxFails) { + warn " Could not submit job. Trying again in a while.\n"; + sleep $retrySleep - 5 + int(rand(11)); + } else { + die " Cannot submit job. Giving up after $nFails errors.\n"; + } + } + } + print " => job ID $id\n" if DEBUG; + $id; +} + + +## Check the given jobs, and return lists of the ones still running/waiting: +sub check_queue { + print scalar localtime, ": Checking queue...\n" if DEBUG; + my $queueids = `squeue -h -o '%i %t' 2>&1`; + if ($? != 0) { + print "squeue failed with error code '$?',\nmessage: $queueids\nI will assume all jobs are still running/waiting\n"; + return; + } + my $testids = [ @{$runids}, @{$pendids} ]; + print "Number of jobs to check: ", scalar @{$testids}, "\n" if DEBUG; + sleep 10 + rand; # Sleep to allow requeued jobs to get back + # in queue. + $runids = []; + $pendids = []; + foreach my $id (@{$testids}) { + if ($queueids =~ /$id (\w+)/) { + if ($1 eq "PD") { + print " Job $id is still waiting\n" if DEBUG; + push @{$pendids}, $id; + } else { + print " Job $id is still running\n" if DEBUG; + push @{$runids}, $id; + } + } else { + print " Job $id has finished:\n" if DEBUG; + my @sacctres = `sacct -o jobid,start,end,maxvmsize,maxrss,state,exitcode -S $starttime -j $id 2>&1`; + if ($? != 0) { + print " sacct failed with error code '$?',\n message: ", + @sacctres, " I will assume job $id finished successfully\n"; + } else { + print join(" ", @sacctres); + if (grep /^[ ]*$id[ ]+.*RUNNING/, @sacctres) { + print " Job seems to be still running, after all.\n" if DEBUG; + push @{$runids}, $id; + } elsif ($restart && !grep /^[ ]*$id[ ]+.*COMPLETED[ ]+0:0/, @sacctres) { + print " Job failed. "; + if (@restartedTasks >= $maxRestarts) { + print "Too many jobs have been restarted. Will not restart TASK_ID $taskid{$id}\n"; + } elsif (grep /^$taskid{$id}$/, @restartedTasks) { + print "TASK_ID $taskid{$id} has already been restarted once. Will not restart it again\n"; + } else { + print "Restarting TASK_ID $taskid{$id}\n"; + $ENV{'TASK_ID'} = $taskid{$id}; + my $newid = submit_job "$mainid.$taskid{$id}", "@commandLine"; + push @{$runids}, $newid; + $taskid{$newid} = $taskid{$id}; + push @restartedTasks, $taskid{$newid}; + sleep 1.5 + rand; # Sleep between 1.5 and 2.5 secs + } + } + } + } + } +} + + +## Make sure sub jobs do not inherit the main job TMPDIR or jobname: +delete $ENV{'TMPDIR'}; +delete $ENV{'SLURM_JOB_NAME'}; + +while (@jobArray) { + ## There is more to submit + print scalar localtime, ": Submitting jobs...\n" if DEBUG; + print scalar @jobArray, " more job(s) to submit\n" if DEBUG; + ## Submit as many as possible: + my $nToSubmit = min(scalar @jobArray, + $maxJobs - @{$runids} - @{$pendids}, + $maxIdleJobs - @{$pendids}, + $maxBurst); + print scalar(@{$runids}), " job(s) are running, and ", + scalar(@{$pendids}), " are waiting\n" if DEBUG; + print "Submitting $nToSubmit job(s):\n" if DEBUG; + for (my $i = 1; $i <= $nToSubmit; $i++) { + my $currJob = shift @jobArray; + print " TASK_ID $currJob:\n" if DEBUG; + ## Set $TASK_ID for the job: + $ENV{'TASK_ID'} = $currJob; + my $id = submit_job "$mainid.$currJob", "@commandLine"; + push @{$pendids}, $id; + $taskid{$id} = $currJob; + sleep 1.5 + rand; # Sleep between 1.5 and 2.5 secs + } + ## Wait a while: + print "Sleeping...\n" if DEBUG; + sleep $pollSeconds - 5 + int(rand(11)); + ## Find which are still running or waiting: + check_queue(); +} +print "All jobs have been submitted\n" if DEBUG; + +while (@{$runids} || @{$pendids}) { + ## Some jobs are still running or pending + print scalar(@{$runids}), " job(s) are still running, and ", + scalar(@{$pendids}), " are waiting\n" if DEBUG; + ## Wait a while + print "Sleeping...\n" if DEBUG; + sleep $pollSeconds - 5 + int(rand(11)); + ## Find which are still running or waiting: + check_queue(); +} + +print "Done.\n" if DEBUG; diff -Nru slurm-llnl-2.2.7/contribs/arrayrun/Makefile.am slurm-llnl-2.3.2/contribs/arrayrun/Makefile.am --- slurm-llnl-2.2.7/contribs/arrayrun/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/arrayrun/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,4 @@ +EXTRA_DIST = \ + arrayrun \ + arrayrun_worker \ + README diff -Nru slurm-llnl-2.2.7/contribs/arrayrun/Makefile.in slurm-llnl-2.3.2/contribs/arrayrun/Makefile.in --- slurm-llnl-2.2.7/contribs/arrayrun/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/arrayrun/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,475 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contribs/arrayrun +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/auxdir/acx_pthread.m4 \ + $(top_srcdir)/auxdir/libtool.m4 \ + $(top_srcdir)/auxdir/ltoptions.m4 \ + $(top_srcdir)/auxdir/ltsugar.m4 \ + $(top_srcdir)/auxdir/ltversion.m4 \ + $(top_srcdir)/auxdir/lt~obsolete.m4 \ + $(top_srcdir)/auxdir/slurm.m4 \ + $(top_srcdir)/auxdir/x_ac__system_configuration.m4 \ + $(top_srcdir)/auxdir/x_ac_affinity.m4 \ + $(top_srcdir)/auxdir/x_ac_aix.m4 \ + $(top_srcdir)/auxdir/x_ac_blcr.m4 \ + $(top_srcdir)/auxdir/x_ac_bluegene.m4 \ + $(top_srcdir)/auxdir/x_ac_cflags.m4 \ + $(top_srcdir)/auxdir/x_ac_cray.m4 \ + $(top_srcdir)/auxdir/x_ac_databases.m4 \ + $(top_srcdir)/auxdir/x_ac_debug.m4 \ + $(top_srcdir)/auxdir/x_ac_elan.m4 \ + $(top_srcdir)/auxdir/x_ac_env.m4 \ + $(top_srcdir)/auxdir/x_ac_federation.m4 \ + $(top_srcdir)/auxdir/x_ac_gpl_licensed.m4 \ + $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ + $(top_srcdir)/auxdir/x_ac_iso.m4 \ + $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ + $(top_srcdir)/auxdir/x_ac_munge.m4 \ + $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ + $(top_srcdir)/auxdir/x_ac_pam.m4 \ + $(top_srcdir)/auxdir/x_ac_printf_null.m4 \ + $(top_srcdir)/auxdir/x_ac_ptrace.m4 \ + $(top_srcdir)/auxdir/x_ac_readline.m4 \ + $(top_srcdir)/auxdir/x_ac_setpgrp.m4 \ + $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ + $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ + $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ + $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ + $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h $(top_builddir)/slurm/slurm.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTHD_CFLAGS = @AUTHD_CFLAGS@ +AUTHD_LIBS = @AUTHD_LIBS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ +BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ +BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ +BLCR_HOME = @BLCR_HOME@ +BLCR_LDFLAGS = @BLCR_LDFLAGS@ +BLCR_LIBS = @BLCR_LIBS@ +BLUEGENE_LOADED = @BLUEGENE_LOADED@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CMD_LDFLAGS = @CMD_LDFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ELAN_LIBS = @ELAN_LIBS@ +EXEEXT = @EXEEXT@ +FEDERATION_LDFLAGS = @FEDERATION_LDFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +HAVEMYSQLCONFIG = @HAVEMYSQLCONFIG@ +HAVEPGCONFIG = @HAVEPGCONFIG@ +HAVE_AIX = @HAVE_AIX@ +HAVE_ELAN = @HAVE_ELAN@ +HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ +HAVE_OPENSSL = @HAVE_OPENSSL@ +HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ +HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ +HWLOC_LDFLAGS = @HWLOC_LDFLAGS@ +HWLOC_LIBS = @HWLOC_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_LDFLAGS = @LIB_LDFLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MUNGE_CPPFLAGS = @MUNGE_CPPFLAGS@ +MUNGE_LDFLAGS = @MUNGE_LDFLAGS@ +MUNGE_LIBS = @MUNGE_LIBS@ +MYSQL_CFLAGS = @MYSQL_CFLAGS@ +MYSQL_LIBS = @MYSQL_LIBS@ +NCURSES = @NCURSES@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NUMA_LIBS = @NUMA_LIBS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PAM_DIR = @PAM_DIR@ +PAM_LIBS = @PAM_LIBS@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PGSQL_CFLAGS = @PGSQL_CFLAGS@ +PGSQL_LIBS = @PGSQL_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROCTRACKDIR = @PROCTRACKDIR@ +PROJECT = @PROJECT@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +RANLIB = @RANLIB@ +READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ +RELEASE = @RELEASE@ +SED = @SED@ +SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ +SEMAPHORE_SOURCES = @SEMAPHORE_SOURCES@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SLURMCTLD_PORT = @SLURMCTLD_PORT@ +SLURMCTLD_PORT_COUNT = @SLURMCTLD_PORT_COUNT@ +SLURMDBD_PORT = @SLURMDBD_PORT@ +SLURMD_PORT = @SLURMD_PORT@ +SLURM_API_AGE = @SLURM_API_AGE@ +SLURM_API_CURRENT = @SLURM_API_CURRENT@ +SLURM_API_MAJOR = @SLURM_API_MAJOR@ +SLURM_API_REVISION = @SLURM_API_REVISION@ +SLURM_API_VERSION = @SLURM_API_VERSION@ +SLURM_MAJOR = @SLURM_MAJOR@ +SLURM_MICRO = @SLURM_MICRO@ +SLURM_MINOR = @SLURM_MINOR@ +SLURM_PREFIX = @SLURM_PREFIX@ +SLURM_VERSION_NUMBER = @SLURM_VERSION_NUMBER@ +SLURM_VERSION_STRING = @SLURM_VERSION_STRING@ +SO_LDFLAGS = @SO_LDFLAGS@ +SSL_CPPFLAGS = @SSL_CPPFLAGS@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +UTIL_LIBS = @UTIL_LIBS@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +lua_CFLAGS = @lua_CFLAGS@ +lua_LIBS = @lua_LIBS@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + arrayrun \ + arrayrun_worker \ + README + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contribs/arrayrun/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contribs/arrayrun/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru slurm-llnl-2.2.7/contribs/arrayrun/README slurm-llnl-2.3.2/contribs/arrayrun/README --- slurm-llnl-2.2.7/contribs/arrayrun/README 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/arrayrun/README 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,132 @@ +-*- text -*- $Id: README.arrayrun,v 1.2 2011/06/28 11:21:27 bhm Exp $ + +Overview +======== + +Arrayrun is an attempt to simulate arrayjobs as found in SGE and PBS. It +works very similarly to mpirun: + + arrayrun [-r] taskids [sbatch arguments] YourCommand [arguments] + +In principle, arrayrun does + + TASK_ID=id sbatch [sbatch arguments] YourCommand [arguments] + +for each id in the 'taskids' specification. 'taskids' is a comma separated +list of integers, ranges of integers (first-last) or ranges with step size +(first-last:step). If -r is specified, arrayrun will restart a job that has +failed. To avoid endless loops, a job is only restarted once, and a maximum +of 10 (configurable) jobs will be restarted. + +The idea is to submit a master job that calls arrayrun to start the jobs, +for instance + + $ cat workerScript + #!/bin/sh + #SBATCH --account=YourProject + #SBATCH --time=1:0:0 + #SBATCH --mem-per-cpu=1G + + DATASET=dataset.$TASK_ID + OUTFILE=result.$TASK_ID + cd $SCRATCH + YourProgram $DATASET > $OUTFILE + # end of workerScript + + $ cat submitScript + #!/bin/sh + #SBATCH --account=YourProject + #SBATCH --time=50:0:0 + #SBATCH --mem-per-cpu=100M + + arrayrun 1-200 workerScript + # end of submitScript + + $ sbatch submitScript + +The --time specification in the master script must be long enough for all +jobs to finish. + +Alternatively, arrayrun can be run on the command line of a login or master +node. + +If the master job is cancelled, or the arrayrun process is killed, it tries +to scancel all running or pending jobs before it exits. + +Arrayrun tries not to flood the queue with jobs. It works by submitting a +limited number of jobs, sleeping a while, checking the status of its jobs, +and iterating, until all jobs have finished. All limits and times are +configurable (see below). It also tries to handle all errors in a graceful +manner. + + +Installation and configuration +============================== + +There are two files, arrayrun (to be called by users) and arrayrun_worker +(exec'ed or srun'ed by arrayrun, to make scancel work). + +arrayrun should be placed somewhere on the $PATH. arrayrun_worker can be +place anywhere. Both files should be accessible from all nodes. + +There are quite a few configuration variables, so arrayrun can be tuned to +work under different policies and work loads. + +Configuration variables in arrayrun: + +- WORKER: the location of arrayrun_worker + +Configuration variables in arrayrun_worker: + +- $maxJobs: The maximal number of jobs arrayrun will allow in the + queue at any time +- $maxIdleJobs: The maximal number of _pending_ jobs arrayrun will allow + in the queue at any time +- $maxBurst: The maximal number of jobs submitted at a time +- $pollSeconds: How many seconds to sleep between each iteration +- $maxFails: The maximal number of errors to accept when submitting a + job +- $retrySleep: The number of seconds to sleep between each retry when + submitting a job +- $doubleCheckSleep: The number of seconds to sleep after a failed sbatch + before runnung squeue to double check whether the job + was submitted or not. +- $maxRestarts: The maximal number of restarts all in all +- $sbatch: The full path of the sbatch command to use + + +Notes and caveats +================= + +Arrayrun is an attempt to simulate array jobs. As such, it is not +perfect or foolproof. Here are a couple of caveats. + +- Sometimes, arrayrun fails to scancel all jobs when it is itself cancelled + +- When arrayrun is run as a master job, it consumes one CPU for the whole + duration of the job. Also, the --time limit must be long enough. This can + be avoided by running arrayrun interactively on a master/login node (in + which case running it under screen is probably a good idea). + +- Arrayrun does (currently) not checkpoint, so if an arrayrun is restarted, + it starts from scratch with the first taskid. + +We welcome any suggestions for improvements or additional functionality! + + +Copyright +========= + +Copyright 2009,2010,2011 Bjørn-Helge Mevik + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License version 2 for more details. + +A copy of the GPL v. 2 text is available here: +http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt diff -Nru slurm-llnl-2.2.7/contribs/cray/etc_init_d_munge slurm-llnl-2.3.2/contribs/cray/etc_init_d_munge --- slurm-llnl-2.2.7/contribs/cray/etc_init_d_munge 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/etc_init_d_munge 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,559 @@ +#!/bin/sh +# +# /etc/init.d/munge - Start/stop script configured for Cray XT/XE +# +############################################################################### +# Written by Chris Dunlap . +# Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. +# Copyright (C) 2002-2007 The Regents of the University of California. +# UCRL-CODE-155910. +############################################################################### +# chkconfig: - 40 60 +# Description: Start/Stop the MUNGE authentication service. +############################################################################### +### BEGIN INIT INFO +# Provides: munge +# Required-Start: $remote_fs +# Required-Stop: $remote_fs +# Default-Start: 2 3 5 +# Default-Stop: +# Short-Description: Start/Stop the MUNGE authentication service. +# Description: MUNGE (MUNGE Uid 'N' Gid Emporium) is a highly scalable +# authentication service for creating and validating +# credentials. +### END INIT INFO + +unset DESC DAEMON CONFIG DAEMON_ARGS PIDFILE NICE USER SIGHUP_RELOAD + +prefix="/opt/slurm/munge" +exec_prefix="${prefix}" +sbindir="${exec_prefix}/sbin" +sysconfdir="${prefix}/etc" +localstatedir="/var" + +DESC="MUNGE" +DAEMON="$sbindir/munged" +#CONFIG=#_NOT_SUPPORTED_# +DAEMON_ARGS="--key-file ${prefix}/etc/munge.key" +PIDFILE="$localstatedir/run/munge/munged.pid" +#NICE= +#USER="daemon" +#SIGHUP_RELOAD=#_NOT_SUPPORTED_# + +############################################################################### + +service_init () +{ +# Determine the system type and initialize the environment. +# +# Note that the shell positional parameters must be preserved when calling +# this function in order for SuSE to initialize its environment properly. +## + PATH=/sbin:/usr/sbin:/bin:/usr/bin + DAEMON_NAME="`basename \"$DAEMON\"`" + SCRIPT_NAME="`basename \"$0\" .init | sed 's/^[SK][0-9][0-9]*//'`" + SIGTERM_TIMEOUT="3" + STATUS=0 + + # Read configuration defaults to override variables: + # $CONFIG, $DAEMON_ARGS, $PIDFILE, $USER, $NICE, $SIGHUP_RELOAD + ## + for dir in "$sysconfdir/default" "$sysconfdir/sysconfig"; do + [ -r "$dir/$SCRIPT_NAME" ] && . "$dir/$SCRIPT_NAME" + done + [ -z "$DAEMON_ARGS" -a -n "$OPTIONS" ] && DAEMON_ARGS="$OPTIONS" + [ "`id | sed 's/^uid=\([0-9]*\).*/\1/'`" -ne 0 ] && unset USER + expr -- "$NICE" : '[0-9]*$' >/dev/null 2>&1 && NICE="+$NICE" + [ -n "$SIGHUP_RELOAD" -a "$SIGHUP_RELOAD" != 0 ] \ + && RELOAD=1 || unset RELOAD + + if [ -f /etc/debian_version -a -x /sbin/start-stop-daemon ]; then + SYSTEM="DEBIAN" + [ -x "$DAEMON" ] || exit 0 # pkg removed but not purged + [ -r /etc/default/rcS ] && . /etc/default/rcS + [ -r /lib/init/vars.sh ] && . /lib/init/vars.sh + [ -r /lib/lsb/init-functions ] && . /lib/lsb/init-functions + elif [ -f /etc/redhat-release -a -r /etc/init.d/functions ]; then + SYSTEM="REDHAT" + . /etc/init.d/functions + RH_SUBSYS="/var/lock/subsys/$DAEMON_NAME" + elif [ -f /etc/SuSE-release -a -r /etc/rc.status ]; then + SYSTEM="SUSE" + . /etc/rc.status + rc_reset + elif [ -r /lib/lsb/init-functions ]; then + SYSTEM="LSB" + . /lib/lsb/init-functions + else + SYSTEM="OTHER" + fi + + # Exit if the package has been removed. + ## + [ -x "$DAEMON" ] || exit 5 # LSB: program not installed + + # Exit if the configuration has been removed. + ## + [ -z "$CONFIG" -o -r "$CONFIG" ] || exit 6 # LSB: program not configured +} + +service_fini () +{ +# Return the exit status. +## + case $SYSTEM in + SUSE) + rc_exit + ;; + DEBIAN|REDHAT|LSB|*) + exit $STATUS + ;; + esac +} + +service_start () +{ +# Start the service. +# +# Required by LSB, where running "start" on a service already running should be +# considered successful. +## + log_init "Starting $DESC" "$DAEMON_NAME" + + VARRUNDIR="$localstatedir/run/munge" + if [ ! -d "$VARRUNDIR" ]; then + mkdir -m 755 -p "$VARRUNDIR" + [ -n "$USER" ] && chown "$USER" "$VARRUNDIR" + fi + + case $SYSTEM in + DEBIAN) + if $0 status >/dev/null 2>&1; then + STATUS=0 + else + ERRMSG=`start-stop-daemon --start --quiet \ + ${NICE:+"--nicelevel"} ${NICE:+"$NICE"} \ + ${USER:+"--chuid"} ${USER:+"$USER"} \ + ${PIDFILE:+"--pidfile"} ${PIDFILE:+"$PIDFILE"} \ + --exec "$DAEMON" -- $DAEMON_ARGS 2>&1` + STATUS=$? + fi + ;; + REDHAT) + if $0 status >/dev/null 2>&1; then + STATUS=0 + else + daemon ${NICE:+"$NICE"} ${USER:+"--user"} ${USER:+"$USER"} \ + "$DAEMON" $DAEMON_ARGS + STATUS=$? + fi + [ $STATUS -eq 0 ] && touch "$RH_SUBSYS" >/dev/null 2>&1 + ;; + SUSE) + ERRMSG=`startproc ${NICE:+"-n"} ${NICE:+"$NICE"} \ + ${USER:+"-u"} ${USER:+"$USER"} \ + ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} \ + "$DAEMON" $DAEMON_ARGS 2>&1` + rc_status -v + STATUS=$? + ;; + LSB) + if [ -n "$USER" ]; then + ERRMSG=`su "$USER" -c "/sbin/start_daemon \ + ${NICE:+\"-n\"} ${NICE:+\"$NICE\"} \ + ${PIDFILE:+\"-p\"} ${PIDFILE:+\"$PIDFILE\"} \ + \"$DAEMON\" $DAEMON_ARGS" 2>&1` + else + ERRMSG=`start_daemon ${NICE:+"-n"} ${NICE:+"$NICE"} \ + ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} "$DAEMON" $DAEMON_ARGS 2>&1` + fi + STATUS=$? + ;; + *) + if $0 status >/dev/null 2>&1; then + STATUS=0 + else + [ -n "$NICE" ] && nice="nice -n $NICE" + if [ -n "$USER" ]; then + ERRMSG=`su "$USER" -c "$nice \"$DAEMON\" $DAEMON_ARGS" 2>&1` + else + ERRMSG=`$nice "$DAEMON" $DAEMON_ARGS 2>&1` + fi + STATUS=$? + fi + ;; + esac + log_fini "$STATUS" "$ERRMSG" +} + +service_stop () +{ +# Stop the service. +# +# Required by LSB, where running "stop" on a service already stopped or not +# running should be considered successful. +## + log_init "Stopping $DESC" "$DAEMON_NAME" + case $SYSTEM in + DEBIAN) + if ! $0 status >/dev/null 2>&1; then + STATUS=0 + else + start-stop-daemon --stop --quiet \ + ${PIDFILE:+"--pidfile"} ${PIDFILE:+"$PIDFILE"} \ + --name "$DAEMON_NAME" ${SIGTERM_TIMEOUT:+"--retry"} \ + ${SIGTERM_TIMEOUT:+"$SIGTERM_TIMEOUT"} >/dev/null 2>&1 + STATUS=$? + fi + ;; + REDHAT) + if ! $0 status >/dev/null 2>&1; then + STATUS=0 + else + killproc "$DAEMON" + STATUS=$? + fi + [ $STATUS -eq 0 ] && rm -f "$RH_SUBSYS" >/dev/null 2>&1 + ;; + SUSE) + killproc ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} \ + ${SIGTERM_TIMEOUT:+"-t"} ${SIGTERM_TIMEOUT:+"$SIGTERM_TIMEOUT"} \ + "$DAEMON" + rc_status -v + ;; + LSB) + killproc ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} "$DAEMON" + STATUS=$? + ;; + *) + signal_process "$DAEMON" + rc=$? + [ $rc -eq 0 -o $rc -eq 2 ] && STATUS=0 || STATUS=1 + ;; + esac + log_fini "$STATUS" + [ -f "$PIDFILE" ] && rm -f "$PIDFILE" +} + +service_restart () +{ +# Stop and restart the service if it is already running; +# otherwise, start the service. +# +# Required by LSB, where running "restart" on a service already stopped or not +# running should be considered successful. +## + if $0 status >/dev/null 2>&1; then + $0 stop && $0 start + else + $0 start + fi + + case $SYSTEM in + SUSE) + rc_status + ;; + DEBIAN|REDHAT|LSB|*) + STATUS=$? + ;; + esac +} + +service_try_restart () +{ +# Restart the service if it is already running. +# +# Optional for LSB, where running "try-restart" on a service already stopped or +# not running should be considered successful. +# Also known as "condrestart" by RedHat. +## + case $SYSTEM in + REDHAT) + [ -f "$RH_SUBSYS" ] && $0 restart || : + STATUS=$? + ;; + SUSE) + $0 status >/dev/null 2>&1 && $0 restart || rc_reset + rc_status + ;; + DEBIAN|LSB|*) + $0 status >/dev/null 2>&1 && $0 restart || : + STATUS=$? + ;; + esac +} + +service_reload () +{ +# Reload the configuration without stopping and restarting the service. +# +# Optional for LSB. +## + [ -z "$RELOAD" ] && STATUS=3 # LSB: unimplemented feature + + log_init "Reloading $DESC" "$DAEMON_NAME" + case $SYSTEM in + DEBIAN) + if [ -n "$RELOAD" ]; then + start-stop-daemon --stop --quiet --signal HUP \ + ${PIDFILE:+"--pidfile"} ${PIDFILE:+"$PIDFILE"} \ + --name "$DAEMON_NAME" >/dev/null 2>&1 + STATUS=$? + fi + ;; + REDHAT) + if [ -n "$RELOAD" ]; then + killproc "$DAEMON" -HUP + STATUS=$? + else + echo_failure + fi + ;; + SUSE) + if [ -n "$RELOAD" ]; then + killproc -HUP ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} "$DAEMON" + else + rc_failed $STATUS + fi + rc_status -v + ;; + LSB) + if [ -n "$RELOAD" ]; then + killproc ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} "$DAEMON" -HUP + STATUS=$? + fi + ;; + *) + if [ -n "$RELOAD" ]; then + signal_process "$DAEMON" "HUP" + STATUS=$? + fi + ;; + esac + log_fini "$STATUS" +} + +service_force_reload () +{ +# Reload the configuration if the service supports this; +# otherwise, restart the service if it is already running. +# +# Required by LSB, where running "force-reload" on a service already stopped or +# not running should be considered successful. +## + if [ -n "$RELOAD" ]; then + $0 reload + else + $0 try-restart + fi + + case $SYSTEM in + SUSE) + rc_status + ;; + DEBIAN|REDHAT|LSB|*) + STATUS=$? + ;; + esac +} + +service_status () +{ +# Print the current status of the service. +# +# Required by LSB. +## + case $SYSTEM in + REDHAT) + status "$DAEMON" + STATUS=$? + ;; + SUSE) + printf "Checking for service $DESC: " + checkproc ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} "$DAEMON" + rc_status -v + ;; + LSB) + printf "Checking status of $DESC: " + pids=`pidofproc ${PIDFILE:+"-p"} ${PIDFILE:+"$PIDFILE"} \ + "$DAEMON" 2>/dev/null` + STATUS=$? + if [ $STATUS -eq 0 -a -n "$pids" ]; then + echo "running." + elif [ $STATUS -ne 0 -a -s "$PIDFILE" ]; then + echo "dead." + else + echo "stopped." + fi + ;; + DEBIAN|*) + printf "Checking status of $DESC: " + pids=`query_pids "$DAEMON" "$PIDFILE"` + rc=$? + if [ $rc -eq 0 -a -n "$pids" ]; then + echo "running." + STATUS=0 # LSB: program is running + elif [ $rc -ne 0 -a -s "$PIDFILE" ]; then + echo "dead." + STATUS=1 # LSB: program is dead & pidfile exists + elif [ $rc -ne 0 ]; then + echo "stopped." + STATUS=3 # LSB: program is not running + else + echo "unknown." + STATUS=4 # LSB: program status unknown + fi + ;; + esac +} + +query_pids () +{ +# Writes the matching PIDs to stdout. +# Returns 0 on success (ie, pids found). +## + PROCNAME="$1" + PIDFILE="$2" + + if type pgrep >/dev/null 2>&1; then + pids=`pgrep -d ' ' -x "\`basename \"$PROCNAME\"\`" 2>/dev/null` + rc=$? + elif type pidof >/dev/null 2>&1; then + pids=`pidof -o $$ -x "$PROCNAME" 2>/dev/null` + rc=$? + else + pids=`(ps awx -o pid -o command || ps -e -f -o pid -o args) 2>/dev/null \ + | tail +2 | egrep "( |/)$PROCNAME( |$)" | grep -v egrep \ + | sed 's/ *\([0-9]*\).*/\1/' | sort -n | tr '\012' ' '` + [ -n "$pids" ] && rc=0 || rc=1 + fi + + unset pids_running + if [ -n "$pids" -a -r "$PIDFILE" ]; then + read pid_line < "$PIDFILE" + for pid in $pid_line; do + expr -- "$pid" : '[0-9]*$' >/dev/null 2>&1 \ + && expr -- " $pids " : ".* $pid .*" >/dev/null 2>&1 \ + && pids_running="$pids_running $pid" + done + [ -n "$pids_running" ] && pids=$pids_running + fi + + echo $pids + return $rc +} + +signal_process () +{ +# Returns 0 on success, 1 if kill failed, 2 if PROCNAME is not running. +## + PROCNAME="$1" + SIGNUM="$2" + + pids=`query_pids "$DAEMON" "$PIDFILE"` + [ $? -ne 0 -o -z "$pids" ] && return 2 + + kill ${SIGNUM:+"-$SIGNUM"} $pids >/dev/null 2>&1 + [ $? -ne 0 ] && return 1 + [ -n "$SIGNUM" ] && return 0 + + pids=`query_pids "$DAEMON" "$PIDFILE"` + [ $? -ne 0 -o -z "$pids" ] && return 0 + [ -z "$SIGTERM_TIMEOUT" ] && return 1 + + sleep "$SIGTERM_TIMEOUT" + kill -KILL $pids >/dev/null 2>&1 + pids=`query_pids "$DAEMON" "$PIDFILE"` + [ $? -ne 0 -o -z "$pids" ] && return 0 + return 1 +} + +log_init () +{ +# Output informational message at beginning of action. +## + MESSAGE="$1" + PROCNAME="$2" + + case $SYSTEM in + DEBIAN) + if [ "$VERBOSE" != no ]; then + if type log_daemon_msg >/dev/null 2>&1; then + log_daemon_msg "$MESSAGE" "$PROCNAME" + else + printf "$MESSAGE: $PROCNAME" + fi + fi + ;; + REDHAT|SUSE|LSB|*) + printf "$MESSAGE: $PROCNAME" + ;; + esac +} + +log_fini () +{ +# Output informational/error message at end of action. +## + STATUS="$1" + ERRMSG="$2" + + case $SYSTEM in + DEBIAN) + if [ "$VERBOSE" != no ]; then + if ( type log_end_msg && type log_failure_msg ) >/dev/null 2>&1; then + log_end_msg "$STATUS" + [ $STATUS -eq 0 -o -z "$ERRMSG" ] || log_failure_msg "$ERRMSG" + else + [ $STATUS -eq 0 ] && echo "." || echo " (failed)." + [ $STATUS -eq 0 -o -z "$ERRMSG" ] || echo "$ERRMSG" >&2 + fi + fi + ;; + REDHAT) + echo + ;; + SUSE) + [ $STATUS -eq 0 -o -z "$ERRMSG" ] || echo "$ERRMSG" >&2 + ;; + LSB|*) + [ $STATUS -eq 0 ] && echo "." || echo " (failed)." + [ $STATUS -eq 0 -o -z "$ERRMSG" ] || echo "$ERRMSG" >&2 + ;; + esac +} + +############################################################################### + +service_init "$@" + +case "$1" in + start) + service_start + ;; + stop) + service_stop + ;; + restart) + service_restart + ;; + try-restart|condrestart) + service_try_restart + ;; + reload) + service_reload + ;; + force-reload) + service_force_reload + ;; + status) + service_status + ;; + *) + echo "Usage: `basename \"$0\"`" \ + "(start|stop|restart|try-restart|reload|force-reload|status)" >&2 + exit 2 # LSB: invalid or excess argument(s) + ;; +esac + +service_fini diff -Nru slurm-llnl-2.2.7/contribs/cray/etc_sysconfig_slurm slurm-llnl-2.3.2/contribs/cray/etc_sysconfig_slurm --- slurm-llnl-2.2.7/contribs/cray/etc_sysconfig_slurm 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/etc_sysconfig_slurm 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,24 @@ +# +# /etc/sysconfig/slurm for Cray XT/XE systems +# +# Cray is SuSe-based, which means that ulimits from /etc/security/limits.conf +# will get picked up any time slurm is restarted e.g. via pdsh/ssh. Since slurm +# respects configured limits, this can mean that for instance batch jobs get +# killed as a result of configuring CPU time limits. Set sane start limits here. +# +# Values were taken from pam-1.1.2 Debian package +ulimit -t unlimited # max amount of CPU time in seconds +ulimit -d unlimited # max size of a process's data segment in KB +ulimit -l 64 # max memory size (KB) that may be locked into memory +ulimit -m unlimited # max RSS size in KB +ulimit -u unlimited # max number of processes +ulimit -f unlimited # max size of files written by process and children +ulimit -x unlimited # max number of file locks +ulimit -i 16382 # max number of pending signals +ulimit -q 819200 # max number of bytes in POSIX message queues +ulimit -Sc 0 # max size of core files (soft limit) +ulimit -Hc unlimited # max size of core files (hard limit) +ulimit -Ss 8192 # max stack size (soft limit) +ulimit -Hs unlimited # max stack size (hard limit) +ulimit -n 1024 # max number of open file descriptors +ulimit -v unlimited # max size of virtual memory (address space) in KB Binary files /tmp/jKTrgHjCbo/slurm-llnl-2.2.7/contribs/cray/libalps_test_programs.tar.gz and /tmp/eIE_aeUSMX/slurm-llnl-2.3.2/contribs/cray/libalps_test_programs.tar.gz differ diff -Nru slurm-llnl-2.2.7/contribs/cray/Makefile.am slurm-llnl-2.3.2/contribs/cray/Makefile.am --- slurm-llnl-2.2.7/contribs/cray/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,40 @@ +# +# Makefile for cray scripts +# + +AUTOMAKE_OPTIONS = foreign + +EXTRA_DIST = \ + etc_init_d_munge \ + etc_sysconfig_slurm \ + libalps_test_programs.tar.gz \ + munge_build_script.sh \ + opt_modulefiles_slurm \ + pam_job.c \ + slurm-build-script.sh + +if BUILD_SRUN2APRUN + bin_SCRIPTS = srun +endif + +srun: +_perldir=$(exec_prefix)`perl -e 'use Config; $$T=$$Config{installsitearch}; $$P=$$Config{installprefix}; $$P1="$$P/local"; $$T =~ s/$$P1//; $$T =~ s/$$P//; print $$T;'` + +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(DESTDIR)$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + echo "sed 's%use lib .*%use lib qw(${_perldir});%' $(top_srcdir)/contribs/cray/$$p.pl | sed 's%BINDIR%@bindir@%' > $(DESTDIR)$(bindir)/$$p"; \ + sed "s%use lib .*%use lib qw(${_perldir});%" $(top_srcdir)/contribs/cray/$$p.pl | sed "s%BINDIR%@bindir@%" > $(DESTDIR)$(bindir)/$$p; \ + chmod 755 $(DESTDIR)$(bindir)/$$p;\ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + echo " rm -f '$(DESTDIR)$(bindir)/$$p'"; \ + rm -f "$(DESTDIR)$(bindir)/$$p"; \ + done + +clean: + diff -Nru slurm-llnl-2.2.7/contribs/cray/Makefile.in slurm-llnl-2.3.2/contribs/cray/Makefile.in --- slurm-llnl-2.2.7/contribs/cray/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,532 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile for cray scripts +# + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contribs/cray +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/auxdir/acx_pthread.m4 \ + $(top_srcdir)/auxdir/libtool.m4 \ + $(top_srcdir)/auxdir/ltoptions.m4 \ + $(top_srcdir)/auxdir/ltsugar.m4 \ + $(top_srcdir)/auxdir/ltversion.m4 \ + $(top_srcdir)/auxdir/lt~obsolete.m4 \ + $(top_srcdir)/auxdir/slurm.m4 \ + $(top_srcdir)/auxdir/x_ac__system_configuration.m4 \ + $(top_srcdir)/auxdir/x_ac_affinity.m4 \ + $(top_srcdir)/auxdir/x_ac_aix.m4 \ + $(top_srcdir)/auxdir/x_ac_blcr.m4 \ + $(top_srcdir)/auxdir/x_ac_bluegene.m4 \ + $(top_srcdir)/auxdir/x_ac_cflags.m4 \ + $(top_srcdir)/auxdir/x_ac_cray.m4 \ + $(top_srcdir)/auxdir/x_ac_databases.m4 \ + $(top_srcdir)/auxdir/x_ac_debug.m4 \ + $(top_srcdir)/auxdir/x_ac_elan.m4 \ + $(top_srcdir)/auxdir/x_ac_env.m4 \ + $(top_srcdir)/auxdir/x_ac_federation.m4 \ + $(top_srcdir)/auxdir/x_ac_gpl_licensed.m4 \ + $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ + $(top_srcdir)/auxdir/x_ac_iso.m4 \ + $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ + $(top_srcdir)/auxdir/x_ac_munge.m4 \ + $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ + $(top_srcdir)/auxdir/x_ac_pam.m4 \ + $(top_srcdir)/auxdir/x_ac_printf_null.m4 \ + $(top_srcdir)/auxdir/x_ac_ptrace.m4 \ + $(top_srcdir)/auxdir/x_ac_readline.m4 \ + $(top_srcdir)/auxdir/x_ac_setpgrp.m4 \ + $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ + $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ + $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ + $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ + $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h $(top_builddir)/slurm/slurm.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(bindir)" +SCRIPTS = $(bin_SCRIPTS) +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTHD_CFLAGS = @AUTHD_CFLAGS@ +AUTHD_LIBS = @AUTHD_LIBS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ +BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ +BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ +BLCR_HOME = @BLCR_HOME@ +BLCR_LDFLAGS = @BLCR_LDFLAGS@ +BLCR_LIBS = @BLCR_LIBS@ +BLUEGENE_LOADED = @BLUEGENE_LOADED@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CMD_LDFLAGS = @CMD_LDFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ELAN_LIBS = @ELAN_LIBS@ +EXEEXT = @EXEEXT@ +FEDERATION_LDFLAGS = @FEDERATION_LDFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +HAVEMYSQLCONFIG = @HAVEMYSQLCONFIG@ +HAVEPGCONFIG = @HAVEPGCONFIG@ +HAVE_AIX = @HAVE_AIX@ +HAVE_ELAN = @HAVE_ELAN@ +HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ +HAVE_OPENSSL = @HAVE_OPENSSL@ +HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ +HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ +HWLOC_LDFLAGS = @HWLOC_LDFLAGS@ +HWLOC_LIBS = @HWLOC_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_LDFLAGS = @LIB_LDFLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MUNGE_CPPFLAGS = @MUNGE_CPPFLAGS@ +MUNGE_LDFLAGS = @MUNGE_LDFLAGS@ +MUNGE_LIBS = @MUNGE_LIBS@ +MYSQL_CFLAGS = @MYSQL_CFLAGS@ +MYSQL_LIBS = @MYSQL_LIBS@ +NCURSES = @NCURSES@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NUMA_LIBS = @NUMA_LIBS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PAM_DIR = @PAM_DIR@ +PAM_LIBS = @PAM_LIBS@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PGSQL_CFLAGS = @PGSQL_CFLAGS@ +PGSQL_LIBS = @PGSQL_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROCTRACKDIR = @PROCTRACKDIR@ +PROJECT = @PROJECT@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +RANLIB = @RANLIB@ +READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ +RELEASE = @RELEASE@ +SED = @SED@ +SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ +SEMAPHORE_SOURCES = @SEMAPHORE_SOURCES@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SLURMCTLD_PORT = @SLURMCTLD_PORT@ +SLURMCTLD_PORT_COUNT = @SLURMCTLD_PORT_COUNT@ +SLURMDBD_PORT = @SLURMDBD_PORT@ +SLURMD_PORT = @SLURMD_PORT@ +SLURM_API_AGE = @SLURM_API_AGE@ +SLURM_API_CURRENT = @SLURM_API_CURRENT@ +SLURM_API_MAJOR = @SLURM_API_MAJOR@ +SLURM_API_REVISION = @SLURM_API_REVISION@ +SLURM_API_VERSION = @SLURM_API_VERSION@ +SLURM_MAJOR = @SLURM_MAJOR@ +SLURM_MICRO = @SLURM_MICRO@ +SLURM_MINOR = @SLURM_MINOR@ +SLURM_PREFIX = @SLURM_PREFIX@ +SLURM_VERSION_NUMBER = @SLURM_VERSION_NUMBER@ +SLURM_VERSION_STRING = @SLURM_VERSION_STRING@ +SO_LDFLAGS = @SO_LDFLAGS@ +SSL_CPPFLAGS = @SSL_CPPFLAGS@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +UTIL_LIBS = @UTIL_LIBS@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +lua_CFLAGS = @lua_CFLAGS@ +lua_LIBS = @lua_LIBS@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign +EXTRA_DIST = \ + etc_init_d_munge \ + etc_sysconfig_slurm \ + libalps_test_programs.tar.gz \ + munge_build_script.sh \ + opt_modulefiles_slurm \ + pam_job.c \ + slurm-build-script.sh + +@BUILD_SRUN2APRUN_TRUE@bin_SCRIPTS = srun +_perldir = $(exec_prefix)`perl -e 'use Config; $$T=$$Config{installsitearch}; $$P=$$Config{installprefix}; $$P1="$$P/local"; $$T =~ s/$$P1//; $$T =~ s/$$P//; print $$T;'` +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contribs/cray/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign contribs/cray/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binSCRIPTS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-binSCRIPTS + + +srun: + +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(DESTDIR)$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + echo "sed 's%use lib .*%use lib qw(${_perldir});%' $(top_srcdir)/contribs/cray/$$p.pl | sed 's%BINDIR%@bindir@%' > $(DESTDIR)$(bindir)/$$p"; \ + sed "s%use lib .*%use lib qw(${_perldir});%" $(top_srcdir)/contribs/cray/$$p.pl | sed "s%BINDIR%@bindir@%" > $(DESTDIR)$(bindir)/$$p; \ + chmod 755 $(DESTDIR)$(bindir)/$$p;\ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + echo " rm -f '$(DESTDIR)$(bindir)/$$p'"; \ + rm -f "$(DESTDIR)$(bindir)/$$p"; \ + done + +clean: + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru slurm-llnl-2.2.7/contribs/cray/munge_build_script.sh slurm-llnl-2.3.2/contribs/cray/munge_build_script.sh --- slurm-llnl-2.2.7/contribs/cray/munge_build_script.sh 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/munge_build_script.sh 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,81 @@ +#!/bin/bash +# +# Build munge from sources on Cray +# + +#---------------------------------------------------------------------------- +# CONFIGURATION +#---------------------------------------------------------------------------- +# source and build directories +LIBROOT="${LIBROOT:-/ufs/slurm/build}" +MUNGE_BUILD="${LIBROOT}/munge" + +# packaging installation directory +DESTDIR="/tmp/munge-build" + +# installation and runtime directories +MUNGE_DIR="/opt/slurm/munge" +MUNGE_LOG="/var" + +# input and output tarballs +ZIP="${MUNGE_BUILD}/zip" +MUNGE_TAR=${ZIP}/munge*bz2 +TARBALL="${LIBROOT}/munge_build-$(date +%F).tar.gz" +#---------------------------------------------------------------------------- +# SUBROUTINES +#---------------------------------------------------------------------------- +function die() { echo -e "$@" >&2; exit 1; } + +function extract_top_level_from_tarball() { + local tarball="${1:?}" dir + test -r "${tarball}" || die "can not read ${tarball}" + + case $(file "${tarball}") in + *gzip*) compression="-z";; + *bzip2*) compression="--bzip2";; + *compress*data) compression="--uncompress";; + *tar*) compression="";; + *) compression="--auto-compress";; + esac + dir="$(tar ${compression} -tf ${tarball} | \ + sed -n '/\// { s@^\([^/]\+\).*$@\1@p;q }')" + test -n "${dir}" || die "can not determine directory from $tarball" + echo $dir +} +#---------------------------------------------------------------------------- +# SCRIPT PROPER +#---------------------------------------------------------------------------- +test ${UID} -eq 0 || die "This script wants to be run by root" +test -d $ZIP || die "No tarball directory '$ZIP'" +test -f ${MUNGE_TAR} || die "No munge tarball in $ZIP?" +test -d ${LIBROOT} || die "Can not cd to LIBROOT=$LIBROOT " +test -d ${MUNGE_BUILD} || mkdir -vp ${MUNGE_BUILD} +test -n "${DESTDIR}" || die "DESTDIR not set" + +# generate a clean build directory +rm -rf ${DESTDIR} ${TARBALL} + +# DEPENDENT CONFIGURATION +shopt -s nullglob +MUNGE_SRC="${MUNGE_BUILD}/$(extract_top_level_from_tarball ${MUNGE_TAR})" || exit 1 +MUNGE_LIB="${DESTDIR}${MUNGE_DIR}/lib" + +# extract source +test -d "${LIBROOT}" || mkdir -vp "${LIBROOT}" +test -d "${MUNGE_SRC}" || tar jxvf ${MUNGE_TAR} -C ${MUNGE_BUILD} +test -d "${MUNGE_SRC}" || die "need to extract munge tarball" +cd ${MUNGE_SRC} + +# Build +set -e +./configure --prefix=${MUNGE_DIR} --localstatedir=${MUNGE_LOG} + +make -j + +mkdir -p ${DESTDIR} +make DESTDIR=${DESTDIR%/}/ install + +# final tarball +tar -C ${DESTDIR} -zcpPvf ${TARBALL} .${MUNGE_DIR%/} +# scp ${TARBALL} boot: +echo generated output tarball ${TARBALL} diff -Nru slurm-llnl-2.2.7/contribs/cray/opt_modulefiles_slurm slurm-llnl-2.3.2/contribs/cray/opt_modulefiles_slurm --- slurm-llnl-2.2.7/contribs/cray/opt_modulefiles_slurm 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/opt_modulefiles_slurm 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,48 @@ +#%Module1.0##################################################################### +# slurm/munge support module +# Put into /opt/modulefiles/slurm or some other part of $MODULEPATH +################################################################################ + +# SUBROUTINES +proc ModulesHelp { } { + puts stderr "\tThis is slurm $::version.\n" + puts stderr "\tPlease consult http://www.schedmd.com/slurmdocs/cray.html" +} + +# CONFIGURATION +conflict xt-pbs pbs torque +set slurmdir "/opt/slurm/default" +set mungedir "/opt/slurm/munge" + +set version "UNKNOWN" +if {![catch {exec $slurmdir/bin/sbatch --version} out]} { + set version [lindex $out 1] +} +set helptext "Support for the SLURM $version resource allocation system" + +# SCRIPT PROPER +module-whatis $helptext + +prepend-path PATH "$slurmdir/bin" +prepend-path PATH "$mungedir/bin" + +prepend-path MANPATH "$slurmdir/share/man" +prepend-path MANPATH "$mungedir/share/man" + +prepend-path PERL5LIB "$slurmdir/lib/perl5/site_perl" + +# other useful environment variables +setenv SINFO_FORMAT {%9P %5a %8s %.10l %.6c %.6z %.7D %10T %N} +setenv SQUEUE_FORMAT {%.6i %.8u %.7a %.14j %.3t %9r %19S %.10M %.10L %.5D %.4C} +setenv SQUEUE_ALL {yes} ;# show hidden partitions, too +setenv SQUEUE_SORT {-t,e,S} + +# logfile aliases +set-alias sd_log {tail -f "/ufs/slurm/var/log/slurmd.log"} +set-alias sc_log {tail -f "/ufs/slurm/var/log/slurmctld.log"} + +if {[exec id -u] == 0} { + prepend-path PATH "$slurmdir/sbin" + prepend-path PATH "$mungedir/sbin" + set-alias sdown {scontrol shutdown} +} diff -Nru slurm-llnl-2.2.7/contribs/cray/pam_job.c slurm-llnl-2.3.2/contribs/cray/pam_job.c --- slurm-llnl-2.2.7/contribs/cray/pam_job.c 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/pam_job.c 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,117 @@ +/* + * pam_job.so module to create SGI PAGG container on user login. + * Needed on Cray systems to enable PAGG support in interactive salloc sessions. + * + * 1. install the pam-devel-xxx.rpm corresponding to your pam-xxx.rpm + * 2. compile with gcc -fPIC -DPIC -shared pam_job.c -o pam_job.so + * 3. install on boot:/rr/current/lib64/security/pam_job.so + * 4. in xtopview -c login, add the following line to /etc/pam.d/common-session: + * session optional pam_job.so + */ +/* + * Copyright (c) 2000-2006 Silicon Graphics, Inc. + * All Rights Reserved. + * Copyright (c) 2011 Centro Svizzero di Calcolo Scientifico + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include +#include +#include + +#include +#define error(fmt, args...) syslog(LOG_CRIT, "pam_job: " fmt, ##args); + +#define PAM_SM_ACCOUNT +#define PAM_SM_SESSION +#include +#include + +/* + * Unroll job.h/jobctl.h header declarations. The rationale is that not all + * systems will have the required kernel header (job.h, jobctl.h, paggctl.h). + * On early 2.4/2.5 kernels there was a paggctl() system call which was then + * replaced by the /proc/job ioctl, which this implementation tests for. All + * patches from ftp://oss.sgi.com/projects/pagg/download that use /proc/job + * for ioctl have the same ioctl declarations and identical ioctl parameters. + * Comparing these patches shows that, when using a 2.6 kernel, there are no + * differences at all in the 23 ioctl calls (last patch was for 2.6.16.21). + */ +#define JOB_CREATE _IOWR('A', 1, void *) +struct job_create { + uint64_t r_jid; /* Return value of JID */ + uint64_t jid; /* Jid value requested */ + int user; /* UID of user associated with job */ + int options; /* creation options - unused */ +}; + +PAM_EXTERN int pam_sm_open_session(pam_handle_t * pamh, int flags, + int argc, const char **argv) +{ + struct job_create jcreate = {0}; + struct passwd *passwd; + char *username; + int job_ioctl_fd; + + if (pam_get_item(pamh, PAM_USER, (void *)&username) != PAM_SUCCESS + || username == NULL) { + error("error recovering username"); + return PAM_SESSION_ERR; + } + + passwd = getpwnam(username); + if (!passwd) { + error("error getting passwd entry for %s", username); + return PAM_SESSION_ERR; + } + jcreate.user = passwd->pw_uid; /* uid associated with job */ + + if ((job_ioctl_fd = open("/proc/job", 0)) < 0) { + error("can not open /proc/job: %s", strerror(errno)); + return PAM_SESSION_ERR; + } else if (ioctl(job_ioctl_fd, JOB_CREATE, (void *)&jcreate) != 0) { + error("job_create failed (no container): %s", strerror(errno)); + close(job_ioctl_fd); + return PAM_SESSION_ERR; + } + close(job_ioctl_fd); + + if (jcreate.r_jid == 0) + error("WARNING - job containers disabled, no PAGG IDs created"); + return PAM_SUCCESS; +} + +/* + * Not all PAMified apps invoke session management modules. So, we supply + * this account management function for such cases. Whenever possible, it + * is still better to use the session management version. + */ +PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + int argc, const char **argv) +{ + if (pam_sm_open_session(pamh, flags, argc, argv) != PAM_SUCCESS) + return PAM_AUTH_ERR; + return PAM_SUCCESS; +} + +PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) +{ + return PAM_SUCCESS; +} diff -Nru slurm-llnl-2.2.7/contribs/cray/slurm-build-script.sh slurm-llnl-2.3.2/contribs/cray/slurm-build-script.sh --- slurm-llnl-2.2.7/contribs/cray/slurm-build-script.sh 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/slurm-build-script.sh 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,144 @@ +#!/bin/bash +# +# Build script for slurm on Cray XT/XE +# +#------------------------------------------------------------------------------- +# CONFIGURATION +#------------------------------------------------------------------------------- +#REBUILD="true" # remuild (no distclean/configure) + +# source and build directories +LIBROOT="${LIBROOT:-/ufs/slurm/build}" +SLURM_SRC="${SLURM_SRC:-${LIBROOT}/slurm-2.3.0-0.pre4}" + +BUILD_ERR="make.err" # make: stderr only +BUILD_LOG="make.log" # make: stdout + stderr + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# installation +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# packaging installation directory +DESTDIR="/tmp/slurm-build" + +# installation directory +SLURM_ROOT="/opt/slurm" + +# symlink to current version +SLURM_DEFAULT="${SLURM_ROOT}/default" + +# separate system configuration directory +SLURM_CONF="${SLURM_DEFAULT}/etc" + +# space-separated list of things to be built in the contribs/ folder +SLURM_CONTRIBS="contribs/perlapi contribs/torque" +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# dependencies +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# path to 'mysql_config' (will be overridden if mysql_config is in $PATH) +MYSQLCONF="${MYSQLCONF:-${LIBROOT}/mysql}" + +# munge installation directory containing lib/ and include/ subdirectories +MUNGE_DIR="${SLURM_ROOT}/munge" + +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#------------------------------------------------------------------------------- +# SUBROUTINES +#------------------------------------------------------------------------------- +function die() { echo -e "$@">&2; exit -1; } + +function get_slurm_version() { + local vers_file="META" + if ! test -f $vers_file; then + die "ERROR: no version file '$vers_file'"\ + "\nRun this script from within the slurm source directory" + fi + sed -n 's/^.*Version:[^0-9]*\([0-9\.]\+\).*$/\1/p' ${vers_file} +} + +#------------------------------------------------------------------------------- +# SCRIPT PROPER +#------------------------------------------------------------------------------- +shopt -u nullglob +test ${UID} -eq 0 || die "This script wants to be run by root" +test -d ${SLURM_SRC} || die "can not cd to SLURM_SRC=$SLURM_SRC" +test -d $MUNGE_DIR/lib || die "munge is not yet installed" +test -d ${LIBROOT} || die "can not cd to LIBROOT=$LIBROOT" +test -n "${DESTDIR}" || die "DESTDIR not set" + +#------------------------------------------------------------------- +# Dependent Configuration +#------------------------------------------------------------------- +cd ${SLURM_SRC} + +# get current slurm version +SLURM_VER=$(get_slurm_version) || die "check your PWD (current: $(pwd))" +SLURM_DIR="${SLURM_ROOT}/${SLURM_VER}" + +# name of the tarball to generate at the end of the build process +TARBALL="${LIBROOT}/slurm_build-${SLURM_VER}.tar.gz" +#------------------------------------------------------------------- +# Dependent Tests +#------------------------------------------------------------------- +MYSQL_CONFIG="$(which mysql_config 2>/dev/null)" +if test -z "$MYSQL_CONFIG" -a -z "$MYSQLCONF"; then + die 'no mysql_config in $PATH - set $MYSQLCONF manually' +elif test -n "$MYSQL_CONFIG"; then + MYSQLCONF="$(dirname ${MYSQL_CONFIG})" +fi + +# generate a clean build directory +rm -rf ${DESTDIR} ${TARBALL} +rm -f ${BUILD_ERR} ${BUILD_LOG} + +# (re)configure +if test -z "${REBUILD}"; then + set -x + # clean everything else + make -j distclean &>/dev/null + + ./configure \ + --prefix="${SLURM_DIR}" \ + --sysconfdir="${SLURM_CONF}" \ + --enable-debug \ + --enable-front-end\ + --enable-memory-leak-debug \ + --with-mysql_config=${MYSQLCONF}\ + --with-munge="${MUNGE_DIR}" \ + --with-hwloc="${HWLOC_DIR}" \ + || die "configure failed" +else + # avoid the slow reconfiguration process, don't build extras + unset SLURM_CONTRIBS + touch -r config.status configure config.* configure.ac Mak* +fi + +# Build +tail -F ${BUILD_LOG} & TAIL_PID=$! +set -ex + +# swap stderr, stdout, redirect errors in separate, and both into log file +(make -j 3>&1 1>&2 2>&3 | tee ${BUILD_ERR}) &>${BUILD_LOG} +kill ${TAIL_PID} 2>/dev/null +test -s ${BUILD_ERR} && cat ${BUILD_ERR} >&2 + +# Installation +mkdir -p ${DESTDIR} +make -j DESTDIR=${DESTDIR%/}/ install + +if false;then +# Perl-API and wrappers for qsub/qstat etc. +for CONTRIB in ${SLURM_CONTRIBS} +do + test -n "${REBUILD}" || make -C ${CONTRIB} clean + make -C ${CONTRIB} + make -C ${CONTRIB} DESTDIR=${DESTDIR%/} install +done +fi + +# create the default symlink +rm -vf ${DESTDIR}${SLURM_DEFAULT} +ln -s ${SLURM_VER} ${DESTDIR}${SLURM_DEFAULT} + +# Synchronize sources or generate tarball. +tar -C ${DESTDIR} -zcf ${TARBALL} .${SLURM_ROOT} && scp ${TARBALL} boot: diff -Nru slurm-llnl-2.2.7/contribs/cray/srun.pl slurm-llnl-2.3.2/contribs/cray/srun.pl --- slurm-llnl-2.2.7/contribs/cray/srun.pl 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/cray/srun.pl 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,1103 @@ +#! /usr/bin/perl -w +############################################################################### +# +# srun - Wrapper for Cray's "aprun" command. If not executed within a job +# allocation, then also use "salloc" to create the allocation before +# executing "aprun". +# +############################################################################### +# +# Copyright (C) 2011 SchedMD LLC . +# Supported by the Oak Ridge National Laboratory Extreme Scale Systems Center +# Written by Morris Jette . +# CODE-OCEC-09-009. All rights reserved. +# +# This file is part of SLURM, a resource management program. +# For details, see . +# Please also read the included file: DISCLAIMER. +# +# SLURM is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# In addition, as a special exception, the copyright holders give permission +# to link the code of portions of this program with the OpenSSL library under +# certain conditions as described in each individual source file, and +# distribute linked combinations including the two. You must obey the GNU +# General Public License in all respects for all of the code used other than +# OpenSSL. If you modify file(s) with this exception, you may extend this +# exception to your version of the file(s), but you are not obligated to do +# so. If you do not wish to do so, delete this exception statement from your +# version. If you delete this exception statement from all source files in +# the program, then also delete it here. +# +# SLURM is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along +# with SLURM; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +############################################################################### + +use strict; +use FindBin; +use Getopt::Long 2.24 qw(:config no_ignore_case require_order autoabbrev bundling); +use lib "${FindBin::Bin}/../lib/perl"; +use autouse 'Pod::Usage' => qw(pod2usage); +use Slurm ':all'; +use Switch; + +my ( $account, + $acctg_freq, + $alps, + $aprun_line_buf, + $aprun_quiet, + $begin_time, + $chdir, + $check_time, + $check_dir, + $comment, + $constraint, + $contiguous, + $cores_per_socket, + $cpu_bind, + $cpus_per_task, + $debugger_test, + $dependency, + $disable_status, + $distribution, + $error_file, + $epilog, + $exclude_nodes, + $exclusive, + $extra_node_info, + $group_id, + $gres, + $help, + $hint, + $hold, + $immediate, + $input_file, + $job_id, + $job_name, + $kill_on_bad_exit, + $label, + $licenses, + $mail_type, + $mail_user, + $man, + $memory, + $memory_per_cpu, + $memory_bind, $mem_local, + $min_cpus, + $msg_timeout, + $mpi_type, + $multi_prog, $multi_executables, + $network, + $nice, + $no_allocate, + $nodelist, $nid_list, + $ntasks_per_core, + $ntasks_per_node, + $ntasks_per_socket, + $num_nodes, + $num_tasks, + $overcommit, + $output_file, + $open_mode, + $partition, + $preserve_env, + $prolog, + $propagate, + $pty, + $quiet, + $quit_on_interrupt, + $qos, + $relative, + $resv_ports, + $reservation, + $restart_dir, + $share, + $signal, + $slurmd_debug, + $sockets_per_node, + $task_epilog, + $task_prolog, + $test_only, + $threads_per_core, + $threads, + $time_limit, $time_secs, + $time_min, + $tmp_disk, + $unbuffered, + $user_id, + $version, + $verbose, + $wait, + $wc_key +); + +my $aprun = "aprun"; +my $salloc = "BINDIR/salloc"; +my $srun = "BINDIR/srun"; + +my $have_job; +$aprun_line_buf = 1; +$aprun_quiet = 1; +$have_job = 0; + +foreach (keys %ENV) { +# print "$_=$ENV{$_}\n"; + $have_job = 1 if $_ eq "SLURM_JOBID"; + $account = $ENV{$_} if $_ eq "SLURM_ACCOUNT"; + $acctg_freq = $ENV{$_} if $_ eq "SLURM_ACCTG_FREQ"; + $chdir = $ENV{$_} if $_ eq "SLURM_WORKING_DIR"; + $check_time = $ENV{$_} if $_ eq "SLURM_CHECKPOINT"; + $check_dir = $ENV{$_} if $_ eq "SLURM_CHECKPOINT_DIR"; + $cpu_bind = $ENV{$_} if $_ eq "SLURM_CPU_BIND"; + $cpus_per_task = $ENV{$_} if $_ eq "SLURM_CPUS_PER_TASK"; + $dependency = $ENV{$_} if $_ eq "SLURM_DEPENDENCY"; + $distribution = $ENV{$_} if $_ eq "SLURM_DISTRIBUTION"; + $epilog = $ENV{$_} if $_ eq "SLURM_EPILOG"; + $error_file = $ENV{$_} if $_ eq "SLURM_STDERRMODE"; + $exclusive = 1 if $_ eq "SLURM_EXCLUSIVE"; + $input_file = $ENV{$_} if $_ eq "SLURM_STDINMODE"; + $job_name = $ENV{$_} if $_ eq "SLURM_JOB_NAME"; + $label = 1 if $_ eq "SLURM_LABELIO"; + $memory_bind = $ENV{$_} if $_ eq "SLURM_MEM_BIND"; + $memory_per_cpu = $ENV{$_} if $_ eq "SLURM_MEM_PER_CPU"; + $memory = $ENV{$_} if $_ eq "SLURM_MEM_PER_NODE"; + $mpi_type = $ENV{$_} if $_ eq "SLURM_MPI_TYPE"; + $network = $ENV{$_} if $_ eq "SLURM_NETWORK"; + $ntasks_per_core = $ENV{$_} if $_ eq "SLURM_NTASKS_PER_CORE"; + $ntasks_per_node = $ENV{$_} if $_ eq "SLURM_NTASKS_PER_NODE"; + $ntasks_per_socket = $ENV{$_} if $_ eq "SLURM_NTASKS_PER_SOCKET"; + $num_tasks = $ENV{$_} if $_ eq "SLURM_NTASKS"; + $num_nodes = $ENV{$_} if $_ eq "SLURM_NNODES"; + $overcommit = $ENV{$_} if $_ eq "SLURM_OVERCOMMIT"; + $open_mode = $ENV{$_} if $_ eq "SLURM_OPEN_MODE"; + $output_file = $ENV{$_} if $_ eq "SLURM_STDOUTMODE"; + $partition = $ENV{$_} if $_ eq "SLURM_PARTITION"; + $prolog = $ENV{$_} if $_ eq "SLURM_PROLOG"; + $qos = $ENV{$_} if $_ eq "SLURM_QOS"; + $restart_dir = $ENV{$_} if $_ eq "SLURM_RESTART_DIR"; + $resv_ports = 1 if $_ eq "SLURM_RESV_PORTS"; + $signal = $ENV{$_} if $_ eq "SLURM_SIGNAL"; + $task_epilog = $ENV{$_} if $_ eq "SLURM_TASK_EPILOG"; + $task_prolog = $ENV{$_} if $_ eq "SLURM_TASK_PROLOG"; + $threads = $ENV{$_} if $_ eq "SLURM_THREADS"; + $time_limit = $ENV{$_} if $_ eq "SLURM_TIMELIMIT"; + $unbuffered = 1 if $_ eq "SLURM_UNBUFFEREDIO"; + $wait = $ENV{$_} if $_ eq "SLURM_WAIT"; + $wc_key = $ENV{$_} if $_ eq "SLURM_WCKEY"; +} + +# Make fully copy of execute line. This is needed only so that srun can run +# again and get the job's memory allocation for aprun (which is not available +# until after the allocation has been made). Add quotes if an argument contains +# spaces (e.g. --alps="-r 1" needs to be treadted as a single argument). +my ($i, $len, $orig_exec_line); +if ($ARGV[0]) { + foreach (@ARGV) { + if (index($_, " ") == -1) { + $orig_exec_line .= "$_ "; + } else { + $orig_exec_line .= "\"$_\" "; + } + } +} + +GetOptions( + 'A|account=s' => \$account, + 'acctg-freq=i' => \$acctg_freq, + 'alps=s' => \$alps, + 'B|extra-node-info=s' => \$extra_node_info, + 'begin=s' => \$begin_time, + 'D|chdir=s' => \$chdir, + 'checkpoint=s' => \$check_time, + 'checkpoint-dir=s' => \$check_dir, + 'comment=s' => \$comment, + 'C|constraint=s' => \$constraint, + 'contiguous' => \$contiguous, + 'cores-per-socket=i' => \$cores_per_socket, + 'cpu_bind=s' => \$cpu_bind, + 'c|cpus-per-task=i' => \$cpus_per_task, + 'd|dependency=s' => \$dependency, + 'debugger-test' => \$debugger_test, + 'X|disable-status' => \$disable_status, + 'e|error=s' => \$error_file, + 'epilog=s' => \$epilog, + 'x|exclude=s' => \$exclude_nodes, + 'exclusive' => \$exclusive, + 'gid=s' => \$group_id, + 'gres=s' => \$gres, + 'help|usage|?' => \$help, + 'hint=s' => \$hint, + 'H|hold' => \$hold, + 'I|immediate' => \$immediate, + 'i|input=s' => \$input_file, + 'jobid=i' => \$job_id, + 'J|job-name=s' => \$job_name, + 'K|kill-on-bad-exit' => \$kill_on_bad_exit, + 'l|label' => \$label, + 'L|licenses=s' => \$licenses, + 'm|distribution=s' => \$distribution, + 'mail-type=s' => \$mail_type, + 'mail-user=s' => \$mail_user, + 'man' => \$man, + 'mem=s' => \$memory, + 'mem-per-cpu=s' => \$memory_per_cpu, + 'mem_bind=s' => \$memory_bind, + 'mincpus=i' => \$min_cpus, + 'msg-timeout=i' => \$msg_timeout, + 'mpi=s' => \$mpi_type, + 'multi-prog' => \$multi_prog, + 'network=s' => \$network, + 'nice=i' => \$nice, + 'Z|no-allocate' => \$no_allocate, + 'w|nodelist=s' => \$nodelist, + 'ntasks-per-core=i' => \$ntasks_per_core, + 'ntasks-per-node=i' => \$ntasks_per_node, + 'ntasks-per-socket=i' => \$ntasks_per_socket, + 'n|ntasks=s' => \$num_tasks, + 'N|nodes=s' => \$num_nodes, + 'O|overcommit' => \$overcommit, + 'o|output=s' => \$output_file, + 'open-mode=s' => \$open_mode, + 'p|partition=s' => \$partition, + 'E|preserve-env' => \$preserve_env, + 'prolog=s' => \$prolog, + 'propagate=s' => \$propagate, + 'pty' => \$pty, + 'Q|quiet' => \$quiet, + 'q|quit-on-interrupt' => \$quit_on_interrupt, + 'qos=s' => \$qos, + 'r|relative=i' => \$relative, + 'resv-ports' => \$resv_ports, + 'reservation=s' => \$reservation, + 'restart-dir=s' => \$restart_dir, + 's|share' => \$share, + 'signal=s' => \$signal, + 'slurmd-debug=i' => \$slurmd_debug, + 'sockets-per-node=i' => \$sockets_per_node, + 'task-epilog=s' => \$task_epilog, + 'task-prolog=s' => \$task_prolog, + 'test-only' => \$test_only, + 'threads-per-core=i' => \$threads_per_core, + 'T|threads=i' => \$threads, + 't|time=s' => \$time_limit, + 'time-min=s' => \$time_min, + 'tmp=s' => \$tmp_disk, + 'u|unbuffered' => \$unbuffered, + 'uid=s' => \$user_id, + 'V|version' => \$version, + 'v|verbose' => \$verbose, + 'W|wait=i' => \$wait, + 'wckey=s' => \$wc_key +) or pod2usage(2); + +if ($version) { + system("$salloc --version"); + exit(0); +} + +# Display man page or usage if necessary +pod2usage(0) if $man; +if ($help) { + if ($< == 0) { # Cannot invoke perldoc as root + my $id = eval { getpwnam("nobody") }; + $id = eval { getpwnam("nouser") } unless defined $id; + $id = -2 unless defined $id; + $< = $id; + } + $> = $<; # Disengage setuid + $ENV{PATH} = "/bin:/usr/bin"; # Untaint PATH + delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'}; + if ($0 =~ /^([-\/\w\.]+)$/) { $0 = $1; } # Untaint $0 + else { die "Illegal characters were found in \$0 ($0)\n"; } + +} + +my $script; +if ($ARGV[0]) { + foreach (@ARGV) { + $script .= "$_ "; + } +} else { + pod2usage(2); +} +my %res_opts; +my %node_opts; + +my $command; + +if ($have_job == 0) { + if ($memory_per_cpu) { + $i = index($memory_per_cpu, "hs"); + if ($i >= 0) { + $memory_per_cpu = substr($memory_per_cpu, 0, $i); + } + $i = index($memory_per_cpu, "h"); + if ($i >= 0) { + $memory_per_cpu = substr($memory_per_cpu, 0, $i); + } + } + + $command = "$salloc"; + $command .= " --account=$account" if $account; + $command .= " --acctg-freq=$acctg_freq" if $acctg_freq; + $command .= " --begin=$begin_time" if $begin_time; + $command .= " --chdir=$chdir" if $chdir; + $command .= " --comment=\"$comment\"" if $comment; + $command .= " --constraint=\"$constraint\"" if $constraint; + $command .= " --contiguous" if $contiguous; + $command .= " --cores-per-socket=$cores_per_socket" if $cores_per_socket; + $command .= " --cpu_bind=$cpu_bind" if $cpu_bind; + $command .= " --cpus-per-task=$cpus_per_task" if $cpus_per_task; + $command .= " --dependency=$dependency" if $dependency; + $command .= " --distribution=$distribution" if $distribution; + $command .= " --exclude=$exclude_nodes" if $exclude_nodes; + $command .= " --exclusive" if $exclusive; + $command .= " --extra-node-info=$extra_node_info" if $extra_node_info; + $command .= " --gid=$group_id" if $group_id; + $command .= " --gres=$gres" if $gres; + $command .= " --hint=$hint" if $hint; + $command .= " --hold" if $hold; + $command .= " --immediate" if $immediate; + $command .= " --jobid=$job_id" if $job_id; + $command .= " --job-name=$job_name" if $job_name; + $command .= " --licenses=$licenses" if $licenses; + $command .= " --mail-type=$mail_type" if $mail_type; + $command .= " --mail-user=$mail_user" if $mail_user; + $command .= " --mem=$memory" if $memory; + $command .= " --mem-per-cpu=$memory_per_cpu" if $memory_per_cpu; + $command .= " --mem_bind=$memory_bind" if $memory_bind; + $command .= " --mincpus=$min_cpus" if $min_cpus; + $command .= " --network=$network" if $network; + $command .= " --nice=$nice" if $nice; + $command .= " --nodelist=$nodelist" if $nodelist; + $command .= " --ntasks-per-core=$ntasks_per_core" if $ntasks_per_core; + $command .= " --ntasks-per-node=$ntasks_per_node" if $ntasks_per_node; + $command .= " --ntasks-per-socket=$ntasks_per_socket" if $ntasks_per_socket; + $command .= " --ntasks=$num_tasks" if $num_tasks; + $command .= " --nodes=$num_nodes" if $num_nodes; + $command .= " --overcommit" if $overcommit; + $command .= " --partition=$partition" if $partition; + $command .= " --qos=$qos" if $qos; + $command .= " --quiet" if !$verbose; + $command .= " --reservation=$reservation" if $reservation; + $command .= " --share" if $share; + $command .= " --signal=$signal" if $signal; + $command .= " --sockets-per-node=$sockets_per_node" if $sockets_per_node; + $command .= " --threads-per-core=$threads_per_core" if $threads_per_core; + $command .= " --minthreads=$threads" if $threads; + $command .= " --time=$time_limit" if $time_limit; + $command .= " --time-min=$time_min" if $time_min; + $command .= " --tmp=$tmp_disk" if $tmp_disk; + $command .= " --uid=$user_id" if $user_id; + $command .= " --verbose" if $verbose; + $command .= " --wait=$wait" if $wait; + $command .= " --wckey=$wc_key" if $wc_key; + $command .= " $srun"; + $command .= " $orig_exec_line"; +} else { + $command = "$aprun"; + + # Options that get set if aprun is launch either under salloc or directly + if ($alps) { + # aprun fails when arguments are duplicated, prevent duplicates here + $command .= " $alps"; + if (index($alps, "-d") >= 0) { $cpus_per_task = 0 }; + if (index($alps, "-L") >= 0) { $nodelist = 0 }; + if (index($alps, "-m") >= 0) { $memory_per_cpu = 0 }; + if (index($alps, "-n") >= 0) { $num_tasks = 0; $num_nodes = 0; } + if (index($alps, "-N") >= 0) { $ntasks_per_node = 0; $num_nodes = 0; } + if (index($alps, "-q") >= 0) { $aprun_quiet = 0 }; + if (index($alps, "-S") >= 0) { $ntasks_per_socket = 0 }; + if (index($alps, "-sn") >= 0) { $sockets_per_node = 0 }; + if (index($alps, "-ss") >= 0) { $memory_bind = 0 }; + if (index($alps, "-T") >= 0) { $aprun_line_buf = 0 }; + if (index($alps, "-t") >= 0) { $time_limit = 0 }; + } + # $command .= " -a" no srun equivalent, architecture + # $command .= " -b" no srun equivalent, bypass transfer of executable + # $command .= " -B" no srun equivalent, reservation options + # $command .= " -cc" NO GOOD MAPPING, cpu binding + $command .= " -d $cpus_per_task" if $cpus_per_task; + # Resource sharing largely controlled by SLURM configuration, + # so this is an imperfect mapping of options + if ($share) { + $command .= " -F share"; + } elsif ($exclusive) { + $command .= " -F exclusive"; + } + $nid_list = get_nids($nodelist) if $nodelist; + $command .= " -L $nid_list" if $nodelist; + $command .= " -m $memory_per_cpu" if $memory_per_cpu; + if ($ntasks_per_node) { + $command .= " -N $ntasks_per_node"; + if (!$num_tasks && $num_nodes) { + $num_tasks = $ntasks_per_node * $num_nodes; + } + } elsif ($num_nodes) { + $num_tasks = $num_nodes if !$num_tasks; + $ntasks_per_node = int (($num_tasks + $num_nodes - 1) / $num_nodes); + $command .= " -N $ntasks_per_node"; + } + + if ($num_tasks) { + $command .= " -n $num_tasks"; + } elsif ($num_nodes) { + $command .= " -n $num_nodes"; + } + + $command .= " -q" if $aprun_quiet; + # $command .= " -r" no srun equivalent, core specialization + $command .= " -S $ntasks_per_socket" if $ntasks_per_socket; + # $command .= " -sl" no srun equivalent, task placement on nodes + $command .= " -sn $sockets_per_node" if $sockets_per_node; + if ($memory_bind && ($memory_bind =~ /local/i)) { + $command .= " -ss" + } + $command .= " -T" if $aprun_line_buf; + $time_secs = get_seconds($time_limit) if $time_limit; + $command .= " -t $time_secs" if $time_secs; + $script = get_multi_prog($script) if $multi_prog; + + # Input and output file options are not supported by aprun, but can be handled by perl + $command .= " <$input_file" if $input_file; + if ($error_file && ($error_file eq "none")) { + $error_file = "/dev/null" + } + if ($output_file && ($output_file eq "none")) { + $output_file = "/dev/null" + } + if ($open_mode && ($open_mode eq "a")) { + $command .= " >>$output_file" if $output_file; + if ($error_file) { + $command .= " 2>>$error_file"; + } elsif ($output_file) { + $command .= " 2>&1"; + } + } else { + $command .= " >$output_file" if $output_file; + if ($error_file) { + $command .= " 2>$error_file"; + } elsif ($output_file) { + $command .= " 2>&1"; + } + } + + # Srun option which are not supported by aprun + # $command .= " --disable-status" if $disable_status; + # $command .= " --epilog=$epilog" if $epilog; + # $command .= " --kill-on-bad-exit" if $kill_on_bad_exit; + # $command .= " --label" if $label; + # $command .= " --mpi=$mpi_type" if $mpi_type; + # $command .= " --msg-timeout=$msg_timeout" if $msg_timeout; + # $command .= " --no-allocate" if $no_allocate; + # $command .= " --open-mode=$open_mode" if $open_mode; + # $command .= " --preserve_env" if $preserve_env; + # $command .= " --prolog=$prolog" if $prolog; + # $command .= " --propagate=$propagate" if $propagate; + # $command .= " --pty" if $pty; + # $command .= " --quit-on-interrupt" if $quit_on_interrupt; + # $command .= " --relative=$relative" if $relative; + # $command .= " --restart-dir=$restart_dir" if $restart_dir; + # $command .= " --resv-ports" if $resv_ports; + # $command .= " --slurmd-debug=$slurmd_debug" if $slurmd_debug; + # $command .= " --task-epilog=$task_epilog" if $task_epilog; + # $command .= " --task-prolog=$task_prolog" if $task_prolog; + # $command .= " --test-only" if $test_only; + # $command .= " --unbuffered" if $unbuffered; + + $command .= " $script"; +} + +# Print here for debugging +#print "command=$command\n"; +exec $command; + +# Convert a SLURM time format to a number of seconds +sub get_seconds { + my ($duration) = @_; + $duration = 0 unless $duration; + my $seconds = 0; + + # Convert [[HH:]MM:]SS to duration in seconds + if ($duration =~ /^(?:(\d+):)?(\d*):(\d+)$/) { + my ($hh, $mm, $ss) = ($1 || 0, $2 || 0, $3); + $seconds += $ss; + $seconds += $mm * 60; + $seconds += $hh * 60; + } elsif ($duration =~ /^(\d+)$/) { # Convert number in minutes to seconds + $seconds = $duration * 60; + } else { # Unsupported format + die("Invalid time limit specified ($duration)\n"); + } + return $seconds; +} + +# Convert a SLURM hostlist expression into the equivalent node index value +# expression +sub get_nids { + my ($host_list) = @_; + my ($nid_list) = $host_list; + + $nid_list =~ s/nid//g; + $nid_list =~ s/\[//g; + $nid_list =~ s/\]//g; + $nid_list =~ s/\d+/sprintf("%d", $&)/ge; + + return $nid_list; +} + +# Convert SLURM multi_prog file into a aprun options +# srun file format is "task_IDs command args..." +sub get_multi_prog { + my ($fname) = @_; + my ($out_line); + my ($line_num) = 0; + my (@words, $word, $word_num, $num_pes); + + open(MP, $fname) || die("Can not read $fname"); + while () { + chop; + if ($line_num != 0) { + $out_line .= " : "; + } + $line_num++; + @words = split(' ', $_); + $word_num = 0; + foreach $word (@words) { + if ($word_num == 0) { + $num_pes = get_num_pes($word); + $out_line .= " -n $num_pes"; + } else { + $out_line .= " $word"; + } + $word_num++; + } + } + return $out_line; +} + +# Convert number ranges and sets into a total count +sub get_num_pes { + my ($pes_range) = @_; + my (@ranges, $range); + my (@pairs, $value); + my ($min_value, $max_value); + my ($value_num); + my ($num_pes) = 0; + + @ranges = split(',', $pes_range); + foreach $range (@ranges) { + @pairs = split('-', $range); + $value_num = 0; + foreach $value (@pairs) { + if ($value_num == 0) { + $min_value = $value; + } + $max_value = $value; + $value_num++; + } + $num_pes += ($max_value - $min_value + 1); + } + return $num_pes; +} + +# Convert a size format containing optional K, M, G or T suffix to the +# equvalent number of megabytes +sub convert_mb_format { + my ($value) = @_; + my ($amount, $suffix) = $value =~ /(\d+)($|[KMGT])/i; + return if !$amount; + $suffix = lc($suffix); + + if (!$suffix) { + $amount /= 1048576; + } elsif ($suffix eq "k") { + $amount /= 1024; + } elsif ($suffix eq "m") { + #do nothing this is what we want. + } elsif ($suffix eq "g") { + $amount *= 1024; + } elsif ($suffix eq "t") { + $amount *= 1048576; + } else { + print "don't know what to do with suffix $suffix\n"; + return; + + } + + return $amount; +} +############################################################################## + +__END__ + +=head1 NAME + +B - Run a parallel job + +=head1 SYNOPSIS + +srun [OPTIONS...] executable [arguments...] + +=head1 DESCRIPTION + +Run a parallel job on cluster managed by SLURM. If necessary, srun will +first create a resource allocation in which to run the parallel job. + +=head1 OPTIONS + +NOTE: Many options only apply only when creating a job allocation as noted +below. When srun is allocated within an existing job allocation, these options +are silently ignored. +The following aprun options have no equivalent in srun and must be specified +by using the B<--alps> option: B<-a>, B<-b>, B<-B>, B<-cc>, B<-f>, B<-r>, and +B<-sl>. Many other options do not exact functionality matches, but duplication +srun behavior to the extent possible. + +=over 4 + +=item B<-A> | B<--account=account> + +Charge resources used by this job to specified account. +Applies only when creating a job allocation. + +=item B<--acctg-freq=seconds> + +Specify the accounting sampling interval. +Applies only when creating a job allocation. + +=item B<--alps=options> + +Specify the options to be passed to the aprun command. +If conflicting native srun options and --alps options are specified, the srun +option will take precedence for creating the job allocation (if necessary) and +the --alps options will take precedence for launching tasks with the aprun +command. + +=item B<-B> | B<--extra-node-info=sockets[:cores[:threads]]> + +Request a specific allocation of resources with details as to the +number and type of computational resources within a cluster: +number of sockets (or physical processors) per node, +cores per socket, and threads per core. +The individual levels can also be specified in separate options if desired: +B<--sockets-per-node=sockets>, B<--cores-per-socket=cores>, and +B<--threads-per-core=threads>. +Applies only when creating a job allocation. + +=item B<--begin=time> + +Defer job initiation until the specified time. +Applies only when creating a job allocation. + +=item B<--checkpoint=interval> + +Specify the time interval between checkpoint creations. +Not supported on Cray computers. + +=item B<--checkpoint-dir=directory> + +Directory where the checkpoint image should be written. +Not supported on Cray computers. + +=item B<--comment=string> + +An arbitrary comment. +Applies only when creating a job allocation. + +=item B<-C> | B<--constraint=string> + +Constrain job allocation to nodes with the specified features. +Applies only when creating a job allocation. + +=item B<--contiguous> + +Constrain job allocation to contiguous nodes. +Applies only when creating a job allocation. + +=item B<--cores-per-socket=number> + +Count of cores to be allocated per per socket. +Applies only when creating a job allocation. + +=item B<--cpu_bind=options> + +Strategy to be used for binding tasks to the CPUs. +Not supported on Cray computers due to many incompatible options. +Use --alps="-cc=..." instead. + +=item B<-c> | B<--cpus-per-task=number> + +Count of CPUs required per task. + +=item B<-d> | B<--dependency=[condition:]jobid> + +Wait for job(s) to enter specified condition before starting the job. +Valid conditions include after, afterany, afternotok, and singleton. +Applies only when creating a job allocation. + +=item B<-D> | B<--chdir=directory> + +Execute the program from the specified directory. +Applies only when creating a job allocation. + +=item B<--epilog=filename> + +Execute the specified program after the job step completes. +Not supported on Cray computers. + +=item B<-e> | B<--error=filename> + +Write stderr to the specified file. + +=item B<--exclusive> + +The job or job step will not share resources with other jobs or job steps. +Applies only when creating a job allocation. + +=item B<-E> | B<--preserve-env> + +Pass the current values of environment variables SLURM_NNODES and +SLURM_NTASKS through to the executable, rather than computing them +from command line parameters. +Not supported on Cray computers. + +=item B<--gid=group> + +If user root, then execute the job using the specified group access permissions. +Specify either a group name or ID. +Applies only when creating a job allocation. + +=item B<--gres=gres_name[*count]> + +Allocate the specified generic resources on each allocated node. +Applies only when creating a job allocation. + +=item B<-?> | B<--help> + +Print brief help message. + +=item B<--hint=type> + +Bind tasks according to application hints. +Not supported on Cray computers. + +=item B<-H> | B<--hold> + +Submit the job in a held state. +Applies only when creating a job allocation. + +=item B<-I> | B<--immediate> + +Exit if resources are not available immediately. +Applies only when creating a job allocation. + +=item B<-i> | B<--input=filename> + +Read stdin from the specified file. + +=item B<--jobid=number> + +Specify the job ID number. Usable only by SlurmUser or user root. +Applies only when creating a job allocation. + +=item B<-J> | B<--job-name=name> + +Specify a name for the job. +Applies only when creating a job allocation. + +=item B<-K> | B<--kill-on-bad-exit> + +Immediately terminate a job if any task exits with a non-zero exit code. +Not supported on Cray computers. + +=item B<-l> | B<--label> + +Prepend task number to lines of stdout/err. +Not supported on Cray computers. + +=item B<-l> | B<--licenses=names> + +Specification of licenses (or other resources available on all +nodes of the cluster) which must be allocated to this job. +Applies only when creating a job allocation. + +=item B<-m> | B<--distribution=layout> + +Specification of distribution of tasks across nodes. +Not supported on Cray computers. + +=item B<--man> + +Print full documentation. + +=item B<--mail-type=event> + +Send email when certain event types occur. +Valid events values are BEGIN, END, FAIL, REQUEUE, and ALL (any state change). +Applies only when creating a job allocation. + +=item B<--mail-user=user> + +Send email to the specified user(s). The default is the submitting user. +Applies only when creating a job allocation. + +=item B<--mem=MB> + +Specify the real memory required per node in MegaBytes. +Applies only when creating a job allocation. + +=item B<--mem-per-cpu=MB>[h|hs] + +Specify the real memory required per CPU in MegaBytes. +Applies only when creating a job allocation. +Append "h" or "hs" for huge page support. + +=item B<--mem_bind=type> + +Bind tasks to memory. The only option supported on Cray systems is local which +confines memory use to the local NUMA node. + +=item B<--mincpus> + +Specify a minimum number of logical CPUs per node. +Applies only when creating a job allocation. + +=item B<--msg-timeout=second> + +Modify the job launch message timeout. +Not supported on Cray computers. + +=item B<--mpi=implementation> + +Identify the type of MPI to be used. May result in unique initiation +procedures. +Not supported on Cray computers. + +=item B<--multi-prog> + +Run a job with different programs and different arguments for +each task. In this case, the executable program specified is +actually a configuration file specifying the executable and +arguments for each task. + +=item B<--network=type> + +Specify the communication protocol to be used. +Not supported on Cray computers. + +=item B<--nice=adjustment> + +Run the job with an adjusted scheduling priority within SLURM. +Applies only when creating a job allocation. + +=item B<--ntasks-per-core=ntasks> + +Request the maximum ntasks be invoked on each core. +Applies only when creating a job allocation. + +=item B<--ntasks-per-node=ntasks> + +Request the maximum ntasks be invoked on each node. +Applies only when creating a job allocation. + +=item B<--ntasks-per-socket=ntasks> + +Request the maximum ntasks be invoked on each socket. +Applies only when creating a job allocation. + +=item B<-N> | B<--nodes=num_nodes> + +Number of nodes to use. + +=item B<-n> | B<--ntasks=num_tasks> + +Number of tasks to launch. + +=item B<--overcommit> + +Overcommit resources. Launch more than one task per CPU. +Applies only when creating a job allocation. + +=item B<-o> | B<--output=filename> + +Specify the mode for stdout redirection. + +=item B<--open-mode=append|truncate> + +Open the output and error files using append or truncate mode as specified. + +=item B<--partition=name> + +Request a specific partition for the resource allocation. +Applies only when creating a job allocation. + +=item B<--prolog=filename> + +Execute the specified file before launching the job step. +Not supported on Cray computers. + +=item B<--propagate=rlimits> + +Allows users to specify which of the modifiable (soft) resource limits +to propagate to the compute nodes and apply to their jobs. +Not supported on Cray computers. + +=item B<--pty> + +Execute task zero in pseudo terminal mode. +Not supported on Cray computers. + +=item B<--quiet> + +Suppress informational messages. Errors will still be displayed. + +=item B<-q> | B<--quit-on-interrupt> + +Quit immediately on single SIGINT (Ctrl-C). +This is the default behavior on Cray computers. + +=item B<--qos=quality_of_service> + +Request a specific quality of service for the job. +Applies only when creating a job allocation. + +=item B<-r> | B<--relative=offset> + +Run a job step at the specified node offset in the current allocation. +Not supported on Cray computers. + +=item B<--resv-ports=filename> + +Reserve communication ports for this job. Used for OpenMPI. +Not supported on Cray computers. + +=item B<--reservation=name> + +Allocate resources for the job from the named reservation. +Applies only when creating a job allocation. + +=item B<--restart-dir=directory> + +Specifies the directory from which the job or job step's checkpoint should +be read. +Not supported on Cray computers. + +=item B<-s> | B<--share> + +The job can share nodes with other running jobs. +Applies only when creating a job allocation. + +=item B<--signal=signal_number[@seconds]> + +When a job is within the specified number seconds of its end time, +send it the specified signal number. + +=item B<--slurmd-debug=level> + +Specify a debug level for slurmd daemon. +Not supported on Cray computers. + +=item B<--sockets-per-node=number> + +Allocate the specified number of sockets per node. +Applies only when creating a job allocation. + +=item B<--task-epilog=filename> + +Execute the specified program after each task terminates. +Not supported on Cray computers. + +=item B<--task-prolog=filename> + +Execute the specified program before launching each task. +Not supported on Cray computers. + +=item B<--test-only> + +Returns an estimate of when a job would be scheduled. +Not supported on Cray computers. + +=item B<-t> | B<--time=limit> + +Time limit in minutes or hours:minutes:seconds. + +=item B<--time-min=limit> + +The minimum acceptable time limit in minutes or hours:minutes:seconds. +The default value is the same as the maximum time limit. +Applies only when creating a job allocation. + +=item B<--tmp=mb> + +Specify a minimum amount of temporary disk space. +Applies only when creating a job allocation. + +=item B<-u> | B<--unbuffered> + +Do not line buffer stdout from remote tasks. +Not supported on Cray computers. + +=item B<--uid=user> + +If user root, then execute the job as the specified user. +Specify either a user name or ID. +Applies only when creating a job allocation. + +=item B<--usage> + +Print brief help message. + +=item B<-V> | B<--version> + +Display version information and exit. + +=item B<-v> | B<--verbose> + +Increase the verbosity of srun's informational messages. + +=item B<-W> | B<--wait=seconds> + +Specify how long to wait after the first task terminates before terminating +all remaining tasks. +Not supported on Cray computers. + +=item B<-w> | B<--nodelist=hostlist|filename> + +Request a specific list of hosts to use. + +=item B<--wckey=key> + +Specify wckey to be used with job. +Applies only when creating a job allocation. + +=item B<-X> | B<--disable-status> + +Disable the display of task status when srun receives a single SIGINT (Ctrl-C). +Not supported on Cray computers. + +=item B<-x> | B<--exclude=hostlist> + +Request a specific list of hosts to not use +Applies only when creating a job allocation. + +=item B<-Z> | B<--no-allocate> + +Run the specified tasks on a set of nodes without creating a SLURM +"job" in the SLURM queue structure, bypassing the normal resource +allocation step. +Not supported on Cray computers. + +=back + +=cut diff -Nru slurm-llnl-2.2.7/contribs/env_cache_builder.c slurm-llnl-2.3.2/contribs/env_cache_builder.c --- slurm-llnl-2.2.7/contribs/env_cache_builder.c 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/env_cache_builder.c 2011-12-05 17:20:08.000000000 +0000 @@ -30,7 +30,7 @@ * CODE-OCEC-09-009. All rights reserved. * * This file is part of SLURM, a resource management program. - * For details, see . + * For details, see . * Please also read the included file: DISCLAIMER. * * SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/lua/job_submit.license.lua slurm-llnl-2.3.2/contribs/lua/job_submit.license.lua --- slurm-llnl-2.2.7/contribs/lua/job_submit.license.lua 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/lua/job_submit.license.lua 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,105 @@ +--[[ + + Example lua script demonstrating the SLURM job_submit/lua interface. + This is only an example, not meant for use in its current form. + + For use, this script should be copied into a file name job_"submit.lua" + in the same directory as the SLURM configuration file, slurm.conf. + +--]] + +function _limit_license_cnt(orig_string, license_name, max_count) + local i = 0 + local j = 0 + local val = 0 + + if orig_string == nil then + return 0 + end + + i, j, val = string.find(orig_string, license_name .. "%*(%d)") +-- if val ~= nil then log_info("name:%s count:%s", license_name, val) end + if val ~= nil and val + 0 > max_count then + return 1 + end + return 0 +end + +--########################################################################-- +-- +-- SLURM job_submit/lua interface: +-- +--########################################################################-- + +function slurm_job_submit ( job_desc, part_list ) + setmetatable (job_desc, job_req_meta) + local bad_license_count = 0 + + bad_license_count = _limit_license_cnt(job_desc.licenses, "lscratcha", 1) + bad_license_count = _limit_license_cnt(job_desc.licenses, "lscratchb", 1) + bad_license_count + bad_license_count = _limit_license_cnt(job_desc.licenses, "lscratchc", 1) + bad_license_count + if bad_license_count > 0 then + log_info("slurm_job_submit: for user %d, invalid licenses value: %s", + job_desc.user_id, job_desc.licenses) +-- ESLURM_INVALID_LICENSES is 2048 + return 2048 + end + + return 0 +end + +function slurm_job_modify ( job_desc, job_rec, part_list ) + setmetatable (job_desc, job_req_meta) + setmetatable (job_rec, job_rec_meta) + local bad_license_count = 0 + +-- *** YOUR LOGIC GOES BELOW *** + bad_license_count = _limit_license_cnt(job_desc.licenses, "lscratcha", 1) + bad_license_count = _limit_license_cnt(job_desc.licenses, "lscratchb", 1) + bad_license_count + bad_license_count = _limit_license_cnt(job_desc.licenses, "lscratchc", 1) + bad_license_count + if bad_license_count > 0 then + log_info("slurm_job_modify: for job %u, invalid licenses value: %s", + job_rec.job_id, job_desc.licenses) +-- ESLURM_INVALID_LICENSES is 2048 + return 2048 + end + + return 0 +end + +--########################################################################-- +-- +-- Initialization code: +-- +-- Define functions for logging and accessing slurmctld structures +-- +--########################################################################-- + + +log_info = slurm.log_info +log_verbose = slurm.log_verbose +log_debug = slurm.log_debug +log_err = slurm.error + +job_rec_meta = { + __index = function (table, key) + return _get_job_rec_field(table.job_rec_ptr, key) + end +} +job_req_meta = { + __index = function (table, key) + return _get_job_req_field(table.job_desc_ptr, key) + end, + __newindex = function (table, key, value) + return _set_job_req_field(table.job_desc_ptr, key, value) + end +} +part_rec_meta = { + __index = function (table, key) + return _get_part_rec_field(table.part_rec_ptr, key) + end +} + +log_info("initialized") + +return slurm.SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/lua/job_submit.lua slurm-llnl-2.3.2/contribs/lua/job_submit.lua --- slurm-llnl-2.2.7/contribs/lua/job_submit.lua 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/lua/job_submit.lua 2011-12-05 17:20:08.000000000 +0000 @@ -2,19 +2,21 @@ Example lua script demonstrating the SLURM job_submit/lua interface. This is only an example, not meant for use in its current form. + Leave the function names, arguments, local varialbes and setmetatable set up logic in each function unchanged. Change only the logic after the line containing "*** YOUR LOGIC GOES BELOW ***". + For use, this script should be copied into a file name job_"submit.lua" + in the same directory as the SLURM configuration file, slurm.conf. + --]] function _build_part_table ( part_list ) local part_rec = {} - local i = 1 - while part_list[i] do + for i in ipairs(part_list) do part_rec[i] = { part_rec_ptr=part_list[i] } setmetatable (part_rec[i], part_rec_meta) - i = i + 1 end return part_rec end @@ -42,8 +44,7 @@ local new_partition = nil local top_priority = -1 local last_priority = -1 - local i = 1 - while part_rec[i] do + for i in ipairs(part_rec) do -- log_info("part name[%d]:%s", i, part_rec[i].name) if part_rec[i].flag_default ~= 0 then top_priority = -1 @@ -54,7 +55,6 @@ top_priority = last_priority new_partition = part_rec[i].name end - i = i + 1 end if top_priority >= 0 then log_info("slurm_job_submit: job from uid %d, setting default partition value: %s", @@ -106,7 +106,7 @@ return _get_job_req_field(table.job_desc_ptr, key) end, __newindex = function (table, key, value) - return _set_job_req_field(table.job_desc_ptr, key, value) + return _set_job_req_field(table.job_desc_ptr, key, value or "") end } part_rec_meta = { diff -Nru slurm-llnl-2.2.7/contribs/lua/Makefile.am slurm-llnl-2.3.2/contribs/lua/Makefile.am --- slurm-llnl-2.2.7/contribs/lua/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/lua/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,4 @@ +EXTRA_DIST = \ + job_submit.license.lua \ + job_submit.lua \ + proctrack.lua diff -Nru slurm-llnl-2.2.7/contribs/lua/Makefile.in slurm-llnl-2.3.2/contribs/lua/Makefile.in --- slurm-llnl-2.2.7/contribs/lua/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/lua/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,475 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = contribs/lua +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/auxdir/acx_pthread.m4 \ + $(top_srcdir)/auxdir/libtool.m4 \ + $(top_srcdir)/auxdir/ltoptions.m4 \ + $(top_srcdir)/auxdir/ltsugar.m4 \ + $(top_srcdir)/auxdir/ltversion.m4 \ + $(top_srcdir)/auxdir/lt~obsolete.m4 \ + $(top_srcdir)/auxdir/slurm.m4 \ + $(top_srcdir)/auxdir/x_ac__system_configuration.m4 \ + $(top_srcdir)/auxdir/x_ac_affinity.m4 \ + $(top_srcdir)/auxdir/x_ac_aix.m4 \ + $(top_srcdir)/auxdir/x_ac_blcr.m4 \ + $(top_srcdir)/auxdir/x_ac_bluegene.m4 \ + $(top_srcdir)/auxdir/x_ac_cflags.m4 \ + $(top_srcdir)/auxdir/x_ac_cray.m4 \ + $(top_srcdir)/auxdir/x_ac_databases.m4 \ + $(top_srcdir)/auxdir/x_ac_debug.m4 \ + $(top_srcdir)/auxdir/x_ac_elan.m4 \ + $(top_srcdir)/auxdir/x_ac_env.m4 \ + $(top_srcdir)/auxdir/x_ac_federation.m4 \ + $(top_srcdir)/auxdir/x_ac_gpl_licensed.m4 \ + $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ + $(top_srcdir)/auxdir/x_ac_iso.m4 \ + $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ + $(top_srcdir)/auxdir/x_ac_munge.m4 \ + $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ + $(top_srcdir)/auxdir/x_ac_pam.m4 \ + $(top_srcdir)/auxdir/x_ac_printf_null.m4 \ + $(top_srcdir)/auxdir/x_ac_ptrace.m4 \ + $(top_srcdir)/auxdir/x_ac_readline.m4 \ + $(top_srcdir)/auxdir/x_ac_setpgrp.m4 \ + $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ + $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ + $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ + $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ + $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h $(top_builddir)/slurm/slurm.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTHD_CFLAGS = @AUTHD_CFLAGS@ +AUTHD_LIBS = @AUTHD_LIBS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ +BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ +BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ +BLCR_HOME = @BLCR_HOME@ +BLCR_LDFLAGS = @BLCR_LDFLAGS@ +BLCR_LIBS = @BLCR_LIBS@ +BLUEGENE_LOADED = @BLUEGENE_LOADED@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CMD_LDFLAGS = @CMD_LDFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ELAN_LIBS = @ELAN_LIBS@ +EXEEXT = @EXEEXT@ +FEDERATION_LDFLAGS = @FEDERATION_LDFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +HAVEMYSQLCONFIG = @HAVEMYSQLCONFIG@ +HAVEPGCONFIG = @HAVEPGCONFIG@ +HAVE_AIX = @HAVE_AIX@ +HAVE_ELAN = @HAVE_ELAN@ +HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ +HAVE_OPENSSL = @HAVE_OPENSSL@ +HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ +HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ +HWLOC_LDFLAGS = @HWLOC_LDFLAGS@ +HWLOC_LIBS = @HWLOC_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_LDFLAGS = @LIB_LDFLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MUNGE_CPPFLAGS = @MUNGE_CPPFLAGS@ +MUNGE_LDFLAGS = @MUNGE_LDFLAGS@ +MUNGE_LIBS = @MUNGE_LIBS@ +MYSQL_CFLAGS = @MYSQL_CFLAGS@ +MYSQL_LIBS = @MYSQL_LIBS@ +NCURSES = @NCURSES@ +NM = @NM@ +NMEDIT = @NMEDIT@ +NUMA_LIBS = @NUMA_LIBS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PAM_DIR = @PAM_DIR@ +PAM_LIBS = @PAM_LIBS@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PGSQL_CFLAGS = @PGSQL_CFLAGS@ +PGSQL_LIBS = @PGSQL_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROCTRACKDIR = @PROCTRACKDIR@ +PROJECT = @PROJECT@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +RANLIB = @RANLIB@ +READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ +RELEASE = @RELEASE@ +SED = @SED@ +SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ +SEMAPHORE_SOURCES = @SEMAPHORE_SOURCES@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SLURMCTLD_PORT = @SLURMCTLD_PORT@ +SLURMCTLD_PORT_COUNT = @SLURMCTLD_PORT_COUNT@ +SLURMDBD_PORT = @SLURMDBD_PORT@ +SLURMD_PORT = @SLURMD_PORT@ +SLURM_API_AGE = @SLURM_API_AGE@ +SLURM_API_CURRENT = @SLURM_API_CURRENT@ +SLURM_API_MAJOR = @SLURM_API_MAJOR@ +SLURM_API_REVISION = @SLURM_API_REVISION@ +SLURM_API_VERSION = @SLURM_API_VERSION@ +SLURM_MAJOR = @SLURM_MAJOR@ +SLURM_MICRO = @SLURM_MICRO@ +SLURM_MINOR = @SLURM_MINOR@ +SLURM_PREFIX = @SLURM_PREFIX@ +SLURM_VERSION_NUMBER = @SLURM_VERSION_NUMBER@ +SLURM_VERSION_STRING = @SLURM_VERSION_STRING@ +SO_LDFLAGS = @SO_LDFLAGS@ +SSL_CPPFLAGS = @SSL_CPPFLAGS@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +UTIL_LIBS = @UTIL_LIBS@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +lua_CFLAGS = @lua_CFLAGS@ +lua_LIBS = @lua_LIBS@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + job_submit.license.lua \ + job_submit.lua \ + proctrack.lua + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contribs/lua/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu contribs/lua/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru slurm-llnl-2.2.7/contribs/Makefile.am slurm-llnl-2.3.2/contribs/Makefile.am --- slurm-llnl-2.2.7/contribs/Makefile.am 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -1,4 +1,4 @@ -SUBDIRS = pam perlapi torque sjobexit slurmdb-direct +SUBDIRS = arrayrun cray lua pam perlapi torque sjobexit slurmdb-direct EXTRA_DIST = \ env_cache_builder.c \ diff -Nru slurm-llnl-2.2.7/contribs/Makefile.in slurm-llnl-2.3.2/contribs/Makefile.in --- slurm-llnl-2.2.7/contribs/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -131,7 +133,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -168,6 +173,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -225,6 +231,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -260,6 +267,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -312,7 +320,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = pam perlapi torque sjobexit slurmdb-direct +SUBDIRS = arrayrun cray lua pam perlapi torque sjobexit slurmdb-direct EXTRA_DIST = \ env_cache_builder.c \ make.slurm.patch \ diff -Nru slurm-llnl-2.2.7/contribs/pam/Makefile.in slurm-llnl-2.3.2/contribs/pam/Makefile.in --- slurm-llnl-2.2.7/contribs/pam/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/pam/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -64,6 +64,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -74,6 +75,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -145,7 +147,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -182,6 +187,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -239,6 +245,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -274,6 +281,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/pam/pam_slurm.c slurm-llnl-2.3.2/contribs/pam/pam_slurm.c --- slurm-llnl-2.2.7/contribs/pam/pam_slurm.c 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/pam/pam_slurm.c 2011-12-05 17:20:08.000000000 +0000 @@ -136,13 +136,16 @@ if ((auth != PAM_SUCCESS) && (!opts.enable_silence)) _send_denial_msg(pamh, &opts, user, uid); + + /* + * Generate an entry to the system log if access was + * denied (!PAM_SUCCESS) or disable_sys_info is not set + */ if ((auth != PAM_SUCCESS) || (!opts.disable_sys_info)) { _log_msg(LOG_INFO, "access %s for user %s (uid=%d)", (auth == PAM_SUCCESS) ? "granted" : "denied", user, uid); } - _log_msg(LOG_INFO, "access %s for user %s (uid=%d)", - (auth == PAM_SUCCESS) ? "granted" : "denied", user, uid); return(auth); } diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurm/Makefile.in slurm-llnl-2.3.2/contribs/perlapi/libslurm/Makefile.in --- slurm-llnl-2.2.7/contribs/perlapi/libslurm/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurm/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -91,7 +93,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -128,6 +133,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -185,6 +191,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -220,6 +227,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/alloc.c slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/alloc.c --- slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/alloc.c 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/alloc.c 2011-12-05 17:20:08.000000000 +0000 @@ -182,7 +182,23 @@ job_desc->geometry[i] = SvUV(*svp); } } - FETCH_FIELD(hv, job_desc, conn_type, uint16_t, FALSE); + if((svp = hv_fetch(hv, "conn_type", 9, FALSE))) { + AV *av; + if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) { + Perl_warn(aTHX_ "`conn_type' is not an array reference in job descriptor"); + free_job_desc_msg_memory(job_desc); + return -1; + } + av = (AV*)SvRV(*svp); + for(i = 0; i < HIGHEST_DIMENSIONS; i ++) { + if(! (svp = av_fetch(av, i, FALSE))) { + Perl_warn(aTHX_ "conn_type of dimension %d missing in job descriptor", i); + free_job_desc_msg_memory(job_desc); + return -1; + } + job_desc->conn_type[i] = SvUV(*svp); + } + } FETCH_FIELD(hv, job_desc, reboot, uint16_t, FALSE); FETCH_FIELD(hv, job_desc, rotate, uint16_t, FALSE); FETCH_FIELD(hv, job_desc, blrtsimage, charp, FALSE); diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/block.c slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/block.c --- slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/block.c 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/block.c 2011-12-05 17:20:08.000000000 +0000 @@ -17,27 +17,36 @@ int block_info_to_hv(block_info_t *block_info, HV *hv) { + int dim; + AV* av = NULL; + if(block_info->bg_block_id) STORE_FIELD(hv, block_info, bg_block_id, charp); if(block_info->blrtsimage) STORE_FIELD(hv, block_info, blrtsimage, charp); - if (block_info->bp_inx) { + if (block_info->mp_inx) { int j; - AV* av = newAV(); + av = newAV(); for(j = 0; ; j += 2) { - if(block_info->bp_inx[j] == -1) + if(block_info->mp_inx[j] == -1) break; - av_store(av, j, newSVuv(block_info->bp_inx[j])); - av_store(av, j+1, newSVuv(block_info->bp_inx[j+1])); + av_store(av, j, newSVuv(block_info->mp_inx[j])); + av_store(av, j+1, newSVuv(block_info->mp_inx[j+1])); } - hv_store_sv(hv, "bp_inx", newRV_noinc((SV*)av)); + hv_store_sv(hv, "mp_inx", newRV_noinc((SV*)av)); } - STORE_FIELD(hv, block_info, conn_type, uint16_t); - if(block_info->ionodes) - STORE_FIELD(hv, block_info, ionodes, charp); + + av = newAV(); + for (dim=0; dimconn_type[dim])); + + hv_store_sv(hv, "conn_type", newRV_noinc((SV*)av)); + + if(block_info->ionode_str) + STORE_FIELD(hv, block_info, ionode_str, charp); if (block_info->ionode_inx) { int j; - AV* av = newAV(); + av = newAV(); for(j = 0; ; j += 2) { if(block_info->ionode_inx[j] == -1) break; @@ -51,9 +60,9 @@ STORE_FIELD(hv, block_info, linuximage, charp); if(block_info->mloaderimage) STORE_FIELD(hv, block_info, mloaderimage, charp); - if(block_info->nodes) - STORE_FIELD(hv, block_info, nodes, charp); - STORE_FIELD(hv, block_info, node_cnt, uint32_t); + if(block_info->mp_str) + STORE_FIELD(hv, block_info, mp_str, charp); + STORE_FIELD(hv, block_info, cnode_cnt, uint32_t); STORE_FIELD(hv, block_info, node_use, uint16_t); if (block_info->owner_name) STORE_FIELD(hv, block_info, owner_name, charp); @@ -79,21 +88,29 @@ FETCH_FIELD(hv, block_info, bg_block_id, charp, FALSE); FETCH_FIELD(hv, block_info, blrtsimage, charp, FALSE); - svp = hv_fetch(hv, "bp_inx", 6, FALSE); + svp = hv_fetch(hv, "mp_inx", 6, FALSE); if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVAV) { av = (AV*)SvRV(*svp); n = av_len(av) + 2; /* for trailing -1 */ - block_info->bp_inx = xmalloc(n * sizeof(int)); + block_info->mp_inx = xmalloc(n * sizeof(int)); for (i = 0 ; i < n-1; i += 2) { - block_info->bp_inx[i] = (int)SvIV(*(av_fetch(av, i, FALSE))); - block_info->bp_inx[i+1] = (int)SvIV(*(av_fetch(av, i+1 ,FALSE))); + block_info->mp_inx[i] = (int)SvIV(*(av_fetch(av, i, FALSE))); + block_info->mp_inx[i+1] = (int)SvIV(*(av_fetch(av, i+1 ,FALSE))); } - block_info->bp_inx[n-1] = -1; + block_info->mp_inx[n-1] = -1; } else { /* nothing to do */ } - FETCH_FIELD(hv, block_info, conn_type, uint16_t, TRUE); - FETCH_FIELD(hv, block_info, ionodes, charp, FALSE); + svp = hv_fetch(hv, "conn_type", 9, FALSE); + if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVAV) { + av = (AV*)SvRV(*svp); + n = av_len(av); /* for trailing -1 */ + for (i = 0 ; i < HIGHEST_DIMENSIONS; i++) + block_info->conn_type[i] = SvUV(*(av_fetch(av, i, FALSE))); + } else { + /* nothing to do */ + } + FETCH_FIELD(hv, block_info, ionode_str, charp, FALSE); svp = hv_fetch(hv, "ionode_inx", 10, FALSE); if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVAV) { av = (AV*)SvRV(*svp); @@ -110,8 +127,8 @@ FETCH_FIELD(hv, block_info, job_running, uint32_t, TRUE); FETCH_FIELD(hv, block_info, linuximage, charp, FALSE); FETCH_FIELD(hv, block_info, mloaderimage, charp, FALSE); - FETCH_FIELD(hv, block_info, nodes, charp, FALSE); - FETCH_FIELD(hv, block_info, node_cnt, uint32_t, TRUE); + FETCH_FIELD(hv, block_info, mp_str, charp, FALSE); + FETCH_FIELD(hv, block_info, cnode_cnt, uint32_t, TRUE); FETCH_FIELD(hv, block_info, node_use, uint16_t, TRUE); FETCH_FIELD(hv, block_info, owner_name, charp, FALSE); FETCH_FIELD(hv, block_info, ramdiskimage, charp, FALSE); @@ -200,21 +217,28 @@ FETCH_FIELD(hv, update_msg, bg_block_id, charp, FALSE); FETCH_FIELD(hv, update_msg, blrtsimage, charp, FALSE); - svp = hv_fetch(hv, "bp_inx", 6, FALSE); + svp = hv_fetch(hv, "mp_inx", 6, FALSE); if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVAV) { av = (AV*)SvRV(*svp); n = av_len(av) + 2; /* for trailing -1 */ - update_msg->bp_inx = xmalloc(n * sizeof(int)); + update_msg->mp_inx = xmalloc(n * sizeof(int)); for (i = 0 ; i < n-1; i += 2) { - update_msg->bp_inx[i] = (int)SvIV(*(av_fetch(av, i, FALSE))); - update_msg->bp_inx[i+1] = (int)SvIV(*(av_fetch(av, i+1 ,FALSE))); + update_msg->mp_inx[i] = (int)SvIV(*(av_fetch(av, i, FALSE))); + update_msg->mp_inx[i+1] = (int)SvIV(*(av_fetch(av, i+1 ,FALSE))); } - update_msg->bp_inx[n-1] = -1; + update_msg->mp_inx[n-1] = -1; + } else { + /* nothing to do */ + } + svp = hv_fetch(hv, "conn_type", 9, FALSE); + if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVAV) { + av = (AV*)SvRV(*svp); + for (i = 0 ; i < HIGHEST_DIMENSIONS; i++) + update_msg->conn_type[i] = SvUV(*(av_fetch(av, i, FALSE))); } else { /* nothing to do */ } - FETCH_FIELD(hv, update_msg, conn_type, uint16_t, FALSE); - FETCH_FIELD(hv, update_msg, ionodes, charp, FALSE); + FETCH_FIELD(hv, update_msg, ionode_str, charp, FALSE); svp = hv_fetch(hv, "ionode_inx", 10, FALSE); if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVAV) { av = (AV*)SvRV(*svp); @@ -231,8 +255,8 @@ FETCH_FIELD(hv, update_msg, job_running, uint32_t, FALSE); FETCH_FIELD(hv, update_msg, linuximage, charp, FALSE); FETCH_FIELD(hv, update_msg, mloaderimage, charp, FALSE); - FETCH_FIELD(hv, update_msg, nodes, charp, FALSE); - FETCH_FIELD(hv, update_msg, node_cnt, uint32_t, FALSE); + FETCH_FIELD(hv, update_msg, mp_str, charp, FALSE); + FETCH_FIELD(hv, update_msg, cnode_cnt, uint32_t, FALSE); FETCH_FIELD(hv, update_msg, node_use, uint16_t, FALSE); FETCH_FIELD(hv, update_msg, owner_name, charp, FALSE); FETCH_FIELD(hv, update_msg, ramdiskimage, charp, FALSE); diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/job.c slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/job.c --- slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/job.c 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/job.c 2011-12-05 17:20:08.000000000 +0000 @@ -109,6 +109,7 @@ av_store(av, j+1, newSVuv(job_info->req_node_inx[j+1])); } hv_store_sv(hv, "req_node_inx", newRV_noinc((SV*)av)); + STORE_FIELD(hv, job_info, req_switch, uint32_t); STORE_FIELD(hv, job_info, requeue, uint16_t); STORE_FIELD(hv, job_info, resize_time, time_t); STORE_FIELD(hv, job_info, restart_cnt, uint16_t); @@ -127,6 +128,7 @@ STORE_FIELD(hv, job_info, time_limit, uint32_t); STORE_FIELD(hv, job_info, time_min, uint32_t); STORE_FIELD(hv, job_info, user_id, uint32_t); + STORE_FIELD(hv, job_info, wait4switch, uint32_t); if(job_info->wckey) STORE_FIELD(hv, job_info, wckey, charp); if(job_info->work_dir) @@ -226,6 +228,7 @@ } else { /* nothing to do */ } + FETCH_FIELD(hv, job_info, req_switch, uint32_t, FALSE); FETCH_FIELD(hv, job_info, requeue, uint16_t, TRUE); FETCH_FIELD(hv, job_info, resize_time, time_t, TRUE); FETCH_FIELD(hv, job_info, restart_cnt, uint16_t, TRUE); @@ -241,6 +244,7 @@ FETCH_FIELD(hv, job_info, suspend_time, time_t, TRUE); FETCH_FIELD(hv, job_info, time_limit, uint32_t, TRUE); FETCH_FIELD(hv, job_info, time_min, uint32_t, TRUE); + FETCH_FIELD(hv, job_info, wait4switch, uint32_t, FALSE); FETCH_FIELD(hv, job_info, wckey, charp, FALSE); FETCH_FIELD(hv, job_info, work_dir, charp, FALSE); return 0; diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/step.c slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/step.c --- slurm-llnl-2.2.7/contribs/perlapi/libslurm/perl/step.c 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurm/perl/step.c 2011-12-05 17:20:08.000000000 +0000 @@ -178,6 +178,8 @@ AV* av, *av2; int i, j; + if (step_layout->front_end) + STORE_FIELD(hv, step_layout, front_end, charp); STORE_FIELD(hv, step_layout, node_cnt, uint16_t); if (step_layout->node_list) STORE_FIELD(hv, step_layout, node_list, charp); @@ -187,15 +189,15 @@ } STORE_FIELD(hv, step_layout, plane_size, uint16_t); av = newAV(); - for(i = 0; i < step_layout->node_cnt; i ++) + for (i = 0; i < step_layout->node_cnt; i ++) av_store_uint16_t(av, i, step_layout->tasks[i]); hv_store_sv(hv, "tasks", newRV_noinc((SV*)av)); STORE_FIELD(hv, step_layout, task_cnt, uint32_t); STORE_FIELD(hv, step_layout, task_dist, uint16_t); av = newAV(); - for(i = 0; i < step_layout->node_cnt; i ++) { + for (i = 0; i < step_layout->node_cnt; i ++) { av2 = newAV(); - for(j = 0; j < step_layout->tasks[i]; j ++) + for (j = 0; j < step_layout->tasks[i]; j ++) av_store_uint32_t(av2, i, step_layout->tids[i][j]); av_store(av, i, newRV_noinc((SV*)av2)); } diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurmdb/Makefile.in slurm-llnl-2.3.2/contribs/perlapi/libslurmdb/Makefile.in --- slurm-llnl-2.2.7/contribs/perlapi/libslurmdb/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurmdb/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -91,7 +93,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -128,6 +133,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -185,6 +191,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -220,6 +227,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/perlapi/libslurmdb/perl/Slurmdb.pm slurm-llnl-2.3.2/contribs/perlapi/libslurmdb/perl/Slurmdb.pm --- slurm-llnl-2.2.7/contribs/perlapi/libslurmdb/perl/Slurmdb.pm 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/libslurmdb/perl/Slurmdb.pm 2011-12-05 17:20:08.000000000 +0000 @@ -135,7 +135,7 @@ =head1 SEE ALSO -https://computing.llnl.gov/linux/slurm/accounting.html +http://www.schedmd.com/slurmdocs/accounting.html =head1 AUTHOR @@ -148,7 +148,7 @@ CODE-OCEC-09-009. All rights reserved. This file is part of SLURM, a resource management program. For - details, see . Please also + details, see . Please also read the included file: DISCLAIMER. SLURM is free software; you can redistribute it and/or modify it diff -Nru slurm-llnl-2.2.7/contribs/perlapi/Makefile.in slurm-llnl-2.3.2/contribs/perlapi/Makefile.in --- slurm-llnl-2.2.7/contribs/perlapi/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/perlapi/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -131,7 +133,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -168,6 +173,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -225,6 +231,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -260,6 +267,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/phpext/Makefile.am slurm-llnl-2.3.2/contribs/phpext/Makefile.am --- slurm-llnl-2.2.7/contribs/phpext/Makefile.am 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -1,11 +1,11 @@ AUTOMAKE_OPTIONS = foreign -php_dir = slurm_php -phpize = /usr/bin/phpize +php_dir=slurm_php +phpize=/usr/bin/phpize if HAVE_AIX - add_flags = "CC=\"$(CC)\" CCFLAGS=\"-g -static $(CFLAGS)\"" +config_line=CC="$(CC)" CCFLAGS="-g -static $(CFLAGS)" ./configure else - add_flags = "CC=\"$(CC)\" LD=\"$(CC) $(CFLAGS)\" CCFLAGS=\"-g -static $(CFLAGS)\"" +config_line=CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="-g -static $(CFLAGS)" CFLAGS="$(CFLAGS)" ./configure endif all-local: @@ -14,12 +14,12 @@ if [ ! -f configure ]; then \ $(phpize); \ fi && \ - ./configure ; \ + $(config_line); \ if [ ! -f Makefile ]; then \ exit 0;\ fi \ fi && \ - $(MAKE) $(add_flags); \ + $(MAKE); \ cd ..; install-exec-local: @@ -27,7 +27,7 @@ if [ ! -f Makefile ]; then \ exit 0;\ fi && \ - $(MAKE) INSTALL_ROOT=$(DESTDIR) $(add_flags) install && \ + $(MAKE) INSTALL_ROOT=$(DESTDIR) install && \ cd ..; clean-generic: diff -Nru slurm-llnl-2.2.7/contribs/phpext/Makefile.in slurm-llnl-2.3.2/contribs/phpext/Makefile.in --- slurm-llnl-2.2.7/contribs/phpext/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -91,7 +93,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -128,6 +133,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -185,6 +191,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -220,6 +227,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -275,6 +283,8 @@ AUTOMAKE_OPTIONS = foreign php_dir = slurm_php phpize = /usr/bin/phpize +@HAVE_AIX_FALSE@config_line = CC="$(CC)" LD="$(CC) $(CFLAGS)" CCFLAGS="-g -static $(CFLAGS)" CFLAGS="$(CFLAGS)" ./configure +@HAVE_AIX_TRUE@config_line = CC="$(CC)" CCFLAGS="-g -static $(CFLAGS)" ./configure all: all-am .SUFFIXES: @@ -455,21 +465,18 @@ ps ps-am uninstall uninstall-am -@HAVE_AIX_TRUE@ add_flags = "CC=\"$(CC)\" CCFLAGS=\"-g -static $(CFLAGS)\"" -@HAVE_AIX_FALSE@ add_flags = "CC=\"$(CC)\" LD=\"$(CC) $(CFLAGS)\" CCFLAGS=\"-g -static $(CFLAGS)\"" - all-local: @cd $(php_dir) && \ if [ ! -f Makefile ]; then \ if [ ! -f configure ]; then \ $(phpize); \ fi && \ - ./configure ; \ + $(config_line); \ if [ ! -f Makefile ]; then \ exit 0;\ fi \ fi && \ - $(MAKE) $(add_flags); \ + $(MAKE); \ cd ..; install-exec-local: @@ -477,7 +484,7 @@ if [ ! -f Makefile ]; then \ exit 0;\ fi && \ - $(MAKE) INSTALL_ROOT=$(DESTDIR) $(add_flags) install && \ + $(MAKE) INSTALL_ROOT=$(DESTDIR) install && \ cd ..; clean-generic: diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/AUTHORS slurm-llnl-2.3.2/contribs/phpext/slurm_php/AUTHORS --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/AUTHORS 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/AUTHORS 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,2 @@ +Vermeulen Peter, nMCT Howest +Jimmy Tang, Trinity Centre for High Performance Computing, Trinity College Dublin diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/config.m4.in slurm-llnl-2.3.2/contribs/phpext/slurm_php/config.m4.in --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/config.m4.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/config.m4.in 2011-12-05 17:20:08.000000000 +0000 @@ -9,50 +9,60 @@ ##***************************************************************************** PHP_ARG_WITH(slurm, whether to use slurm, [ --with-slurm SLURM install dir]) - + +AC_MSG_CHECKING([for phpize in default path]) +if test ! -f "/usr/bin/phpize"; then + PHP_SLURM="no" + AC_MSG_RESULT([NO, CANNOT MAKE SLURM_PHP]) +else + AC_MSG_RESULT([yes]) +fi + if test "$PHP_SLURM" != "no"; then - SLURMLIB_PATH="@prefix@/lib @top_builddir@/src/api/.libs" + SLURMLIB_PATH="@prefix@/lib @top_builddir@/src/db_api/.libs" SLURMINCLUDE_PATH="@prefix@/include" - SEARCH_FOR="libslurm.so" - - # --with-libslurm -> check with-path - + SEARCH_FOR="libslurmdb.so" + + # --with-libslurm -> check with-path + if test -r $PHP_SLURM/; then # path given as parameter SLURM_DIR=$PHP_SLURM SLURMLIB_PATH="$SLURM_DIR/lib" else # search default path list - AC_MSG_CHECKING([for libslurm.so in default paths]) + AC_MSG_CHECKING([for libslurmdb.so in default paths]) for i in $SLURMLIB_PATH ; do if test -r $i/$SEARCH_FOR; then SLURM_DIR=$i PHP_ADD_LIBPATH($i, SLURM_PHP_SHARED_LIBADD) - + AC_MSG_RESULT([found in $i]) - + fi done fi - + if test -z "$SLURM_DIR"; then AC_MSG_RESULT([not found]) AC_MSG_ERROR([Please reinstall the slurm distribution]) fi - + PHP_ADD_INCLUDE($SLURMINCLUDE_PATH) PHP_ADD_INCLUDE(@top_srcdir@) - - LIBNAME=slurm + + LIBNAME=slurmdb LIBSYMBOL=slurm_acct_storage_init - + PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL, [PHP_ADD_LIBRARY($LIBNAME, , SLURM_PHP_SHARED_LIBADD) AC_DEFINE(HAVE_SLURMLIB,1,[ ])], - [AC_MSG_ERROR([wrong libslurm version or lib not found])], - [-L$SLURM_DIR -lslurm]) - - + [AC_MSG_ERROR([wrong libslurmdb version or lib not found])], + [-L$SLURM_DIR -l$LIBNAME]) + + PHP_SUBST(SLURM_PHP_SHARED_LIBADD) - + + AC_CHECK_HEADERS(stdbool.h) + AC_DEFINE(HAVE_SLURM_PHP, 1, [Whether you have SLURM]) #PHP_EXTENSION(slurm_php, $ext_shared) PHP_NEW_EXTENSION(slurm_php, @top_srcdir@/contribs/phpext/slurm_php/slurm_php.c, $ext_shared) diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/DISCLAIMER slurm-llnl-2.3.2/contribs/phpext/slurm_php/DISCLAIMER --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/DISCLAIMER 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/DISCLAIMER 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,20 @@ +Disclaimer + +The php-slurm program, its documentation, and any other auxiliary +resources involved in building, installing and running the program, +such as graphics, Makefiles, and user interface definition files, are +licensed under the GNU General Public License. This includes, but is +not limited to, all the files in the official source distribution, as +well as the source distribution itself. + +A copy of the GNU General Public License can be found in the file +LICENSE in the top directory of the official source distribution. The +license is also available in several formats through the World Wide +Web, via http://www.gnu.org/licenses/licenses.html#GPL, or you can +write the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA +02139, USA. + +php-slurm is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/LICENSE slurm-llnl-2.3.2/contribs/phpext/slurm_php/LICENSE --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/LICENSE 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/README slurm-llnl-2.3.2/contribs/phpext/slurm_php/README --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/README 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/README 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,48 @@ +Slurm PHP extension +=================== + +Requirements (tested with) + +* SLURM 2.2.0 +* PHP 5.1.6 +* APACHE (optional, but recommended) + +This was made primarily for SLURMWEB to connect to slurm. Any extra +interactions are welcome. + +to compile... + +phpize +./configure +make + +this should make modules/slurm_php.so + +make install as root +should install this where your extensions are in your php install + +in your php.ini file add the line + +extension=slurm_php.so + +and you should be able to use the functions here. + + +TEST CASES +========== + +It is assumed that the user has both slurmctld and slurmd is +configured up with at least 1 partition and 1 node for these tests to +pass. + +Developer Notes +=============== + +To clean up the directory to a clean state do the following + +~~~~ +phpize --clean +~~~~ + +The coding style that should be adopted is +http://www.kernel.org/doc/Documentation/CodingStyle diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/RELEASE_NOTES slurm-llnl-2.3.2/contribs/phpext/slurm_php/RELEASE_NOTES --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/RELEASE_NOTES 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/RELEASE_NOTES 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,38 @@ +NOTES FOR PHP-SLURM VERSION 1.0 +=============================== + +This is PHP extensions goal is to provide just enough functionality to +a web developer read data from the slurm controller daemon to create a +*status* or *monitoring* application which can be viewed by the end +user. All the code has been written by 'Vermeulen Peter' with +contributions from TCHPC staff. + + +Installation Requirements +========================= + +* SLURM 2.2.0 or newer +* PHP 5.1.6 or newer +* APACHE (optional, but recommended) + + +Added the following API's +========================= + +slurm_hostlist_to_array() +slurm_array_to_hostlist() +slurm_ping() +slurm_slurmd_status() +slurm_version() +slurm_print_partition_names() +slurm_get_specific_partition_info() +slurm_get_partition_node_names() +slurm_get_node_names() +slurm_get_node_elements() +slurm_get_node_element_by_name() +slurm_get_node_state_by_name() +slurm_get_node_states() +slurm_get_control_configuration_keys() +slurm_get_control_configuration_values() +slurm_load_partition_jobs() +slurm_load_job_information() diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/slurm_php.c slurm-llnl-2.3.2/contribs/phpext/slurm_php/slurm_php.c --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/slurm_php.c 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/slurm_php.c 2011-12-05 17:20:08.000000000 +0000 @@ -1,101 +1,902 @@ /*****************************************************************************\ * slurm_php.c - php interface to slurm. * - * $Id: account_gold.c 13061 2008-01-22 21:23:56Z da $ ***************************************************************************** - * Copyright (C) 2004-2007 The Regents of the University of California. - * Copyright (C) 2008 Lawrence Livermore National Security. - * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). - * Written by Danny Auble - * - * This file is part of SLURM, a resource management program. - * For details, see . + * Copyright (C) 2011 - Trinity Centre for High Performance Computing + * Copyright (C) 2011 - Trinity College Dublin + * Written By : Vermeulen Peter + * + * This file is part of php-slurm, a resource management program. * Please also read the included file: DISCLAIMER. - * - * SLURM is free software; you can redistribute it and/or modify it under + * + * php-slurm is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * - * In addition, as a special exception, the copyright holders give permission + * In addition, as a special exception, the copyright holders give permission * to link the code of portions of this program with the OpenSSL library under - * certain conditions as described in each individual source file, and - * distribute linked combinations including the two. You must obey the GNU - * General Public License in all respects for all of the code used other than - * OpenSSL. If you modify file(s) with this exception, you may extend this - * exception to your version of the file(s), but you are not obligated to do + * certain conditions as described in each individual source file, and + * distribute linked combinations including the two. You must obey the GNU + * General Public License in all respects for all of the code used other than + * OpenSSL. If you modify file(s) with this exception, you may extend this + * exception to your version of the file(s), but you are not obligated to do * so. If you do not wish to do so, delete this exception statement from your - * version. If you delete this exception statement from all source files in + * version. If you delete this exception statement from all source files in * the program, then also delete it here. - * - * SLURM is distributed in the hope that it will be useful, but WITHOUT ANY + * + * php-slurm is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public License along - * with SLURM; if not, write to the Free Software Foundation, Inc., + * with php-slurm; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. \*****************************************************************************/ +/*****************************************************************************\ + * + * Documentation for each function can be found in the slurm_php.h file + * +\*****************************************************************************/ + #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include "php.h" #include "slurm_php.h" -#include "slurm/slurm.h" -#include "src/common/list.h" static function_entry slurm_functions[] = { - PHP_FE(hello_world, NULL) - PHP_FE(print_partitions, NULL) - {NULL, NULL, NULL} + PHP_FE(slurm_ping, NULL) + PHP_FE(slurm_slurmd_status, NULL) + PHP_FE(slurm_print_partition_names, NULL) + PHP_FE(slurm_get_specific_partition_info, NULL) + PHP_FE(slurm_get_partition_node_names, NULL) + PHP_FE(slurm_version, NULL) + PHP_FE(slurm_get_node_names, NULL) + PHP_FE(slurm_get_node_elements, NULL) + PHP_FE(slurm_get_node_element_by_name, NULL) + PHP_FE(slurm_get_node_state_by_name, NULL) + PHP_FE(slurm_get_control_configuration_keys, NULL) + PHP_FE(slurm_get_control_configuration_values, NULL) + PHP_FE(slurm_load_job_information, NULL) + PHP_FE(slurm_load_partition_jobs, NULL) + PHP_FE(slurm_get_node_states, NULL) + PHP_FE(slurm_hostlist_to_array, NULL) + PHP_FE(slurm_array_to_hostlist, NULL) { + NULL, NULL, NULL + } }; zend_module_entry slurm_php_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 - STANDARD_MODULE_HEADER, + STANDARD_MODULE_HEADER, #endif - SLURM_PHP_EXTNAME, - slurm_functions, - NULL, - NULL, - NULL, - NULL, - NULL, + SLURM_PHP_EXTNAME, + slurm_functions, + NULL, + NULL, + NULL, + NULL, + NULL, #if ZEND_MODULE_API_NO >= 20010901 - SLURM_PHP_VERSION, + SLURM_PHP_VERSION, #endif - STANDARD_MODULE_PROPERTIES + STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_SLURM_PHP ZEND_GET_MODULE(slurm_php) #endif -PHP_FUNCTION(hello_world) +/*****************************************************************************\ + * HELPER FUNCTION PROTOTYPES +\*****************************************************************************/ + +/* + * _parse_node_pointer - Parse a node pointer's contents into an + * assocative zval array where the key is descriptive to the + * value + * + * IN sub_arr - array to store the contents of the node pointer + * IN node_arr - node pointer that needs parsing + */ +static void _parse_node_pointer(zval *sub_arr, node_info_t *node_arr); + +/* + * _parse_assoc_array - Parse a character array where the elements are + * key-value pairs separated by delimiters into an associative + * array + * + * IN char_arr - character array that needs parsing + * IN delims - character array that contains the delimeters used in parsing + * IN result_arr - associative array used to store the key_value pairs in + */ +static void _parse_assoc_array(char *char_arr, char *delims, zval *result_arr); + +/* + * _parse_array - Parse a character array where the elements are values + * separated by delimiters into a numerically indexed array + * + * IN char_arr - character array that needs parsing + * IN delims - character array that contains the delimeters used in parsing + * IN result_arr - numerically indexed array used to store the values in + */ +static void _parse_array(char *char_arr, char *delims, zval *rslt_arr); + +/* + * _zend_add_valid_assoc_string - checks a character array to see if + * it's NULL or not, if so an associative null is added, if not + * an associative string is added. + * + * IN rstl_arr - array to store the associative key_value pairs in + * IN key - character array used as the associative key + * IN val - character array to be validated and added as value if valid + */ +static void _zend_add_valid_assoc_string(zval *rstl_arr, char *key, char *val); + +/* + * _zend_add_valid_assoc_time_string - checks a unix timestamp to see if it's + * 0 or not, if so an associative null is added, if not a formatted string + * is added. + * + * IN rstl_arr - array to store the associative key_value pairs in + * IN key - character array used as the associative key + * IN val - time_t unix timestamp to be validated and added if valid + * NOTE : If you'd like to change the format in which the valid strings are + * returned, you can change the TIME_FORMAT_STRING macro to the needed format + */ +static void _zend_add_valid_assoc_time_string( + zval *rstl_arr, char *key, time_t *val); + +/*****************************************************************************\ + * TODO + ***************************************************************************** + * [ADJUSTING EXISTING FUNCTIONS] + * - _parse_node_pointer + * dynamic_plugin_data_t is currently not returned + * [EXTRA FUNCTIONS] + * - Functions that filter jobs on the nodes they are running on + * - Scheduling + * - ... +\*****************************************************************************/ + +/*****************************************************************************\ + * HELPER FUNCTIONS +\*****************************************************************************/ + +static void _parse_node_pointer(zval *sub_arr, node_info_t *node_arr) +{ + zval *sub_arr_2 = NULL; + + _zend_add_valid_assoc_string(sub_arr, "Name", node_arr->name); + _zend_add_valid_assoc_string(sub_arr, "Arch.", node_arr->arch); + _zend_add_valid_assoc_time_string(sub_arr, "Boot Time", + &node_arr->boot_time); + add_assoc_long(sub_arr, "#CPU'S", node_arr->cpus); + add_assoc_long(sub_arr, "#Cores/CPU", node_arr->cores); + + if (node_arr->features == NULL) { + add_assoc_null(sub_arr, "Features"); + } else { + ALLOC_INIT_ZVAL(sub_arr_2); + array_init(sub_arr_2); + _parse_array(node_arr->features, ",", sub_arr_2); + add_assoc_zval(sub_arr, "Features", sub_arr_2); + } + + _zend_add_valid_assoc_string(sub_arr, "GRES", node_arr->gres); + add_assoc_long(sub_arr, "State", node_arr->node_state); + _zend_add_valid_assoc_string(sub_arr, "OS", node_arr->os); + add_assoc_long(sub_arr, "Real Mem", node_arr->real_memory); + + if (node_arr->reason!=NULL) { + _zend_add_valid_assoc_string(sub_arr, "Reason", + node_arr->reason); + _zend_add_valid_assoc_time_string(sub_arr,"Reason Timestamp", + &node_arr->reason_time); + add_assoc_long(sub_arr, "Reason User Id", + node_arr->reason_uid); + } else { + add_assoc_null(sub_arr, "Reason"); + add_assoc_null(sub_arr, "Reason Timestamp"); + add_assoc_null(sub_arr, "Reason User Id"); + } + + _zend_add_valid_assoc_time_string(sub_arr, "Slurmd Startup Time", + &node_arr->slurmd_start_time); + add_assoc_long(sub_arr, "#Sockets/Node", node_arr->sockets); + add_assoc_long(sub_arr, "#Threads/Core", node_arr->threads); + add_assoc_long(sub_arr, "TmpDisk", node_arr->tmp_disk); + add_assoc_long(sub_arr, "Weight", node_arr->weight); +} + + +static void _parse_assoc_array(char *char_arr, char *delims, zval *result_arr) +{ + char *rslt = NULL; + char *tmp; + int i = 0; + + rslt = strtok(char_arr, delims); + while (rslt != NULL) { + if (i == 0) { + tmp = rslt; + } else if (i == 1) { + if (strcmp(rslt,"(null)")==0) { + add_assoc_null(result_arr, tmp); + } else { + _zend_add_valid_assoc_string(result_arr, + tmp, rslt); + } + } + i++; + if (i == 2) { + i = 0; + } + rslt = strtok(NULL, delims); + } +} + + +static void _parse_array(char *char_arr, char *delims, zval *rslt_arr) +{ + char *rslt = NULL; + char *tmp = NULL; + + rslt = strtok(char_arr, delims); + while (rslt != NULL) { + if (strcmp(rslt, "(null)")==0) { + add_next_index_null(rslt_arr); + } else { + tmp = slurm_xstrdup(rslt); + add_next_index_string(rslt_arr, tmp, 1); + xfree(tmp); + } + rslt = strtok(NULL, delims); + } +} + +static void _zend_add_valid_assoc_string(zval *rstl_arr, char *key, char *val) +{ + if (!val) + add_assoc_null(rstl_arr, key); + else + add_assoc_string(rstl_arr, key, val, 1); +} + + +static void _zend_add_valid_assoc_time_string( + zval *rstl_arr, char *key, time_t *val) +{ + char buf[80]; + struct tm *timeinfo; + + if (val==0) { + add_assoc_null(rstl_arr, key); + } else { + timeinfo = localtime(val); + strftime(buf, 80, TIME_FORMAT_STRING, timeinfo); + add_assoc_string(rstl_arr, key, buf, 1); + } +} + + +/*****************************************************************************\ + * SLURM STATUS FUNCTIONS +\*****************************************************************************/ + +PHP_FUNCTION(slurm_ping) +{ + int err = SLURM_SUCCESS; + + array_init(return_value); + err = slurm_ping(1); + add_assoc_long(return_value,"Prim. Controller",err); + err = slurm_ping(2); + add_assoc_long(return_value,"Sec. Controller",err); +} + + +PHP_FUNCTION(slurm_slurmd_status) +{ + int err = SLURM_SUCCESS; + slurmd_status_t *status_ptr = NULL; + + err = slurm_load_slurmd_status(&status_ptr); + if (err) { + RETURN_LONG(-2); + } + + array_init(return_value); + _zend_add_valid_assoc_time_string(return_value,"Booted_at", + &status_ptr->booted); + _zend_add_valid_assoc_time_string(return_value,"Last_Msg", + &status_ptr->last_slurmctld_msg); + add_assoc_long(return_value,"Logging_Level", status_ptr->slurmd_debug); + add_assoc_long(return_value,"Actual_CPU's", status_ptr->actual_cpus); + add_assoc_long(return_value,"Actual_Sockets", + status_ptr->actual_sockets); + add_assoc_long(return_value,"Actual_Cores",status_ptr->actual_cores); + add_assoc_long(return_value,"Actual_Threads", + status_ptr->actual_threads); + add_assoc_long(return_value,"Actual_Real_Mem", + status_ptr->actual_real_mem); + add_assoc_long(return_value,"Actual_Tmp_Disk", + status_ptr->actual_tmp_disk); + add_assoc_long(return_value,"PID",status_ptr->pid); + _zend_add_valid_assoc_string(return_value, "Hostname", + status_ptr->hostname); + _zend_add_valid_assoc_string(return_value, "Slurm Logfile", + status_ptr->slurmd_logfile); + _zend_add_valid_assoc_string(return_value, "Step List", + status_ptr->step_list); + _zend_add_valid_assoc_string(return_value, "Version", + status_ptr->version); + + if (status_ptr != NULL) { + slurm_free_slurmd_status(status_ptr); + } +} + + +PHP_FUNCTION(slurm_version) +{ + long option = -1; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, + "l", &option) == FAILURE) { + RETURN_LONG(-3); + } + + switch (option) { + case 0: + RETURN_LONG(SLURM_VERSION_MAJOR(SLURM_VERSION_NUMBER)); + break; + case 1: + RETURN_LONG(SLURM_VERSION_MINOR(SLURM_VERSION_NUMBER)); + break; + case 2: + RETURN_LONG(SLURM_VERSION_MICRO(SLURM_VERSION_NUMBER)); + break; + default: + array_init(return_value); + add_next_index_long(return_value, + SLURM_VERSION_MAJOR(SLURM_VERSION_NUMBER)); + add_next_index_long(return_value, + SLURM_VERSION_MINOR(SLURM_VERSION_NUMBER)); + add_next_index_long(return_value, + SLURM_VERSION_MICRO(SLURM_VERSION_NUMBER)); + break; + } +} + + +/*****************************************************************************\ + * SLURM PHP HOSTLIST FUNCTIONS +\*****************************************************************************/ + +PHP_FUNCTION(slurm_hostlist_to_array) +{ + long lngth = 0; + char *host_list = NULL; + hostlist_t hl = NULL; + int hl_length = 0; + int i=0; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "s|d", + &host_list, &lngth) == FAILURE) { + RETURN_LONG(-3); + } + + if ((host_list == NULL) || !strcmp(host_list, "")) { + RETURN_LONG(-3); + } + + hl = slurm_hostlist_create(host_list); + hl_length = slurm_hostlist_count(hl); + + if (hl_length==0) { + RETURN_LONG(-2); + } + + array_init(return_value); + for (i=0; irecord_count; i++) { + add_next_index_string(return_value, + prt_ptr->partition_array[i].name, 1); + } + + slurm_free_partition_info_msg(prt_ptr); + + if (i == 0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_get_specific_partition_info) +{ + long lngth = 0; + int err = SLURM_SUCCESS; + partition_info_msg_t *prt_ptr = NULL; + partition_info_t *prt_data = NULL; + char *name = NULL; + char *tmp = NULL; + int i = 0; + int y = 0; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "s|d", &name, + &lngth) == FAILURE) { + RETURN_LONG(-3); + } + + if ((name == NULL) || !strcmp(name, "")) { + RETURN_LONG(-3); + } + + err = slurm_load_partitions((time_t) NULL, &prt_ptr, 0); + + if (err) { + RETURN_LONG(-2); + } + + if (prt_ptr->record_count != 0) { + for (i = 0; i < prt_ptr->record_count; i++) { + if (strcmp(prt_ptr->partition_array->name, name) == 0) { + prt_data = &prt_ptr->partition_array[i]; + tmp = slurm_sprint_partition_info(prt_data, 1); + array_init(return_value); + _parse_assoc_array(tmp, "= ", return_value); + y++; + break; + } + } + } + + slurm_free_partition_info_msg(prt_ptr); + + if (y == 0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_get_partition_node_names) +{ + char *prt_name = NULL; + long lngth = 0; + int err = SLURM_SUCCESS; + partition_info_msg_t *prt_ptr = NULL; + partition_info_t *prt_data = NULL; + int i = 0; + int y = 0; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "s|d", &prt_name, + &lngth) == FAILURE) { + RETURN_LONG(-3); + } + + if ((prt_name == NULL) || (strcmp(prt_name,"")==0)) { + RETURN_LONG(-3); + } + + err = slurm_load_partitions((time_t) NULL, &prt_ptr, 0); + + if (err) + RETURN_LONG(-2); + + if (prt_ptr->record_count != 0) { + for (i = 0; i < prt_ptr->record_count; i++) { + if (!strcmp(prt_ptr->partition_array->name, prt_name)) { + prt_data = &prt_ptr->partition_array[i]; + array_init(return_value); + add_next_index_string( + return_value, prt_data->nodes, 1); + y++; + break; + } + } + } + + slurm_free_partition_info_msg(prt_ptr); + + if (y == 0) + RETURN_LONG(-1); +} + + +/*****************************************************************************\ + * SLURM NODE CONFIGURATION READ FUNCTIONS +\*****************************************************************************/ + +PHP_FUNCTION(slurm_get_node_names) +{ + int err = SLURM_SUCCESS; + int i = 0; + node_info_msg_t *node_ptr = NULL; + + err = slurm_load_node((time_t) NULL, &node_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + if (node_ptr->record_count > 0) { + array_init(return_value); + for (i = 0; i < node_ptr->record_count; i++) { + add_next_index_string( + return_value, node_ptr->node_array[i].name, 1); + } + } + + slurm_free_node_info_msg(node_ptr); + + if(i==0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_get_node_elements) +{ + int err = SLURM_SUCCESS; + int i = 0; + node_info_msg_t *node_ptr; + zval *sub_arr = NULL; + + err = slurm_load_node((time_t) NULL, &node_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + if (node_ptr->record_count > 0) { + array_init(return_value); + for (i = 0; i < node_ptr->record_count; i++) { + ALLOC_INIT_ZVAL(sub_arr); + array_init(sub_arr); + _parse_node_pointer(sub_arr, &node_ptr->node_array[i]); + add_assoc_zval(return_value, + node_ptr->node_array[i].name, + sub_arr); + } + } + + slurm_free_node_info_msg(node_ptr); + + if(i==0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_get_node_element_by_name) +{ + int err = SLURM_SUCCESS; + int i = 0,y = 0; + node_info_msg_t *node_ptr; + char *node_name = NULL; + long lngth; + zval *sub_arr = NULL; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "s|d", &node_name, + &lngth) == FAILURE) { + RETURN_LONG(-3); + } + + if ((node_name == NULL) || (strcmp(node_name,"")==0)) { + RETURN_LONG(-3); + } + + err = slurm_load_node((time_t) NULL, &node_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + array_init(return_value); + + for (i = 0; i < node_ptr->record_count; i++) { + if (strcmp(node_ptr->node_array->name, node_name) == 0) { + y++; + ALLOC_INIT_ZVAL(sub_arr); + array_init(sub_arr); + _parse_node_pointer(sub_arr, &node_ptr->node_array[i]); + add_assoc_zval(return_value, node_name, + sub_arr); + break; + } + } + + slurm_free_node_info_msg(node_ptr); + + if (y == 0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_get_node_state_by_name) +{ + int err = SLURM_SUCCESS; + int i = 0,y = 0; + node_info_msg_t *node_ptr; + char *node_name = NULL; + long lngth; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "s|d", &node_name, + &lngth) == FAILURE) { + RETURN_LONG(-3); + } + + if ((node_name == NULL) || (strcmp(node_name,"")==0)) { + RETURN_LONG(-3); + } + + err = slurm_load_node((time_t) NULL, &node_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + for (i = 0; i < node_ptr->record_count; i++) { + if (strcmp(node_ptr->node_array->name, node_name) == 0) { + y++; + RETURN_LONG(node_ptr->node_array[i].node_state); + break; + } + } + + slurm_free_node_info_msg(node_ptr); + + if (i == 0) { + RETURN_LONG(-1); + } + + if (y==0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_get_node_states) +{ + int err = SLURM_SUCCESS; + int i = 0; + node_info_msg_t *node_ptr; + + err = slurm_load_node((time_t) NULL, &node_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + array_init(return_value); + for (i = 0; i < node_ptr->record_count; i++) { + add_next_index_long(return_value, + node_ptr->node_array[i].node_state); + } + + slurm_free_node_info_msg(node_ptr); + + if (i == 0) { + RETURN_LONG(-1); + } +} + + +/*****************************************************************************\ + * SLURM CONFIGURATION READ FUNCTIONS +\*****************************************************************************/ + +PHP_FUNCTION(slurm_get_control_configuration_keys) +{ + int err = SLURM_SUCCESS; + slurm_ctl_conf_t *ctrl_conf_ptr; + List lst; + ListIterator iter = NULL; + key_pair_t *k_p; + + err = slurm_load_ctl_conf((time_t) NULL, &ctrl_conf_ptr); + if (err) { + RETURN_LONG(-2); + } + + lst = slurm_ctl_conf_2_key_pairs(ctrl_conf_ptr); + if (!lst) { + RETURN_LONG(-1); + } + + iter = slurm_list_iterator_create(lst); + array_init(return_value); + while ((k_p = slurm_list_next(iter))) { + add_next_index_string(return_value, k_p->name, 1); + } + + slurm_free_ctl_conf(ctrl_conf_ptr); +} + + +PHP_FUNCTION(slurm_get_control_configuration_values) { - RETURN_STRING("Hello World\n", 1); + int err = SLURM_SUCCESS; + slurm_ctl_conf_t *ctrl_conf_ptr; + List lst; + ListIterator iter = NULL; + key_pair_t *k_p; + + err = slurm_load_ctl_conf((time_t) NULL, &ctrl_conf_ptr); + if (err) { + RETURN_LONG(-2); + } + + lst = slurm_ctl_conf_2_key_pairs(ctrl_conf_ptr); + if (!lst) { + RETURN_LONG(-1); + } + + iter = slurm_list_iterator_create(lst); + array_init(return_value); + while ((k_p = slurm_list_next(iter))) { + if (k_p->value==NULL) { + add_next_index_null(return_value); + } else { + add_next_index_string(return_value, k_p->value, 1); + } + } + + slurm_free_ctl_conf(ctrl_conf_ptr); } -PHP_FUNCTION(print_partitions) + +/*****************************************************************************\ + * SLURM JOB READ FUNCTIONS +\*****************************************************************************/ + +PHP_FUNCTION(slurm_load_job_information) { - List sinfo_list = NULL; - int error_code = SLURM_SUCCESS; - uint16_t show_flags = 0; - static partition_info_msg_t *new_part_ptr; - printf("hey\n"); - slurm_info("got here!"); - printf("hey\n"); - error_code = slurm_load_partitions((time_t) NULL, &new_part_ptr, - show_flags); - if (error_code) { - error("slurm_load_part"); - RETURN_INT(error_code); - } - -// sinfo_list = list_create(_sinfo_list_delete); - - RETURN_INT(error_code); + int err = SLURM_SUCCESS; + int i = 0; + job_info_msg_t *job_ptr; + zval *sub_arr = NULL; + char *tmp; + + err = slurm_load_jobs((time_t) NULL, &job_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + array_init(return_value); + for (i = 0; i < job_ptr->record_count; i++) { + ALLOC_INIT_ZVAL(sub_arr); + array_init(sub_arr); + _parse_assoc_array(slurm_sprint_job_info( + &job_ptr->job_array[i], 1), + "= ", sub_arr); + tmp = slurm_xstrdup_printf("%u", job_ptr->job_array[i].job_id); + add_assoc_zval(return_value, tmp, sub_arr); + xfree(tmp); + } + + slurm_free_job_info_msg(job_ptr); + + if (i == 0) { + RETURN_LONG(-1); + } +} + + +PHP_FUNCTION(slurm_load_partition_jobs) +{ + int err = SLURM_SUCCESS; + int i = 0; + job_info_msg_t *job_ptr; + zval *sub_arr = NULL; + char *tmp; + char *pname = NULL; + long lngth; + long checker = 0; + + if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "s|d", &pname, + &lngth) == FAILURE) { + RETURN_LONG(-3); + } + + if ((pname == NULL) || !strcmp(pname,"")) { + RETURN_LONG(-3); + } + + err = slurm_load_jobs((time_t) NULL, &job_ptr, 0); + if (err) { + RETURN_LONG(-2); + } + + array_init(return_value); + for (i = 0; i < job_ptr->record_count; i++) { + if (!strcmp(job_ptr->job_array->partition, pname)) { + checker++; + ALLOC_INIT_ZVAL(sub_arr); + array_init(sub_arr); + _parse_assoc_array(slurm_sprint_job_info( + &job_ptr->job_array[i], 1), + "= ", sub_arr); + tmp = slurm_xstrdup_printf( + "%u", job_ptr->job_array[i].job_id); + add_assoc_zval(return_value, tmp, sub_arr); + xfree(tmp); + } + } + + slurm_free_job_info_msg(job_ptr); + + if (i == 0) { + RETURN_LONG(-1); + } + + if (checker==0) { + RETURN_LONG(-1); + } } diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/slurm_php.h slurm-llnl-2.3.2/contribs/phpext/slurm_php/slurm_php.h --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/slurm_php.h 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/slurm_php.h 2011-12-05 17:20:08.000000000 +0000 @@ -1,52 +1,383 @@ /*****************************************************************************\ * slurm_php.h - php interface to slurm. * - * $Id: slurm_php.h 13061 2008-01-22 21:23:56Z da $ ***************************************************************************** - * Copyright (C) 2004-2007 The Regents of the University of California. - * Copyright (C) 2008 Lawrence Livermore National Security. - * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). - * Written by Danny Auble - * - * This file is part of SLURM, a resource management program. - * For details, see . + * Copyright (C) 2011 - Trinity Centre for High Performance Computing + * Copyright (C) 2011 - Trinity College Dublin + * Written By : Vermeulen Peter + * + * This file is part of php-slurm, a resource management program. * Please also read the included file: DISCLAIMER. - * - * SLURM is free software; you can redistribute it and/or modify it under + * + * php-slurm is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * - * In addition, as a special exception, the copyright holders give permission + * In addition, as a special exception, the copyright holders give permission * to link the code of portions of this program with the OpenSSL library under - * certain conditions as described in each individual source file, and - * distribute linked combinations including the two. You must obey the GNU - * General Public License in all respects for all of the code used other than - * OpenSSL. If you modify file(s) with this exception, you may extend this - * exception to your version of the file(s), but you are not obligated to do + * certain conditions as described in each individual source file, and + * distribute linked combinations including the two. You must obey the GNU + * General Public License in all respects for all of the code used other than + * OpenSSL. If you modify file(s) with this exception, you may extend this + * exception to your version of the file(s), but you are not obligated to do * so. If you do not wish to do so, delete this exception statement from your - * version. If you delete this exception statement from all source files in + * version. If you delete this exception statement from all source files in * the program, then also delete it here. - * - * SLURM is distributed in the hope that it will be useful, but WITHOUT ANY + * + * php-slurm is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public License along - * with SLURM; if not, write to the Free Software Foundation, Inc., + * with php-slurm; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. \*****************************************************************************/ + #ifndef SLURM_PHP_H #define SLURM_PHP_H 1 -#define SLURM_PHP_VERSION "1.0" +#define SLURM_PHP_VERSION "1.0.1" #define SLURM_PHP_EXTNAME "slurm" +/* + * Adjust this value to change the format of the returned string + * values. + * + * For more information on formatting options : + * http://www.java2s.com/Tutorial/C/0460__time.h/strftime.htm + */ +#define TIME_FORMAT_STRING "%c" -PHP_FUNCTION(hello_world); -PHP_FUNCTION(print_partitions); +#include +#include +#include + +#include +#include +#include + +#include "src/common/xmalloc.h" extern zend_module_entry slurm_php_module_entry; + +/*****************************************************************************\ + * TYPEDEFS +\*****************************************************************************/ + +typedef struct key_value { + char *name; /* key */ + char *value; /* value */ +} key_pair_t; + +/* define functions needed to avoid warnings (they are defined in + * src/common/xstring.h) If you can figure out a way to make it so we + * don't have to make these declarations that would be awesome. I + * didn't have time to spend on it when I was working on it. -da + */ + +/* +** strdup which uses xmalloc routines +*/ +char *slurm_xstrdup(const char *str); + +/* +** strdup formatted which uses xmalloc routines +*/ +char *slurm_xstrdup_printf(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + + +/*****************************************************************************\ + * SLURM PHP HOSTLIST FUNCTIONS +\*****************************************************************************/ + +/* + * slurm_hostlist_to_array - converts a hostlist string to + * a numerically indexed array. + * + * IN host_list - string value containing the hostlist + * RET numerically indexed array containing the names of the nodes + */ +PHP_FUNCTION(slurm_hostlist_to_array); + +/* + * slurm_array_to_hostlist - convert an array of nodenames into a hostlist + * string + * + * IN node_arr - Numerically indexed array containing a nodename on each index + * RET String variable containing the hostlist string + */ +PHP_FUNCTION(slurm_array_to_hostlist); + + +/*****************************************************************************\ + * SLURM STATUS FUNCTIONS +\*****************************************************************************/ + +/* + * slurm_ping - Issues the slurm interface to return the status of the slurm + * primary and secondary controller + * + * RET associative array containing the status ( status = 0 if online, = -1 if + * offline ) of both controllers + * NOTE : the error codes and their meaning are described in the section + * labelled EXTRA + */ +PHP_FUNCTION(slurm_ping); + +/* + * slurm_slurmd_status - Issues the slurm interface to return the + * status of the slave daemon ( running on this machine ) + * + * RET associative array containing the status or a negative long variable + * containing an error code + * NOTE : the error codes and their meaning are described in the section + * labelled EXTRA + */ +PHP_FUNCTION(slurm_slurmd_status); + +/* + * slurm_version - Returns the slurm version number in the requested format + * + * IN option - long/integer value linking to the formatting of the version + * number + * RET long value containing the specific formatted version number a numeric + * array containing the version number or a negative long variable + * containing an error code. + * NOTE : the possible cases and their meaning are described in the section + * labelled EXTRA + */ +PHP_FUNCTION(slurm_version); + + +/*****************************************************************************\ + * SLURM PARTITION READ FUNCTIONS +\*****************************************************************************/ + +/* + * slurm_print_partition_names - Creates and returns a numerically + * indexed array containing the names of the partitions + * + * RET numerically indexed array containing the partitionnames or a + * negative long variable containing an error code NOTE : the + * error codes and their meaning are described in the section + * labelled EXTRA + */ +PHP_FUNCTION(slurm_print_partition_names); +/* + * slurm_get_specific_partition_info - Searches for the requested + * partition and if found it returns an associative array + * containing the information about this specific partition + * + * IN name - a string variable containing the partitionname + * OPTIONAL IN lngth - a long variable containing the length of the + * partitionname + * RET an associative array containing the information about a + * specific partition, or a negative long value containing an + * error code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_specific_partition_info); + +/* + * slurm_get_partition_node_names - Searches for the requested partition and + * if found it parses the nodes into a numerically indexed array, which is + * then returned to the calling function. + * + * IN name - a string variable containing the partitionname + * + * OPTIONAL IN lngth - a long variable containing the length of the + * partitionname + * + * RET a numerically indexed array containing the names of all the + * nodes connected to this partition, or a negative long value + * containing an error code + * + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_partition_node_names); + + +/*****************************************************************************\ + * SLURM NODE CONFIGURATION READ FUNCTIONS +\*****************************************************************************/ + +/* + * slurm_get_node_names - Creates and returns a numerically index array + * containing the nodenames. + * + * RET a numerically indexed array containing the requested nodenames, + * or a negative long value containing an error code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_node_names); + +/* + * slurm_get_node_elements - Creates and returns an associative array + * containing all the nodes indexed by nodename and as value an + * associative array containing their information. + * + * RET an associative array containing the nodes as keys and their + * information as value, or a long value containing an error code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_node_elements); + +/* + * slurm_get_node_element_by_name - Searches for the requested node + * and if found it parses its information into an associative + * array, which is then returned to the calling function. + * + * IN name - a string variable containing the nodename + * OPTIONAL IN lngth - a long variable containing the length of the nodename + * RET an assocative array containing the requested information or a + * long value containing an error code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_node_element_by_name); + +/* + * slurm_get_node_state_by_name - Searches for the requested node and + * if found it returns the state of that node + * + * IN name - a string variable containing the nodename + * OPTIONAL IN lngth - a long variable containing the length of the nodename + * RET a long value containing the state of the node [0-7] or a + * negative long value containing the error code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_node_state_by_name); + +/* + * slurm_get_node_states - Creates a numerically indexed array + * containing the state of each node ( only the state ! ) as a + * long value. This function could be used to create a summary of + * the node states without having to do a lot of processing ( or + * having to deal with overlapping nodes between partitions ). + * + * RET a numerically indexed array containing node states + */ +PHP_FUNCTION(slurm_get_node_states); + + +/*****************************************************************************\ + * SLURM CONFIGURATION READ FUNCTIONS +\*****************************************************************************/ + +/* + * Due to the configuration being quite large, i decided to create 2 functions + * to return the keys and values separately. ( to prevent a buffer overflow ) + */ + +/* + * slurm_get_control_configuration_keys - Retreives the configuration + * from the slurm daemon and parses it into a numerically indexed + * array containg the keys that link to the values ( the values + * are retreived by the slurm_get_control_configuration_values + * function ) + * + * RET a numerically indexed array containing keys that describe the + * values of the configuration of the slurm daemon, or a long + * value containing an error code + * + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_control_configuration_keys); + +/* + * slurm_get_control_configuration_values - Retreives the + * configuration from the slurm daemon and parses it into a + * numerically indexed array containg the values that link to the + * keys ( the keys are retreived by the + * slurm_get_control_configuration_keys function ) + * + * RET a numerically indexed array containing the values of the + * configuration of the slurm daemon, or a long value containing + * an error code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_get_control_configuration_values); + + +/*****************************************************************************\ + * SLURM JOB READ FUNCTIONS +\*****************************************************************************/ + +/* + * slurm_load_job_information - Loads the information of all the jobs, + * parses it and returns the values as an associative array where + * each key is the job id linking to an associative array with + * the information of the job + * + * RET an associative array containing the information of all jobs, or + * a long value containing an error code. + * + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_load_job_information); + +/* + * slurm_load_partition_jobs - Retreive the information of all the + * jobs running on a single partition. + * + * IN pname - The partition name as a string value + * OPTIONAL IN lngth - a long variable containing the length of the + * partitionname + * RET an associative array containing the information of all the jobs + * running on this partition. Or a long value containing an error + * code + * NOTE : the error codes and their meaning are described in the + * section labelled EXTRA + */ +PHP_FUNCTION(slurm_load_partition_jobs); + + +/*****************************************************************************\ + * EXTRA + ***************************************************************************** + * + * [ERROR CODES] + * + * -3 : no/incorrect variables where passed on + * -2 : An error occurred whilst trying to communicate + * with the daemon + * -1 : Your query produced no results + * + * [VERSION FORMATTING OPTIONS] + * + * 0 : major of the version number + * 1 : minor of the version number + * 2 : micro of the version number + * default : full version number + * + * [EXPLANATION] + * + * Consider the version number 2.2.3, + * if we were to split this into an array + * where the "." sign is the delimiter + * we would receive the following + * + * [2] => MAJOR + * [2] => MINOR + * [3] => MICRO + * + * When requesting the major you would + * only receive the major, when requesting + * the full version you would receive the array + * as depicted above. + * +\*****************************************************************************/ + #define phpext_slurm_php_ptr &slurm_php_module_entry #endif diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +Test function slurm_array_to_hostlist() by calling it with its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +array(1) { + ["HOSTLIST"]=> + string(26) "host[01-02],another-host02" +} diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_array_to_hostlist_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +Test function slurm_array_to_hostlist() by calling it more than or less than its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Test by calling method or function with incorrect numbers of arguments *** +! ret -2 < 0 diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_keys_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_keys_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_keys_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_keys_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +Test function slurm_get_control_configuration_keys() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_get_control_configuration_keys : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_values_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_values_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_values_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_control_configuration_values_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,39 @@ +--TEST-- +Test function slurm_get_control_configuration_values() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_get_control_configuration_values : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,34 @@ +--TEST-- +Test function slurm_get_node_element_by_name() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function without any arguments *** +[SLURM:ERROR] -1 : No node by that name was found on your system +[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on +[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_element_by_name_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +Test function slurm_get_node_element_by_name() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +[SLURM:ERROR] -1 : No node by that name was found on your system diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_elements_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_elements_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_elements_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_elements_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +Test function slurm_get_node_elements() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_get_node_elements() : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_names_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_names_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_names_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_names_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,29 @@ +--TEST-- +Test function slurm_get_node_names() by calling it with its expected arguments +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_get_node_names : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,41 @@ +--TEST-- +Test function slurm_get_node_state_by_name() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with faulty arguments *** +[SLURM:ERROR] -1 : No node by that name was found on your system +[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on +[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_state_by_name_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +Test function slurm_get_node_state_by_name() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with faulty arguments *** +[SLURM:ERROR] -1 : No node by that name was found on your system diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_states_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_states_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_node_states_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_node_states_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,28 @@ +--TEST-- +Test function slurm_get_node_states() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with correct arguments *** +[SLURM:SUCCESS] : slurm_get_node_states() succesfully returned it's data diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,17 @@ +--TEST-- +Test function slurm_get_partition_node_names() by calling it with its expected arguments +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_get_partition_node_names ok diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_partition_node_names_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +Test function slurm_get_partition_node_names() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +[SLURM:ERROR] -1 : No partition by that name was found on your system diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,37 @@ +--TEST-- +Test function slurm_get_specific_partition_info() by calling it with its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Test by calling method or function with its expected arguments *** +[SLURM:SUCCESS] diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_get_specific_partition_info_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +Test function slurm_get_specific_partition_info() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +[SLURM:ERROR] -1 : No partition by that name was found on your system diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,27 @@ +--TEST-- +Test function slurm_hostlist_to_array() by calling it with its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +array(3) { + [0]=> + string(6) "host01" + [1]=> + string(6) "host02" + [2]=> + string(14) "another-host02" +} diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_hostlist_to_array_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,24 @@ +--TEST-- +Test function slurm_hostlist_to_array() by calling it more than or less than its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Test by calling method or function with incorrect numbers of arguments *** +int(-3) diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_load_job_information_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_load_job_information_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_load_job_information_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_load_job_information_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,32 @@ +--TEST-- +Test function slurm_load_job_information() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_load_job_information : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,36 @@ +--TEST-- +Test function slurm_load_partition_jobs() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Test by calling method or function with correct arguments *** +[SLURM:SUCCESS] diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_load_partition_jobs_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,34 @@ +--TEST-- +Test function slurm_load_partition_jobs() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with faulty arguments *** +[SLURM:ERROR] -1 : No jobs where found for a partition by that name +[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on +[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_ping_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_ping_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_ping_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_ping_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,14 @@ +--TEST-- +Test function slurm_ping() by calling it with its expected arguments +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(0) diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_ping_error.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_ping_error.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_ping_error.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_ping_error.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,35 @@ +--TEST-- +Test function slurm_ping() by calling it more than or less than its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +*** Test by calling method or function with incorrect numbers of arguments *** +! slurm_ping Array == 0 ok +! slurm_ping Array == -1 ok +! slurm_ping Array == 0 ok +! slurm_ping Array == -1 ok diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_print_partition_names_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_print_partition_names_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_print_partition_names_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_print_partition_names_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,33 @@ +--TEST-- +Test function slurm_print_partition_names() by calling it with its expected arguments +--CREDIT-- +Jimmy Tang +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_print_partition_names : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_slurmd_status_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_slurmd_status_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_slurmd_status_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_slurmd_status_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,26 @@ +--TEST-- +Test function slurm_slurmd_status() by calling it with its expected arguments +--CREDIT-- +Peter Vermeulen +--SKIPIF-- + +--FILE-- + +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_slurmd_status() : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_version_basic.phpt slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_version_basic.phpt --- slurm-llnl-2.2.7/contribs/phpext/slurm_php/tests/slurm_version_basic.phpt 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/phpext/slurm_php/tests/slurm_version_basic.phpt 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,30 @@ +--TEST-- +Test function slurm_version() by calling it with its expected arguments +--CREDIT-- +Jimmy Tang +Peter Vermeulen +--SKIPIF-- + +--FILE-- +0)) { + echo "! slurm_version : SUCCESS"; +} else if($ver == -3) { + echo "[SLURM:ERROR] -3 : Faulty variables ( or no variables ) where passed on"; +} else if($ver == -2) { + echo "[SLURM:ERROR] -2 : Daemons not online"; +} else if($ver == -1) { + echo "[SLURM:ERROR] -1 : No version was found on the system"; +} + +?> +--EXPECT-- +*** Test by calling method or function with its expected arguments *** +! slurm_version : SUCCESS diff -Nru slurm-llnl-2.2.7/contribs/README slurm-llnl-2.3.2/contribs/README --- slurm-llnl-2.2.7/contribs/README 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/README 2011-12-05 17:20:08.000000000 +0000 @@ -7,6 +7,47 @@ SLURM as their documentation. A quick description of the subdirectories of the SLURM contribs distribution follows: + arrayrun [Adds support for array jobs] + README - Description of the arrayrun tool and its use + arrayrun - Command used to submit job arrays + arrayrun_worker - Back-end to the arrayrun command responsible for + spawning the jobs in the array + + cray [Tools for use on Cray systems] + etc_init_d_munge - /etc/init.d/munge script for use with Munge + etc_sysconfig_slurm - /etc/sysconfig/slurm for Cray XT/XE systems + libalps_test_programs.tar.gz - set of tools to verify ALPS/BASIL support + logic. Note that this currently requires: + * hardcoding in libsdb/basil_mysql_routines.c: + mysql_real_connect(handle, "localhost", NULL, NULL, "XT5istanbul" + * suitable /etc/my.cnf, containing at least the lines + [client] + user=basic + password=basic + * setting the APBASIL in the libalps/Makefile, e.g. + APBASIL := slurm/alps_simulator/apbasil.sh + To use, extract the files then: + > cd libasil/ + > make -C alps_tests all # runs basil parser tests + > make -C sdb_tests all # checks if database routines work + A tool named tuxadmin is also also included. When + executed with the -s or --slurm.conf option, this + contact the SDB to generate system-specific information + needed in slurm.conf (e.g. "NodeName=nid..." and + "PartitionName= Nodes=nid... MaxNodes=...". + munge_build_script.sh - script to build Munge from sources for Cray system + opt_modulefiles_slurm - enables use of Munge as soon as built + slurm-build-script.sh - script to build SLURM from sources for Cray system. + set LIBROOT and SLURM_SRC environment variables + before use, for example: + LIBROOT=/ufs/slurm/build + SLURM_SRC=${SLURM_SRC:-${LIBROOT}/slurm-2.3.0-0.pre4} + srun.pl - A perl wrapper for the aprun command. Use of this + wrapper requires that SLURM's perlapi be installed. + Execute configure with the --with-srun2aprun option + to build and install this instead of SLURM's normal + srun command. + env_cache_builder.c [C program] This program will build an environment variable cache file for specific users or all users on the system. This can be used to prevent the aborting @@ -18,6 +59,8 @@ Example LUA scripts that can serve as SLURM plugins. job_submit.lua - job_submit plugin that can set a job's default partition using a very simple algorithm + job_submit_license.lua - job_submit plugin that can set a job's use of + system licenses proctrack.lua - proctrack (process tracking) plugin that implements a very simple job step container using CPUSETs diff -Nru slurm-llnl-2.2.7/contribs/sjobexit/Makefile.in slurm-llnl-2.3.2/contribs/sjobexit/Makefile.in --- slurm-llnl-2.2.7/contribs/sjobexit/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/sjobexit/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -64,6 +64,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -74,6 +75,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -118,7 +120,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -155,6 +160,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -212,6 +218,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -247,6 +254,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/sjobexit/sjobexitmod.pl slurm-llnl-2.3.2/contribs/sjobexit/sjobexitmod.pl --- slurm-llnl-2.2.7/contribs/sjobexit/sjobexitmod.pl 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/sjobexit/sjobexitmod.pl 2011-12-05 17:20:08.000000000 +0000 @@ -36,7 +36,7 @@ # # Format for listing job. # -my $list_format = "JobID,Account,NNodes,NodeList,State,ExitCode,DerivedExitCode,DerivedExitStr"; +my $list_format = "JobID,Account,NNodes,NodeList,State,ExitCode,DerivedExitCode,Comment"; # @@ -128,7 +128,7 @@ # $execute_line = "sacctmgr -i modify job jobid=$jobid set"; - $execute_line .= " DerivedExitStr=\"$reason\"" if ($reason); + $execute_line .= " Comment=\"$reason\"" if ($reason); $execute_line .= " DerivedExitCode=$code" if ($code); $execute_line .= " Cluster=$cluster" if ($cluster); @@ -163,7 +163,7 @@ $base [-man] -e Modify the derived exit code to new value. - -r Modify the derived exit string to new value. + -r Modify the job's comment field to new value. -c Name of cluster (optional). -l List information for a completed job. -h Show usage. @@ -215,11 +215,11 @@ sjobexitmod is a wrapper which effectively does the same operation as using the sacct utility to modify certain aspects of a completed job. - sacctmgr -i modify job jobid=1286 set DerivedExitCode=1 DerivedExitStr="code error" + sacctmgr -i modify job jobid=1286 set DerivedExitCode=1 Comment="code error" or to list certain aspects of a completed job. - sacct -o jobid,derivedexitcode,derivedexitstr,cluster + sacct -o jobid,derivedexitcode,comment,cluster =head1 OPTIONS @@ -247,7 +247,7 @@ =item B<-r> I -The reason (DerivedEixtStr) for job termination. +The reason (Comment) for job termination. =item B diff -Nru slurm-llnl-2.2.7/contribs/sjstat slurm-llnl-2.3.2/contribs/sjstat --- slurm-llnl-2.2.7/contribs/sjstat 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/sjstat 2011-12-05 17:20:08.000000000 +0000 @@ -9,36 +9,36 @@ # Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). # Written by Phil Eckert . # CODE-OCEC-09-009. All rights reserved. -# +# # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. -# +# # SLURM is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # -# In addition, as a special exception, the copyright holders give permission +# In addition, as a special exception, the copyright holders give permission # to link the code of portions of this program with the OpenSSL library under -# certain conditions as described in each individual source file, and -# distribute linked combinations including the two. You must obey the GNU -# General Public License in all respects for all of the code used other than -# OpenSSL. If you modify file(s) with this exception, you may extend this -# exception to your version of the file(s), but you are not obligated to do +# certain conditions as described in each individual source file, and +# distribute linked combinations including the two. You must obey the GNU +# General Public License in all respects for all of the code used other than +# OpenSSL. If you modify file(s) with this exception, you may extend this +# exception to your version of the file(s), but you are not obligated to do # so. If you do not wish to do so, delete this exception statement from your -# version. If you delete this exception statement from all source files in +# version. If you delete this exception statement from all source files in # the program, then also delete it here. -# +# # SLURM is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. -# +# # You should have received a copy of the GNU General Public License along # with SLURM; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# +# # Based off code with permission copyright 2006, 2007 Cluster Resources, Inc. ############################################################################### @@ -70,6 +70,16 @@ my (%MaxNodes, %MaxTime); # +# Check SLURM status. +# + isslurmup(); + +# +# See if bluegene system. +# + my $bglflag = 1 if (`scontrol show config | grep -i bluegene`); + +# # Get user options. # get_options(); @@ -99,6 +109,25 @@ # +# Do usable for bluegene +# +sub Usable +{ + my ($tot, $out) = @_; + + $tot *= 1024.0 if ($tot =~ /K/); + $out *= 1024.0 if ($out =~ /K/); + + my $usable = $tot - $out; + if ($usable > 1024.0) { + $usable /= 1024.0; + $usable .= 'K'; + } + + return($usable); +} + +# # Get the SLURM partitions information. # sub do_sinfo @@ -109,7 +138,7 @@ # # Get the partition and node info. # - my $options = "\"%9P %6m %.4c %.16F %f\""; + my $options = "\"%9P %6m %.4c %.22F %f\""; my $ct = 0; my @sin = `sinfo -e -o $options`; @@ -128,11 +157,13 @@ $s_idle[$ct] = $fields[1]; $s_out[$ct] = $fields[2]; $s_total[$ct] = $fields[3]; + + if ($bglflag) { + $s_usable[$ct] = Usable($s_total[$ct], $s_out[$ct]); + } else { $s_usable[$ct] = $s_total[$ct] - $s_out[$ct]; -# -# Handle "k" factor for Blue Gene. -# - $s_usable[$ct] .= 'K' if ($s_total[$ct] =~ /K/); + } + $s_feat[$ct] = ($line[4] .= " "); $s_feat[$ct] =~ s/\(null\)//g; $ct++; @@ -140,10 +171,10 @@ printf("\nScheduling pool data:\n"); if ($verbose) { - printf("------------------------------------------------------------------------------\n"); - printf(" Total Usable Free Node Time Other \n"); - printf("Pool Memory Cpus Nodes Nodes Nodes Limit Limit traits \n"); - printf("------------------------------------------------------------------------------\n"); + printf("----------------------------------------------------------------------------------\n"); + printf(" Total Usable Free Node Time Other \n"); + printf("Pool Memory Cpus Nodes Nodes Nodes Limit Limit traits \n"); + printf("----------------------------------------------------------------------------------\n"); } else { printf("-------------------------------------------------------------\n"); printf("Pool Memory Cpus Total Usable Free Other Traits \n"); @@ -154,17 +185,15 @@ if ($verbose) { my $p = $s_part[$i]; $p =~ s/\*//; - printf("%-9s %6dMb %5d %6s %7s %6s %6s %6s %-s\n", + printf("%-9s %6dMb %5s %6s %7s %6s %6s %10s %-s\n", $s_part[$i], $s_mem[$i], $s_cpu[$i], - $s_total[$i], - $s_total[$i] - $s_out[$i], + $s_total[$i], $s_usable[$i], $s_idle[$i], $MaxNodes{$p}, $MaxTime{$p}, $s_feat[$i]); } else { - printf("%-9s %6dMb %5d %6s %6s %6s %-s\n", + printf("%-9s %6dMb %5s %6s %6s %6s %-s\n", $s_part[$i], $s_mem[$i], $s_cpu[$i], - $s_total[$i], - $s_total[$i] - $s_out[$i], + $s_total[$i], $s_usable[$i], $s_idle[$i], $s_feat[$i]); } } @@ -189,10 +218,10 @@ my $rval = system("scontrol show config | grep cons_res >> /dev/null"); if ($rval) { $type = "Nodes"; - $options = "\"%8i %8u %.6D %2t %.11S %.12l %.9P %.11M %1000R\""; + $options = "\"%8i %8u %.6D %2t %S %.12l %.9P %.11M %1000R\""; } else { $type = "Procs"; - $options = "\"%8i %8u %.6C %2t %.11S %.12l %.9P %.11M %1000R\""; + $options = "\"%8i %8u %.6C %2t %S %.12l %.9P %.11M %1000R\""; } # @@ -211,6 +240,8 @@ $s_user[$ct] = $line[1]; $s_nodes[$ct] = $line[2]; $s_status[$ct] = $line[3]; + $line[4] =~ s/^.....//; + $line[4] = "N/A" if ($line[3] =~ /PD/); $s_begin[$ct] = $line[4]; $s_limit[$ct] = $line[5]; if ($line[5] eq "UNLIMITED") { @@ -233,10 +264,10 @@ printf("Running job data:\n"); if ($verbose) { - printf("------------------------------------------------------------------------------------------------\n"); - printf(" Time Time Time \n"); - printf("JobID User $type Pool Status Used Limit Started Master/Other \n"); - printf("------------------------------------------------------------------------------------------------\n"); + printf("---------------------------------------------------------------------------------------------------\n"); + printf(" Time Time Time \n"); + printf("JobID User $type Pool Status Used Limit Started Master/Other \n"); + printf("---------------------------------------------------------------------------------------------------\n"); } else { printf("----------------------------------------------------------------------\n"); printf("JobID User $type Pool Status Used Master/Other \n"); @@ -245,7 +276,7 @@ for (my $i = 0; $i < $ct; $i++) { if ($verbose) { - printf("%-8s %-8s %6s %-9s %-7s %10s %11s %11s %.12s\n", + printf("%-8s %-8s %6s %-9s %-7s %10s %11s %14s %.12s\n", $s_job[$i], $s_user[$i], $s_nodes[$i], $s_pool[$i], $s_status[$i], $s_used[$i], $s_limit[$i], $s_begin[$i], @@ -277,13 +308,12 @@ foreach my $tmp (@scon) { chomp $tmp; my @line = split(' ',$tmp); - ($part) = ($tmp =~ m/PartitionName=(\S+)\s+/) if ($tmp =~ /PartitionName=/); + ($part) = ($tmp =~ m/PartitionName=(\S+)/) if ($tmp =~ /PartitionName=/); ($MaxTime{$part}) = ($tmp =~ m/MaxTime=(\S+)\s+/) if ($tmp =~ /MaxTime=/); ($MaxNodes{$part}) = ($tmp =~ m/MaxNodes=(\S+)\s+/) if ($tmp =~ /MaxNodes=/); $MaxTime{$part} =~ s/UNLIMITED/UNLIM/ if ($MaxTime{$part}); $MaxNodes{$part} =~ s/UNLIMITED/UNLIM/ if ($MaxNodes{$part}); - } return; @@ -380,12 +410,26 @@ } +# +# Determine if SLURM is available. +# +sub isslurmup +{ + my $out = `scontrol show part 2>&1`; + if ($?) { + printf("\n SLURM is not communicating.\n\n"); + exit(1); + } + + return; +} + __END__ =head1 NAME -B - List attributes of jobs under SLURM control +B - List attributes of jobs under the SLURM control =head1 SYNOPSIS @@ -393,7 +437,7 @@ =head1 DESCRIPTION -The B command is used to display statistics of jobs under control of SLURM. +The B command is used to display statistics of jobs under control of SLURM. The output is designed to give information on the resource usage and availablilty, as well as information about jobs that are currently active on the machine. This output is built using the SLURM utilities, sinfo, squeue and scontrol, the man pages for these @@ -462,7 +506,7 @@ The Running job data contains information pertaining to the: - JobID either the SLURM job id + JobID the SLURM job id User owner of the job Nodes nodes required, or in use by the job (Note: On cpu scheduled machines, this field @@ -495,10 +539,11 @@ pbatch* 15000Mb 8 1072 1070 174 UNLIM UNLIM (null) Running job data: - ---------------------------------------------------------------------------------------------- - JobID User Nodes Pool Status Used Limit Start Master/Other - ---------------------------------------------------------------------------------------------- - 395 sam 200 pbatch PD 0:00 30:00 N/A (JobHeld) + --------------------------------------------------------------------------------------------------- + Time Time Time + JobID User Nodes Pool Status Used Limit Started Master/Other + --------------------------------------------------------------------------------------------------- + 38562 tom 4 pbatch PD 0:00 1:00:00 01-14T18:11:22 (JobHeld) The added fields to the "Scheduling pool data" are: @@ -510,11 +555,8 @@ Limit Time limit of job. Start Start time of job. -=head1 AUTHOR - -Written by Philip D. Eckert - =head1 REPORTING BUGS Report bugs to +=cut diff -Nru slurm-llnl-2.2.7/contribs/slurmdb-direct/Makefile.in slurm-llnl-2.3.2/contribs/slurmdb-direct/Makefile.in --- slurm-llnl-2.2.7/contribs/slurmdb-direct/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/slurmdb-direct/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -64,6 +64,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -74,6 +75,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -118,7 +120,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -155,6 +160,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -212,6 +218,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -247,6 +254,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/time_login.c slurm-llnl-2.3.2/contribs/time_login.c --- slurm-llnl-2.2.7/contribs/time_login.c 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/time_login.c 2011-12-05 17:20:08.000000000 +0000 @@ -17,7 +17,7 @@ * CODE-OCEC-09-009. All rights reserved. * * This file is part of SLURM, a resource management program. - * For details, see . + * For details, see . * Please also read the included file: DISCLAIMER. * * SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/Makefile.in slurm-llnl-2.3.2/contribs/torque/Makefile.in --- slurm-llnl-2.2.7/contribs/torque/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -64,6 +64,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -74,6 +75,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -118,7 +120,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -155,6 +160,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -212,6 +218,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -247,6 +254,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/contribs/torque/mpiexec.pl slurm-llnl-2.3.2/contribs/torque/mpiexec.pl --- slurm-llnl-2.2.7/contribs/torque/mpiexec.pl 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/mpiexec.pl 2011-12-05 17:20:08.000000000 +0000 @@ -11,7 +11,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/pbsnodes.pl slurm-llnl-2.3.2/contribs/torque/pbsnodes.pl --- slurm-llnl-2.2.7/contribs/torque/pbsnodes.pl 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/pbsnodes.pl 2011-12-05 17:20:08.000000000 +0000 @@ -11,7 +11,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/qdel.pl slurm-llnl-2.3.2/contribs/torque/qdel.pl --- slurm-llnl-2.2.7/contribs/torque/qdel.pl 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/qdel.pl 2011-12-05 17:20:08.000000000 +0000 @@ -11,7 +11,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/qhold.pl slurm-llnl-2.3.2/contribs/torque/qhold.pl --- slurm-llnl-2.2.7/contribs/torque/qhold.pl 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/qhold.pl 2011-12-05 17:20:08.000000000 +0000 @@ -12,7 +12,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/qrls.pl slurm-llnl-2.3.2/contribs/torque/qrls.pl --- slurm-llnl-2.2.7/contribs/torque/qrls.pl 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/qrls.pl 2011-12-05 17:20:08.000000000 +0000 @@ -11,7 +11,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/qstat.pl slurm-llnl-2.3.2/contribs/torque/qstat.pl --- slurm-llnl-2.2.7/contribs/torque/qstat.pl 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/qstat.pl 2011-12-05 17:20:08.000000000 +0000 @@ -11,7 +11,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/contribs/torque/qsub.pl slurm-llnl-2.3.2/contribs/torque/qsub.pl --- slurm-llnl-2.2.7/contribs/torque/qsub.pl 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/torque/qsub.pl 2011-12-05 17:20:08.000000000 +0000 @@ -11,7 +11,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under @@ -186,7 +186,11 @@ $command .= " --tmp=$res_opts{file}" if $res_opts{file}; $command .= " --mem=$res_opts{mem}" if $res_opts{mem}; $command .= " --nice=$res_opts{nice}" if $res_opts{nice}; - +# Cray-specific options +$command .= " -n$res_opts{mppwidth}" if $res_opts{mppwidth}; +$command .= " -w$res_opts{mppnodes}" if $res_opts{mppnodes}; +$command .= " --cpus-per-task=$res_opts{mppdepth}" if $res_opts{mppdepth}; +$command .= " --ntasks-per-node=$res_opts{mppnppn}" if $res_opts{mppnppn}; $command .= " --begin=$start_time" if $start_time; $command .= " --account=$account" if $account; @@ -225,6 +229,12 @@ 'pvmem' => "", 'software' => "", 'vmem' => "", + # Cray-specific resources + 'mppwidth' => "", + 'mppdepth' => "", + 'mppnppn' => "", + 'mppmem' => "", + 'mppnodes' => "", 'walltime' => "" ); my @keys = keys(%opt); @@ -238,7 +248,9 @@ $opt{cput} = get_minutes($opt{cput}); } - if($opt{mem}) { + if($opt{mppmem}) { + $opt{mem} = convert_mb_format($opt{mppmem}); + } elsif($opt{mem}) { $opt{mem} = convert_mb_format($opt{mem}); } diff -Nru slurm-llnl-2.2.7/contribs/web_apps/chart_stats.cgi slurm-llnl-2.3.2/contribs/web_apps/chart_stats.cgi --- slurm-llnl-2.2.7/contribs/web_apps/chart_stats.cgi 2011-06-10 16:55:36.000000000 +0000 +++ slurm-llnl-2.3.2/contribs/web_apps/chart_stats.cgi 2011-12-05 17:20:08.000000000 +0000 @@ -15,7 +15,7 @@ # CODE-OCEC-09-009. All rights reserved. # # This file is part of SLURM, a resource management program. -# For details, see . +# For details, see . # Please also read the included file: DISCLAIMER. # # SLURM is free software; you can redistribute it and/or modify it under diff -Nru slurm-llnl-2.2.7/COPYING slurm-llnl-2.3.2/COPYING --- slurm-llnl-2.2.7/COPYING 2011-06-10 16:55:35.000000000 +0000 +++ slurm-llnl-2.3.2/COPYING 2011-12-05 17:20:08.000000000 +0000 @@ -45,7 +45,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -211,7 +211,7 @@ access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -268,7 +268,7 @@ This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -321,7 +321,7 @@ POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest diff -Nru slurm-llnl-2.2.7/debian/changelog slurm-llnl-2.3.2/debian/changelog --- slurm-llnl-2.2.7/debian/changelog 2011-12-03 04:22:18.000000000 +0000 +++ slurm-llnl-2.3.2/debian/changelog 2011-12-27 18:28:42.000000000 +0000 @@ -1,26 +1,11 @@ -slurm-llnl (2.2.7-2build3) precise; urgency=low +slurm-llnl (2.3.2-1) unstable; urgency=low - * No-change rebuild to drop spurious libsfgcc1 dependency on armhf. - - -- Adam Conrad Fri, 02 Dec 2011 21:22:18 -0700 - -slurm-llnl (2.2.7-2build2) precise; urgency=low - - * Rebuild for libmysqlclient transition - - -- Clint Byrum Thu, 24 Nov 2011 00:24:56 -0800 - -slurm-llnl (2.2.7-2build1) precise; urgency=low - - * Rebuild for Perl 5.14. - - -- Colin Watson Wed, 16 Nov 2011 14:03:45 +0000 - -slurm-llnl (2.2.7-2) unstable; urgency=low - - * Rebuild package against postgresql-server-dev-9.1 (Closes: #639480) + * New upstream release + * slurm-llnl-configurator.html updated + * libpam-slurm packages merged to slurm-llnl source + * libpam-slurm package new versioning following slurm-llnl - -- Gennaro Oliva Sat, 27 Aug 2011 19:19:03 +0200 + -- Gennaro Oliva Tue, 27 Dec 2011 19:27:46 +0100 slurm-llnl (2.2.7-1) unstable; urgency=low diff -Nru slurm-llnl-2.2.7/debian/clean slurm-llnl-2.3.2/debian/clean --- slurm-llnl-2.2.7/debian/clean 2011-05-06 09:47:17.000000000 +0000 +++ slurm-llnl-2.3.2/debian/clean 2011-10-27 08:25:32.000000000 +0000 @@ -13,3 +13,6 @@ src/plugins/accounting_storage/common/*.l[oa] src/plugins/accounting_storage/common/Makefile src/common/global_defaults.c +contribs/arrayrun/Makefile +contribs/cray/Makefile +contribs/lua/Makefile diff -Nru slurm-llnl-2.2.7/debian/control slurm-llnl-2.3.2/debian/control --- slurm-llnl-2.2.7/debian/control 2011-08-27 17:22:40.000000000 +0000 +++ slurm-llnl-2.3.2/debian/control 2011-11-25 13:24:47.000000000 +0000 @@ -2,8 +2,7 @@ Section: admin Priority: extra Maintainer: Gennaro Oliva -Uploaders: Dirk Eddelbuettel -Build-Depends: debhelper (>= 7.0.0), autotools-dev, libmunge-dev, libncurses5-dev, libssl-dev, po-debconf, python, libglade2-dev, libgtk2.0-dev, libmysqlclient-dev, postgresql-server-dev-9.1, libpam0g-dev, libperl-dev, chrpath +Build-Depends: debhelper (>= 7.0.0), autotools-dev, libmunge-dev, libncurses5-dev, libssl-dev, po-debconf, python, libglade2-dev, libgtk2.0-dev, libmysqlclient-dev, postgresql-server-dev-8.4, libpam0g-dev, libperl-dev, chrpath, libpam0g-dev Standards-Version: 3.9.2 Homepage: https://computing.llnl.gov/linux/slurm/ @@ -16,7 +15,7 @@ that strives to be simple, scalable, portable, fault-tolerant, and interconnect agnostic. -Package: libslurmdb22 +Package: libslurmdb23 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -25,7 +24,7 @@ is an open-source cluster resource management and job scheduling. This package contains the SLURM DataBase Daemon runtime library. -Package: libslurm22 +Package: libslurm23 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -46,7 +45,7 @@ Package: libslurm-dev Section: libdevel Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libslurm22 (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, libslurm23 (= ${binary:Version}) Conflicts: libslurm10-dev, libslurm11-dev, libslurm12-dev, libslurm13-dev, libslurm20-dev, libslurm21-dev Replaces: libslurm10-dev, libslurm11-dev, libslurm12-dev, libslurm13-dev, libslurm20-dev, libslurm21-dev Description: SLURM development files @@ -57,7 +56,7 @@ Package: libslurmdb-dev Section: libdevel Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libslurmdb22 (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, libslurmdb23 (= ${binary:Version}) Description: SLURM DataBase Daemon development files SLURM, the Simple Linux Utility for Resource Management, is an open-source cluster resource management and job scheduling. @@ -66,7 +65,7 @@ Package: libpmi0-dev Section: libdevel Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libpmi0 (= ${binary:Version}), libslurm22 (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, libpmi0 (= ${binary:Version}), libslurm23 (= ${binary:Version}) Description: SLURM PMI library implementation development files SLURM, the Simple Linux Utility for Resource Management, is an open-source cluster resource management and job scheduling. @@ -150,3 +149,12 @@ . This package contains the Torque compatibility wrappers. +Package: libpam-slurm +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: PAM module to authenticate using the SLURM resource manager + Pluggable Authentication Module (PAM) for restricting access to compute + nodes where SLURM performs resource management. Access to the node is + restricted to user root and users who have been allocated resources on + that node. + diff -Nru slurm-llnl-2.2.7/debian/libpam-slurm.docs slurm-llnl-2.3.2/debian/libpam-slurm.docs --- slurm-llnl-2.2.7/debian/libpam-slurm.docs 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/debian/libpam-slurm.docs 2011-11-28 13:03:46.000000000 +0000 @@ -0,0 +1 @@ +contribs/pam/README diff -Nru slurm-llnl-2.2.7/debian/libslurm22.symbols slurm-llnl-2.3.2/debian/libslurm22.symbols --- slurm-llnl-2.2.7/debian/libslurm22.symbols 2011-04-04 13:39:29.000000000 +0000 +++ slurm-llnl-2.3.2/debian/libslurm22.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,698 +0,0 @@ -libslurm.so.22 libslurm22 #MINVER# - islurm_get_rem_time2__@Base 1.3.8 - islurm_get_rem_time__@Base 1.3.8 - slurm_accept_msg_conn@Base 1.3.8 - slurm_accept_stream@Base 1.3.8 - slurm_accounting_enforce_string@Base 2.2.0 - slurm_acct_storage_fini@Base 1.3.8 - slurm_acct_storage_init@Base 1.3.8 - slurm_add_slash_to_quotes@Base 2.2.0 - slurm_addto_char_list@Base 1.3.8 - slurm_allocate_resources@Base 1.3.8 - slurm_allocate_resources_blocking@Base 1.3.8 - slurm_allocation_lookup@Base 1.3.8 - slurm_allocation_lookup_lite@Base 1.3.8 - slurm_allocation_msg_thr_create@Base 1.3.8 - slurm_allocation_msg_thr_destroy@Base 1.3.8 - slurm_api_clear_config@Base 1.3.8 - slurm_api_set_conf_file@Base 1.3.8 - slurm_api_set_default_config@Base 1.3.8 - slurm_api_version@Base 1.3.8 - slurm_arg_count@Base 1.3.8 - slurm_arg_idx_by_name@Base 1.3.8 - slurm_arg_name_by_idx@Base 1.3.8 - slurm_auth_context_create@Base 1.3.8 - slurm_auth_fini@Base 1.3.8 - slurm_auth_get_arg_desc@Base 1.3.8 - slurm_auth_init@Base 1.3.8 - slurm_bg_block_state_string@Base 2.2.0 - slurm_bit_alloc@Base 1.3.8 - slurm_bit_and@Base 1.3.8 - slurm_bit_clear@Base 1.3.8 - slurm_bit_clear_count@Base 1.3.8 - slurm_bit_copy@Base 1.3.8 - slurm_bit_copybits@Base 1.3.8 - slurm_bit_equal@Base 1.3.8 - slurm_bit_ffc@Base 1.3.8 - slurm_bit_ffs@Base 1.3.8 - slurm_bit_fill_gaps@Base 1.3.8 - slurm_bit_fls@Base 1.3.8 - slurm_bit_fmt@Base 1.3.8 - slurm_bit_fmt_binmask@Base 1.3.8 - slurm_bit_fmt_hexmask@Base 1.3.8 - slurm_bit_free@Base 1.3.8 - slurm_bit_get_bit_num@Base 1.3.8 - slurm_bit_get_pos_num@Base 1.3.8 - slurm_bit_nclear@Base 1.3.8 - slurm_bit_nffc@Base 1.3.8 - slurm_bit_nffs@Base 1.3.8 - slurm_bit_noc@Base 1.3.8 - slurm_bit_not@Base 1.3.8 - slurm_bit_nset@Base 1.3.8 - slurm_bit_nset_max_count@Base 1.3.8 - slurm_bit_or@Base 1.3.8 - slurm_bit_overlap@Base 1.3.8 - slurm_bit_pick_cnt@Base 1.3.8 - slurm_bit_realloc@Base 1.3.8 - slurm_bit_rotate@Base 1.3.8 - slurm_bit_rotate_copy@Base 1.3.8 - slurm_bit_set@Base 1.3.8 - slurm_bit_set_count@Base 1.3.8 - slurm_bit_size@Base 1.3.8 - slurm_bit_super_set@Base 1.3.8 - slurm_bit_test@Base 1.3.8 - slurm_bit_unfmt@Base 1.3.8 - slurm_bit_unfmt_binmask@Base 1.3.8 - slurm_bit_unfmt_hexmask@Base 1.3.8 - slurm_bitfmt2int@Base 1.3.8 - slurm_checkpoint_able@Base 1.3.8 - slurm_checkpoint_complete@Base 1.3.8 - slurm_checkpoint_create@Base 1.3.8 - slurm_checkpoint_disable@Base 1.3.8 - slurm_checkpoint_enable@Base 1.3.8 - slurm_checkpoint_error@Base 1.3.8 - slurm_checkpoint_requeue@Base 2.2.0 - slurm_checkpoint_restart@Base 1.3.8 - slurm_checkpoint_task_complete@Base 1.3.8 - slurm_checkpoint_tasks@Base 2.0.0 - slurm_checkpoint_vacate@Base 1.3.8 - slurm_clear_trigger@Base 1.3.8 - slurm_close_accepted_conn@Base 1.3.8 - slurm_close_slurmdbd_conn@Base 1.3.8 - slurm_close_stream@Base 1.3.8 - slurm_complete_job@Base 1.3.8 - slurm_conf_destroy@Base 1.3.8 - slurm_conf_downnodes_array@Base 1.3.8 - slurm_conf_expand_slurmd_path@Base 1.3.8 - slurm_conf_get_addr@Base 1.3.8 - slurm_conf_get_aliased_nodename@Base 1.3.8 - slurm_conf_get_aliases@Base 2.2.3 - slurm_conf_get_cpus_sct@Base 1.3.8 - slurm_conf_get_hostname@Base 1.3.8 - slurm_conf_get_nodeaddr@Base 2.0.0 - slurm_conf_get_nodename@Base 1.3.8 - slurm_conf_get_port@Base 1.3.8 - slurm_conf_init@Base 1.3.8 - slurm_conf_install_fork_handlers@Base 1.3.8 - slurm_conf_lock@Base 1.3.8 - slurm_conf_mutex_init@Base 1.3.8 - slurm_conf_nodename_array@Base 1.3.8 - slurm_conf_options@Base 1.3.8 - slurm_conf_partition_array@Base 1.3.8 - slurm_conf_reinit@Base 1.3.8 - slurm_conf_unlock@Base 1.3.8 - slurm_conn_type_string@Base 2.2.0 - slurm_create_buf@Base 1.3.8 - slurm_create_partition@Base 2.0.0 - slurm_create_reservation@Base 2.0.0 - slurm_cred_begin_expiration@Base 1.3.8 - slurm_cred_copy@Base 1.3.8 - slurm_cred_create@Base 1.3.8 - slurm_cred_creator_ctx_create@Base 1.3.8 - slurm_cred_ctx_destroy@Base 1.3.8 - slurm_cred_ctx_get@Base 1.3.8 - slurm_cred_ctx_key_update@Base 1.3.8 - slurm_cred_ctx_pack@Base 1.3.8 - slurm_cred_ctx_set@Base 1.3.8 - slurm_cred_ctx_unpack@Base 1.3.8 - slurm_cred_destroy@Base 1.3.8 - slurm_cred_faker@Base 1.3.8 - slurm_cred_free_args@Base 1.3.8 - slurm_cred_get_args@Base 1.3.8 - slurm_cred_get_signature@Base 1.3.8 - slurm_cred_handle_reissue@Base 1.3.8 - slurm_cred_insert_jobid@Base 1.3.8 - slurm_cred_jobid_cached@Base 1.3.8 - slurm_cred_pack@Base 1.3.8 - slurm_cred_print@Base 1.3.8 - slurm_cred_revoke@Base 1.3.8 - slurm_cred_revoked@Base 1.3.8 - slurm_cred_rewind@Base 1.3.8 - slurm_cred_unpack@Base 1.3.8 - slurm_cred_verifier_ctx_create@Base 1.3.8 - slurm_cred_verify@Base 1.3.8 - slurm_crypto_fini@Base 1.3.8 - slurm_ctl_conf_2_key_pairs@Base 2.1.0 - slurm_debug2@Base 1.3.8 - slurm_debug3@Base 1.3.8 - slurm_debug4@Base 2.2.0 - slurm_debug5@Base 2.2.0 - slurm_debug@Base 1.3.8 - slurm_delete_partition@Base 1.3.8 - slurm_delete_reservation@Base 2.0.0 - slurm_destroy_association_shares_object@Base 2.0.0 - slurm_destroy_char@Base 1.3.8 - slurm_destroy_config_key_pair@Base 2.1.0 - slurm_destroy_priority_factors_object@Base 2.0.0 - slurm_destroy_uint32_ptr@Base 2.0.0 - slurm_dump_cleanup_list@Base 1.3.8 - slurm_env_array_append@Base 1.3.8 - slurm_env_array_append_fmt@Base 1.3.8 - slurm_env_array_copy@Base 1.3.8 - slurm_env_array_create@Base 1.3.8 - slurm_env_array_free@Base 1.3.8 - slurm_env_array_merge@Base 1.3.8 - slurm_env_array_overwrite@Base 1.3.8 - slurm_env_array_overwrite_fmt@Base 1.3.8 - slurm_error@Base 1.3.8 - slurm_fatal@Base 1.3.8 - slurm_fatal_add_cleanup@Base 1.3.8 - slurm_fatal_add_cleanup_job@Base 1.3.8 - slurm_fatal_cleanup@Base 1.3.8 - slurm_fatal_remove_cleanup@Base 1.3.8 - slurm_fatal_remove_cleanup_job@Base 1.3.8 - slurm_fd_read_n@Base 1.3.8 - slurm_fd_set_blocking@Base 1.3.8 - slurm_fd_set_nonblocking@Base 1.3.8 - slurm_fd_write_n@Base 1.3.8 - slurm_free_accounting_update_msg@Base 1.3.8 - slurm_free_block_info@Base 2.2.0 - slurm_free_block_info_members@Base 2.2.0 - slurm_free_block_info_msg@Base 2.1.0 - slurm_free_block_info_request_msg@Base 2.1.0 - slurm_free_buf@Base 1.3.8 - slurm_free_checkpoint_comp_msg@Base 1.3.8 - slurm_free_checkpoint_msg@Base 1.3.8 - slurm_free_checkpoint_resp_msg@Base 1.3.8 - slurm_free_checkpoint_task_comp_msg@Base 1.3.8 - slurm_free_checkpoint_tasks_msg@Base 1.3.8 - slurm_free_complete_batch_script_msg@Base 1.3.8 - slurm_free_complete_job_allocation_msg@Base 1.3.8 - slurm_free_ctl_conf@Base 1.3.8 - slurm_free_delete_part_msg@Base 1.3.8 - slurm_free_epilog_complete_msg@Base 1.3.8 - slurm_free_file_bcast_msg@Base 1.3.8 - slurm_free_get_kvs_msg@Base 1.3.8 - slurm_free_job_alloc_info_msg@Base 1.3.8 - slurm_free_job_alloc_info_response_msg@Base 1.3.8 - slurm_free_job_desc_msg@Base 1.3.8 - slurm_free_job_id_msg@Base 1.3.8 - slurm_free_job_id_request_msg@Base 1.3.8 - slurm_free_job_id_response_msg@Base 1.3.8 - slurm_free_job_info@Base 1.3.8 - slurm_free_job_info_members@Base 1.3.8 - slurm_free_job_info_msg@Base 1.3.8 - slurm_free_job_info_request_msg@Base 1.3.8 - slurm_free_job_launch_msg@Base 1.3.8 - slurm_free_job_notify_msg@Base 1.3.8 - slurm_free_job_step_create_request_msg@Base 1.3.8 - slurm_free_job_step_create_response_msg@Base 1.3.8 - slurm_free_job_step_id_msg@Base 1.3.8 - slurm_free_job_step_info_members@Base 2.2.0 - slurm_free_job_step_info_request_msg@Base 1.3.8 - slurm_free_job_step_info_response_msg@Base 1.3.8 - slurm_free_job_step_kill_msg@Base 1.3.8 - slurm_free_job_step_pids@Base 2.2.0 - slurm_free_job_step_stat@Base 2.2.0 - slurm_free_kill_job_msg@Base 1.3.8 - slurm_free_kill_tasks_msg@Base 1.3.8 - slurm_free_kvs_comm_set@Base 1.3.8 - slurm_free_last_update_msg@Base 1.3.8 - slurm_free_launch_tasks_request_msg@Base 1.3.8 - slurm_free_launch_tasks_response_msg@Base 1.3.8 - slurm_free_msg@Base 1.3.8 - slurm_free_msg_data@Base 1.3.8 - slurm_free_node_info_members@Base 2.2.0 - slurm_free_node_info_msg@Base 1.3.8 - slurm_free_node_info_request_msg@Base 1.3.8 - slurm_free_node_registration_status_msg@Base 1.3.8 - slurm_free_part_info_request_msg@Base 1.3.8 - slurm_free_partition_info_members@Base 2.2.0 - slurm_free_partition_info_msg@Base 1.3.8 - slurm_free_priority_factors_request_msg@Base 2.0.0 - slurm_free_priority_factors_response_msg@Base 2.0.0 - slurm_free_reattach_tasks_request_msg@Base 1.3.8 - slurm_free_reattach_tasks_response_msg@Base 1.3.8 - slurm_free_reservation_info_msg@Base 2.0.0 - slurm_free_reserve_info_members@Base 2.2.0 - slurm_free_resource_allocation_response_msg@Base 1.3.8 - slurm_free_resv_desc_msg@Base 2.0.0 - slurm_free_resv_info_request_msg@Base 2.0.0 - slurm_free_resv_name_msg@Base 2.0.0 - slurm_free_return_code_msg@Base 1.3.8 - slurm_free_sbcast_cred_msg@Base 2.1.0 - slurm_free_set_debug_level_msg@Base 1.3.8 - slurm_free_shares_request_msg@Base 2.0.0 - slurm_free_shares_response_msg@Base 2.0.0 - slurm_free_shutdown_msg@Base 1.3.8 - slurm_free_signal_job_msg@Base 1.3.8 - slurm_free_slurmd_status@Base 1.3.8 - slurm_free_srun_exec_msg@Base 1.3.8 - slurm_free_srun_job_complete_msg@Base 1.3.8 - slurm_free_srun_node_fail_msg@Base 1.3.8 - slurm_free_srun_ping_msg@Base 1.3.8 - slurm_free_srun_step_missing_msg@Base 2.0.0 - slurm_free_srun_timeout_msg@Base 1.3.8 - slurm_free_srun_user_msg@Base 1.3.8 - slurm_free_step_complete_msg@Base 1.3.8 - slurm_free_submit_response_response_msg@Base 1.3.8 - slurm_free_suspend_msg@Base 1.3.8 - slurm_free_task_exit_msg@Base 1.3.8 - slurm_free_task_user_managed_io_stream_msg@Base 1.3.8 - slurm_free_topo_info_msg@Base 2.0.0 - slurm_free_trigger_msg@Base 1.3.8 - slurm_free_update_job_time_msg@Base 1.3.8 - slurm_free_update_node_msg@Base 1.3.8 - slurm_free_update_part_msg@Base 1.3.8 - slurm_free_update_step_msg@Base 2.2.0 - slurm_free_will_run_response_msg@Base 1.3.8 - slurm_get_accounting_storage_backup_host@Base 2.0.0 - slurm_get_accounting_storage_enforce@Base 1.3.8 - slurm_get_accounting_storage_host@Base 1.3.8 - slurm_get_accounting_storage_loc@Base 1.3.8 - slurm_get_accounting_storage_pass@Base 1.3.8 - slurm_get_accounting_storage_port@Base 1.3.8 - slurm_get_accounting_storage_type@Base 1.3.8 - slurm_get_accounting_storage_user@Base 1.3.8 - slurm_get_addr@Base 1.3.8 - slurm_get_api_config@Base 1.3.8 - slurm_get_auth_type@Base 1.3.8 - slurm_get_avail_procs@Base 1.3.8 - slurm_get_batch_start_timeout@Base 1.3.12 - slurm_get_checkpoint_type@Base 1.3.8 - slurm_get_cluster_name@Base 1.3.8 - slurm_get_complete_wait@Base 2.0.0 - slurm_get_controller_addr_spec@Base 1.3.8 - slurm_get_crypto_type@Base 1.3.8 - slurm_get_debug_flags@Base 2.0.0 - slurm_get_def_mem_per_cpu@Base 2.1.0 - slurm_get_end_time@Base 1.3.8 - slurm_get_env_timeout@Base 1.3.8 - slurm_get_epilog_msg_time@Base 1.3.8 - slurm_get_errno@Base 1.3.8 - slurm_get_fast_schedule@Base 1.3.8 - slurm_get_gres_plugins@Base 2.2.0 - slurm_get_hash_val@Base 2.2.0 - slurm_get_health_check_program@Base 1.3.8 - slurm_get_ip_str@Base 1.3.8 - slurm_get_is_association_based_accounting@Base 1.3.9 - slurm_get_job_steps@Base 1.3.8 - slurm_get_job_submit_plugins@Base 2.2.0 - slurm_get_jobacct_gather_freq@Base 1.3.8 - slurm_get_jobacct_gather_type@Base 1.3.8 - slurm_get_jobcomp_host@Base 1.3.8 - slurm_get_jobcomp_loc@Base 1.3.8 - slurm_get_jobcomp_pass@Base 1.3.8 - slurm_get_jobcomp_port@Base 1.3.8 - slurm_get_jobcomp_type@Base 1.3.8 - slurm_get_jobcomp_user@Base 1.3.8 - slurm_get_kill_on_bad_exit@Base 2.0.0 - slurm_get_kvs_comm_set@Base 1.3.8 - slurm_get_max_mem_per_cpu@Base 2.1.0 - slurm_get_mpi_default@Base 1.3.8 - slurm_get_mpi_params@Base 2.0.0 - slurm_get_msg_timeout@Base 1.3.8 - slurm_get_peer_addr@Base 1.3.8 - slurm_get_plugin_dir@Base 1.3.8 - slurm_get_preempt_mode@Base 2.1.0 - slurm_get_preempt_type@Base 2.1.0 - slurm_get_priority_calc_period@Base 2.1.0 - slurm_get_priority_decay_hl@Base 2.0.0 - slurm_get_priority_favor_small@Base 2.0.0 - slurm_get_priority_max_age@Base 2.0.0 - slurm_get_priority_reset_period@Base 2.0.0 - slurm_get_priority_type@Base 2.0.0 - slurm_get_priority_weight_age@Base 2.0.0 - slurm_get_priority_weight_fairshare@Base 2.0.0 - slurm_get_priority_weight_job_size@Base 2.0.0 - slurm_get_priority_weight_partition@Base 2.0.0 - slurm_get_priority_weight_qos@Base 2.0.0 - slurm_get_private_data@Base 1.3.8 - slurm_get_proctrack_type@Base 1.3.8 - slurm_get_propagate_prio_process@Base 1.3.8 - slurm_get_rem_time@Base 1.3.8 - slurm_get_resume_timeout@Base 2.0.0 - slurm_get_return_code@Base 1.3.8 - slurm_get_root_filter@Base 1.3.8 - slurm_get_sched_params@Base 2.0.0 - slurm_get_sched_port@Base 1.3.8 - slurm_get_sched_type@Base 1.3.8 - slurm_get_select_jobinfo@Base 1.3.8 - slurm_get_select_nodeinfo@Base 2.1.0 - slurm_get_select_type@Base 1.3.8 - slurm_get_slurm_user_id@Base 1.3.8 - slurm_get_slurmd_port@Base 1.3.8 - slurm_get_slurmd_user_id@Base 2.0.0 - slurm_get_srun_epilog@Base 1.3.8 - slurm_get_srun_prolog@Base 1.3.8 - slurm_get_state_save_location@Base 1.3.8 - slurm_get_stream_addr@Base 1.3.8 - slurm_get_suspend_time@Base 2.1.0 - slurm_get_suspend_timeout@Base 2.2.0 - slurm_get_switch_type@Base 1.3.8 - slurm_get_task_epilog@Base 1.3.8 - slurm_get_task_plugin@Base 1.3.8 - slurm_get_task_plugin_param@Base 1.3.8 - slurm_get_task_prolog@Base 1.3.8 - slurm_get_topology_plugin@Base 2.0.0 - slurm_get_track_wckey@Base 1.3.12 - slurm_get_tree_width@Base 1.3.8 - slurm_get_triggers@Base 1.3.8 - slurm_get_vsize_factor@Base 2.2.0 - slurm_get_wait_time@Base 1.3.8 - slurm_getenvp@Base 1.3.8 - slurm_grow_buf@Base 1.3.8 - slurm_hostlist_copy@Base 1.3.8 - slurm_hostlist_count@Base 1.3.8 - slurm_hostlist_create@Base 1.3.8 - slurm_hostlist_delete@Base 1.3.8 - slurm_hostlist_delete_host@Base 1.3.8 - slurm_hostlist_delete_nth@Base 1.3.8 - slurm_hostlist_deranged_string@Base 1.3.8 - slurm_hostlist_deranged_string_malloc@Base 2.2.0 - slurm_hostlist_deranged_string_xmalloc@Base 2.2.0 - slurm_hostlist_destroy@Base 1.3.8 - slurm_hostlist_find@Base 1.3.8 - slurm_hostlist_iterator_create@Base 1.3.8 - slurm_hostlist_iterator_destroy@Base 1.3.8 - slurm_hostlist_iterator_reset@Base 1.3.8 - slurm_hostlist_next@Base 1.3.8 - slurm_hostlist_next_range@Base 1.3.8 - slurm_hostlist_nth@Base 1.3.8 - slurm_hostlist_pop@Base 1.3.8 - slurm_hostlist_pop_range@Base 1.3.8 - slurm_hostlist_push@Base 1.3.8 - slurm_hostlist_push_host@Base 1.3.8 - slurm_hostlist_push_list@Base 1.3.8 - slurm_hostlist_ranged_string@Base 1.3.8 - slurm_hostlist_ranged_string_malloc@Base 2.2.0 - slurm_hostlist_ranged_string_xmalloc@Base 2.2.0 - slurm_hostlist_remove@Base 1.3.8 - slurm_hostlist_shift@Base 1.3.8 - slurm_hostlist_shift_range@Base 1.3.8 - slurm_hostlist_soft@Base 1.3.8 - slurm_hostlist_uniq@Base 1.3.8 - slurm_hostset_copy@Base 1.3.8 - slurm_hostset_count@Base 1.3.8 - slurm_hostset_create@Base 1.3.8 - slurm_hostset_delete@Base 1.3.8 - slurm_hostset_destroy@Base 1.3.8 - slurm_hostset_find@Base 1.3.8 - slurm_hostset_insert@Base 1.3.8 - slurm_hostset_nth@Base 1.3.8 - slurm_hostset_shift@Base 1.3.8 - slurm_hostset_shift_range@Base 1.3.8 - slurm_hostset_within@Base 1.3.8 - slurm_info@Base 1.3.8 - slurm_init_buf@Base 1.3.8 - slurm_init_job_desc_msg@Base 1.3.8 - slurm_init_msg_engine@Base 1.3.8 - slurm_init_msg_engine_addrname_port@Base 2.0.0 - slurm_init_msg_engine_port@Base 1.3.8 - slurm_init_part_desc_msg@Base 1.3.8 - slurm_init_resv_desc_msg@Base 2.0.0 - slurm_init_update_block_msg@Base 2.1.0 - slurm_init_update_node_msg@Base 2.0.0 - slurm_init_update_step_msg@Base 2.2.0 - slurm_int_and_set_count@Base 1.3.8 - slurm_job_cpus_allocated_on_node@Base 2.1.0 - slurm_job_cpus_allocated_on_node_id@Base 2.1.0 - slurm_job_node_ready@Base 1.3.8 - slurm_job_reason_string@Base 2.2.0 - slurm_job_state_num@Base 2.2.0 - slurm_job_state_string@Base 2.2.0 - slurm_job_state_string_compact@Base 2.2.0 - slurm_job_step_create@Base 1.3.8 - slurm_job_step_get_pids@Base 2.2.0 - slurm_job_step_layout_free@Base 1.3.8 - slurm_job_step_layout_get@Base 1.3.8 - slurm_job_step_pids_free@Base 2.2.0 - slurm_job_step_pids_response_msg_free@Base 2.2.0 - slurm_job_step_stat@Base 2.2.0 - slurm_job_step_stat_free@Base 2.2.0 - slurm_job_step_stat_response_msg_free@Base 2.2.0 - slurm_job_will_run@Base 1.3.8 - slurm_jobacct_common_alloc_jobacct@Base 2.2.0 - slurm_jobacct_common_free_jobacct@Base 2.2.0 - slurm_jobacct_common_pack@Base 2.2.0 - slurm_jobacct_common_unpack@Base 2.2.0 - slurm_jobacct_gather_fini@Base 1.3.8 - slurm_jobacct_gather_init@Base 1.3.8 - slurm_jobinfo_ctx_get@Base 1.3.8 - slurm_kill_job@Base 1.3.8 - slurm_kill_job_step@Base 1.3.8 - slurm_list_append@Base 1.3.8 - slurm_list_append_list@Base 1.3.8 - slurm_list_count@Base 1.3.8 - slurm_list_create@Base 1.3.8 - slurm_list_delete_all@Base 1.3.8 - slurm_list_delete_item@Base 1.3.8 - slurm_list_dequeue@Base 1.3.8 - slurm_list_destroy@Base 1.3.8 - slurm_list_enqueue@Base 1.3.8 - slurm_list_find@Base 1.3.8 - slurm_list_find_first@Base 1.3.8 - slurm_list_flush@Base 2.2.0 - slurm_list_for_each@Base 1.3.8 - slurm_list_insert@Base 1.3.8 - slurm_list_install_fork_handlers@Base 1.3.8 - slurm_list_is_empty@Base 1.3.8 - slurm_list_iterator_create@Base 1.3.8 - slurm_list_iterator_destroy@Base 1.3.8 - slurm_list_iterator_reset@Base 1.3.8 - slurm_list_next@Base 1.3.8 - slurm_list_peek@Base 1.3.8 - slurm_list_pop@Base 1.3.8 - slurm_list_prepend@Base 1.3.8 - slurm_list_push@Base 1.3.8 - slurm_list_remove@Base 1.3.8 - slurm_list_sort@Base 1.3.8 - slurm_list_transfer@Base 1.3.8 - slurm_listen_stream@Base 1.3.8 - slurm_load_block_info@Base 2.1.0 - slurm_load_ctl_conf@Base 1.3.8 - slurm_load_job@Base 1.3.8 - slurm_load_jobs@Base 1.3.8 - slurm_load_node@Base 1.3.8 - slurm_load_partitions@Base 1.3.8 - slurm_load_reservations@Base 2.0.0 - slurm_load_slurmd_status@Base 1.3.8 - slurm_load_topo@Base 2.0.0 - slurm_log_alter@Base 1.3.8 - slurm_log_fini@Base 1.3.8 - slurm_log_flush@Base 1.3.8 - slurm_log_fp@Base 1.3.8 - slurm_log_has_data@Base 1.3.8 - slurm_log_init@Base 1.3.8 - slurm_log_reinit@Base 1.3.8 - slurm_log_set_fpfx@Base 1.3.8 - slurm_make_time_str@Base 1.3.8 - slurm_msg_t_copy@Base 1.3.8 - slurm_msg_t_init@Base 1.3.8 - slurm_net_accept_stream@Base 1.3.8 - slurm_net_set_low_water@Base 1.3.8 - slurm_net_stream_listen@Base 1.3.8 - slurm_node_state_string@Base 2.2.0 - slurm_node_state_string_compact@Base 2.2.0 - slurm_node_use_string@Base 2.2.0 - slurm_notify_job@Base 1.3.8 - slurm_open_controller_conn@Base 1.3.8 - slurm_open_controller_conn_spec@Base 1.3.8 - slurm_open_msg_conn@Base 1.3.8 - slurm_open_slurmdbd_conn@Base 1.3.8 - slurm_open_stream@Base 1.3.8 - slurm_pack16@Base 1.3.8 - slurm_pack16_array@Base 1.3.8 - slurm_pack32@Base 1.3.8 - slurm_pack32_array@Base 1.3.8 - slurm_pack64@Base 1.3.8 - slurm_pack8@Base 1.3.8 - slurm_pack_msg_no_header@Base 1.3.8 - slurm_pack_slurm_addr@Base 1.3.8 - slurm_pack_slurm_addr_array@Base 1.3.8 - slurm_pack_time@Base 1.3.8 - slurm_packmem@Base 1.3.8 - slurm_packmem_array@Base 1.3.8 - slurm_packstr_array@Base 1.3.8 - slurm_parser@Base 1.3.8 - slurm_perror@Base 1.3.8 - slurm_pid2jobid@Base 1.3.8 - slurm_ping@Base 1.3.8 - slurm_plugin_get_syms@Base 2.2.0 - slurm_plugin_load_and_link@Base 2.2.0 - slurm_plugin_strerror@Base 2.2.0 - slurm_plugin_unload@Base 2.2.0 - slurm_plugrack_create@Base 2.2.0 - slurm_plugrack_destroy@Base 2.2.0 - slurm_plugrack_read_dir@Base 2.2.0 - slurm_plugrack_set_major_type@Base 2.2.0 - slurm_plugrack_set_paranoia@Base 2.2.0 - slurm_plugrack_use_by_type@Base 2.2.0 - slurm_pmi_finalize@Base 1.3.8 - slurm_preempt_mode_num@Base 2.2.0 - slurm_preempt_mode_string@Base 2.2.0 - slurm_print_block_info@Base 2.1.0 - slurm_print_block_info_msg@Base 2.1.0 - slurm_print_cpu_bind_help@Base 2.0.0 - slurm_print_ctl_conf@Base 1.3.8 - slurm_print_job_info@Base 1.3.8 - slurm_print_job_info_msg@Base 1.3.8 - slurm_print_job_step_info@Base 1.3.8 - slurm_print_job_step_info_msg@Base 1.3.8 - slurm_print_key_pairs@Base 2.0.0 - slurm_print_launch_task_msg@Base 1.3.8 - slurm_print_mem_bind_help@Base 2.0.0 - slurm_print_node_info_msg@Base 1.3.8 - slurm_print_node_table@Base 1.3.8 - slurm_print_partition_info@Base 1.3.8 - slurm_print_partition_info_msg@Base 1.3.8 - slurm_print_reservation_info@Base 2.0.0 - slurm_print_reservation_info_msg@Base 2.0.0 - slurm_print_slurm_addr@Base 1.3.8 - slurm_print_slurmd_status@Base 1.3.8 - slurm_print_topo_info_msg@Base 2.0.0 - slurm_print_topo_record@Base 2.0.0 - slurm_priority_fini@Base 2.0.0 - slurm_priority_init@Base 2.0.0 - slurm_private_data_string@Base 2.2.0 - slurm_pull_trigger@Base 2.2.0 - slurm_read_hostfile@Base 1.3.8 - slurm_read_stream@Base 1.3.8 - slurm_read_stream_timeout@Base 1.3.8 - slurm_receive_msg@Base 1.3.8 - slurm_receive_msg_and_forward@Base 1.3.8 - slurm_receive_msgs@Base 1.3.8 - slurm_reconfigure@Base 1.3.8 - slurm_requeue@Base 1.3.8 - slurm_reservation_flags_string@Base 2.2.0 - slurm_resume@Base 1.3.8 - slurm_sbcast_lookup@Base 2.1.0 - slurm_select_fini@Base 1.3.8 - slurm_select_init@Base 1.3.8 - slurm_send_addr_recv_msgs@Base 1.3.8 - slurm_send_kvs_comm_set@Base 1.3.8 - slurm_send_node_msg@Base 1.3.8 - slurm_send_only_controller_msg@Base 1.3.8 - slurm_send_only_node_msg@Base 1.3.8 - slurm_send_rc_msg@Base 1.3.8 - slurm_send_recv_controller_msg@Base 1.3.8 - slurm_send_recv_controller_rc_msg@Base 1.3.8 - slurm_send_recv_msgs@Base 1.3.8 - slurm_send_recv_node_msg@Base 1.3.8 - slurm_send_recv_rc_msg_only_one@Base 1.3.8 - slurm_send_recv_slurmdbd_msg@Base 1.3.8 - slurm_send_slurmdbd_msg@Base 1.3.8 - slurm_send_slurmdbd_recv_rc_msg@Base 1.3.8 - slurm_set_accounting_storage_host@Base 2.0.2 - slurm_set_accounting_storage_loc@Base 1.3.8 - slurm_set_accounting_storage_port@Base 1.3.11 - slurm_set_accounting_storage_user@Base 2.0.2 - slurm_set_addr@Base 1.3.8 - slurm_set_addr_any@Base 1.3.8 - slurm_set_addr_char@Base 1.3.8 - slurm_set_addr_uint@Base 1.3.8 - slurm_set_api_config@Base 1.3.8 - slurm_set_auth_type@Base 1.3.8 - slurm_set_debug_level@Base 1.3.8 - slurm_set_jobcomp_port@Base 1.3.11 - slurm_set_schedlog_level@Base 2.2.0 - slurm_set_stream_blocking@Base 1.3.8 - slurm_set_stream_non_blocking@Base 1.3.8 - slurm_set_tree_width@Base 1.3.8 - slurm_set_trigger@Base 1.3.8 - slurm_setenvpf@Base 1.3.8 - slurm_seterrno@Base 1.3.8 - slurm_shutdown@Base 1.3.8 - slurm_shutdown_msg_conn@Base 1.3.8 - slurm_shutdown_msg_engine@Base 1.3.8 - slurm_signal_job@Base 1.3.8 - slurm_signal_job_step@Base 1.3.8 - slurm_sort_char_list_asc@Base 1.3.9 - slurm_sort_char_list_desc@Base 1.3.9 - slurm_sort_key_pairs@Base 2.1.0 - slurm_sprint_block_info@Base 2.1.0 - slurm_sprint_cpu_bind_type@Base 1.3.8 - slurm_sprint_job_info@Base 1.3.8 - slurm_sprint_job_step_info@Base 1.3.8 - slurm_sprint_mem_bind_type@Base 1.3.8 - slurm_sprint_node_table@Base 1.3.8 - slurm_sprint_partition_info@Base 1.3.8 - slurm_sprint_reservation_info@Base 2.0.0 - slurm_step_ctx_create@Base 1.3.8 - slurm_step_ctx_create_no_alloc@Base 1.3.8 - slurm_step_ctx_daemon_per_node_hack@Base 1.3.8 - slurm_step_ctx_destroy@Base 1.3.8 - slurm_step_ctx_get@Base 1.3.8 - slurm_step_ctx_params_t_init@Base 1.3.8 - slurm_step_launch@Base 1.3.8 - slurm_step_launch_abort@Base 1.3.8 - slurm_step_launch_fwd_signal@Base 1.3.8 - slurm_step_launch_params_t_init@Base 1.3.8 - slurm_step_launch_wait_finish@Base 1.3.8 - slurm_step_launch_wait_start@Base 1.3.8 - slurm_step_layout_copy@Base 1.3.8 - slurm_step_layout_create@Base 1.3.8 - slurm_step_layout_destroy@Base 1.3.8 - slurm_step_layout_host_id@Base 1.3.8 - slurm_step_layout_host_name@Base 1.3.8 - slurm_step_layout_type_name@Base 2.0.0 - slurm_strcasestr@Base 2.0.0 - slurm_strerror@Base 1.3.8 - slurm_strlcpy@Base 1.3.8 - slurm_submit_batch_job@Base 1.3.8 - slurm_suspend@Base 1.3.8 - slurm_takeover@Base 2.0.0 - slurm_terminate_job@Base 1.3.8 - slurm_terminate_job_step@Base 1.3.8 - slurm_topo_build_config@Base 2.1.0 - slurm_topo_fini@Base 2.1.0 - slurm_topo_get_node_addr@Base 2.1.0 - slurm_topo_init@Base 2.1.0 - slurm_try_xmalloc@Base 1.3.8 - slurm_try_xrealloc@Base 1.3.8 - slurm_unpack16@Base 1.3.8 - slurm_unpack16_array@Base 1.3.8 - slurm_unpack32@Base 1.3.8 - slurm_unpack32_array@Base 1.3.8 - slurm_unpack64@Base 1.3.8 - slurm_unpack8@Base 1.3.8 - slurm_unpack_block_info_msg@Base 2.2.0 - slurm_unpack_slurm_addr_array@Base 1.3.8 - slurm_unpack_slurm_addr_no_alloc@Base 1.3.8 - slurm_unpack_time@Base 1.3.8 - slurm_unpackmem@Base 1.3.8 - slurm_unpackmem_array@Base 1.3.8 - slurm_unpackmem_malloc@Base 1.3.8 - slurm_unpackmem_ptr@Base 1.3.8 - slurm_unpackmem_xmalloc@Base 1.3.8 - slurm_unpackstr_array@Base 1.3.8 - slurm_unsetenvp@Base 1.3.8 - slurm_update_block@Base 2.1.0 - slurm_update_job@Base 1.3.8 - slurm_update_node@Base 1.3.8 - slurm_update_partition@Base 1.3.8 - slurm_update_reservation@Base 2.0.0 - slurm_update_step@Base 2.2.0 - slurm_verbose@Base 1.3.8 - slurm_verify_cpu_bind@Base 2.0.0 - slurm_verify_mem_bind@Base 2.0.0 - slurm_write_stream@Base 1.3.8 - slurm_write_stream_timeout@Base 1.3.8 - slurm_xassert_failed@Base 1.3.8 - slurm_xbasename@Base 1.3.8 - slurm_xfer_buf_data@Base 1.3.8 - slurm_xfree@Base 1.3.8 - slurm_xmalloc@Base 1.3.8 - slurm_xmemcat@Base 1.3.8 - slurm_xrealloc@Base 1.3.8 - slurm_xshort_hostname@Base 1.3.8 - slurm_xsignal@Base 1.3.8 - slurm_xsignal_block@Base 1.3.8 - slurm_xsignal_save_mask@Base 1.3.8 - slurm_xsignal_set_mask@Base 1.3.8 - slurm_xsignal_sigset_create@Base 1.3.8 - slurm_xsignal_unblock@Base 1.3.8 - slurm_xsize@Base 1.3.8 - slurm_xslurm_strerrorcat@Base 1.3.8 - slurm_xstrcat@Base 1.3.8 - slurm_xstrcatchar@Base 1.3.8 - slurm_xstrdup@Base 1.3.8 - slurm_xstrdup_printf@Base 1.3.8 - slurm_xstrfmtcat@Base 1.3.8 - slurm_xstrftimecat@Base 1.3.8 - slurm_xstring_is_whitespace@Base 1.3.8 - slurm_xstrncat@Base 2.2.0 - slurm_xstrndup@Base 1.3.8 - slurm_xstrstrip@Base 1.3.9 - slurm_xstrsubstitute@Base 1.3.8 - slurm_xstrtolower@Base 2.1.10 diff -Nru slurm-llnl-2.2.7/debian/libslurm23.symbols slurm-llnl-2.3.2/debian/libslurm23.symbols --- slurm-llnl-2.2.7/debian/libslurm23.symbols 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/debian/libslurm23.symbols 2011-10-27 08:23:36.000000000 +0000 @@ -0,0 +1,866 @@ +libslurm.so.23 libslurm23 #MINVER# + islurm_get_rem_time2__@Base 1.3.8 + islurm_get_rem_time__@Base 1.3.8 + slurm_accept_msg_conn@Base 1.3.8 + slurm_accept_stream@Base 1.3.8 + slurm_accounting_enforce_string@Base 2.2.0 + slurm_acct_storage_fini@Base 1.3.8 + slurm_acct_storage_init@Base 1.3.8 + slurm_add_slash_to_quotes@Base 2.2.0 + slurm_addto_char_list@Base 1.3.8 + slurm_allocate_resources@Base 1.3.8 + slurm_allocate_resources_blocking@Base 1.3.8 + slurm_allocation_lookup@Base 1.3.8 + slurm_allocation_lookup_lite@Base 1.3.8 + slurm_allocation_msg_thr_create@Base 1.3.8 + slurm_allocation_msg_thr_destroy@Base 1.3.8 + slurm_api_clear_config@Base 1.3.8 + slurm_api_set_conf_file@Base 1.3.8 + slurm_api_set_default_config@Base 1.3.8 + slurm_api_version@Base 1.3.8 + slurm_arg_count@Base 1.3.8 + slurm_arg_idx_by_name@Base 1.3.8 + slurm_arg_name_by_idx@Base 1.3.8 + slurm_auth_context_create@Base 1.3.8 + slurm_auth_fini@Base 1.3.8 + slurm_auth_get_arg_desc@Base 1.3.8 + slurm_auth_init@Base 1.3.8 + slurm_bg_block_state_string@Base 2.2.0 + slurm_bit_alloc@Base 1.3.8 + slurm_bit_and@Base 1.3.8 + slurm_bit_clear@Base 1.3.8 + slurm_bit_clear_count@Base 1.3.8 + slurm_bit_copy@Base 1.3.8 + slurm_bit_copybits@Base 1.3.8 + slurm_bit_equal@Base 1.3.8 + slurm_bit_ffc@Base 1.3.8 + slurm_bit_ffs@Base 1.3.8 + slurm_bit_fill_gaps@Base 1.3.8 + slurm_bit_fls@Base 1.3.8 + slurm_bit_fmt@Base 1.3.8 + slurm_bit_fmt_binmask@Base 1.3.8 + slurm_bit_fmt_hexmask@Base 1.3.8 + slurm_bit_free@Base 1.3.8 + slurm_bit_get_bit_num@Base 1.3.8 + slurm_bit_get_pos_num@Base 1.3.8 + slurm_bit_nclear@Base 1.3.8 + slurm_bit_nffc@Base 1.3.8 + slurm_bit_nffs@Base 1.3.8 + slurm_bit_noc@Base 1.3.8 + slurm_bit_not@Base 1.3.8 + slurm_bit_nset@Base 1.3.8 + slurm_bit_nset_max_count@Base 1.3.8 + slurm_bit_or@Base 1.3.8 + slurm_bit_overlap@Base 1.3.8 + slurm_bit_pick_cnt@Base 1.3.8 + slurm_bit_realloc@Base 1.3.8 + slurm_bit_rotate@Base 1.3.8 + slurm_bit_rotate_copy@Base 1.3.8 + slurm_bit_set@Base 1.3.8 + slurm_bit_set_count@Base 1.3.8 + slurm_bit_size@Base 1.3.8 + slurm_bit_super_set@Base 1.3.8 + slurm_bit_test@Base 1.3.8 + slurm_bit_unfmt@Base 1.3.8 + slurm_bit_unfmt_binmask@Base 1.3.8 + slurm_bit_unfmt_hexmask@Base 1.3.8 + slurm_bitfmt2int@Base 1.3.8 + slurm_cgroup_conf@Base 2.3.1 + slurm_checkpoint_able@Base 1.3.8 + slurm_checkpoint_complete@Base 1.3.8 + slurm_checkpoint_create@Base 1.3.8 + slurm_checkpoint_disable@Base 1.3.8 + slurm_checkpoint_enable@Base 1.3.8 + slurm_checkpoint_error@Base 1.3.8 + slurm_checkpoint_requeue@Base 2.2.0 + slurm_checkpoint_restart@Base 1.3.8 + slurm_checkpoint_task_complete@Base 1.3.8 + slurm_checkpoint_tasks@Base 2.0.0 + slurm_checkpoint_vacate@Base 1.3.8 + slurm_clear_trigger@Base 1.3.8 + slurm_close_accepted_conn@Base 1.3.8 + slurm_close_slurmdbd_conn@Base 1.3.8 + slurm_close_stream@Base 1.3.8 + slurm_complete_job@Base 1.3.8 + slurm_conf_destroy@Base 1.3.8 + slurm_conf_downnodes_array@Base 1.3.8 + slurm_conf_expand_slurmd_path@Base 1.3.8 + slurm_conf_frontend_array@Base 2.3.1 + slurm_conf_get_addr@Base 1.3.8 + slurm_conf_get_aliased_nodename@Base 1.3.8 + slurm_conf_get_aliases@Base 2.2.3 + slurm_conf_get_cpus_sct@Base 1.3.8 + slurm_conf_get_hostname@Base 1.3.8 + slurm_conf_get_nodeaddr@Base 2.0.0 + slurm_conf_get_nodename@Base 1.3.8 + slurm_conf_get_port@Base 1.3.8 + slurm_conf_init@Base 1.3.8 + slurm_conf_install_fork_handlers@Base 1.3.8 + slurm_conf_lock@Base 1.3.8 + slurm_conf_mutex_init@Base 1.3.8 + slurm_conf_nodename_array@Base 1.3.8 + slurm_conf_options@Base 1.3.8 + slurm_conf_partition_array@Base 1.3.8 + slurm_conf_reinit@Base 1.3.8 + slurm_conf_unlock@Base 1.3.8 + slurm_conn_type_string@Base 2.2.0 + slurm_conn_type_string_full@Base 2.3.1 + slurm_create_buf@Base 1.3.8 + slurm_create_partition@Base 2.0.0 + slurm_create_reservation@Base 2.0.0 + slurm_cred_begin_expiration@Base 1.3.8 + slurm_cred_copy@Base 1.3.8 + slurm_cred_create@Base 1.3.8 + slurm_cred_creator_ctx_create@Base 1.3.8 + slurm_cred_ctx_destroy@Base 1.3.8 + slurm_cred_ctx_get@Base 1.3.8 + slurm_cred_ctx_key_update@Base 1.3.8 + slurm_cred_ctx_pack@Base 1.3.8 + slurm_cred_ctx_set@Base 1.3.8 + slurm_cred_ctx_unpack@Base 1.3.8 + slurm_cred_destroy@Base 1.3.8 + slurm_cred_faker@Base 1.3.8 + slurm_cred_free_args@Base 1.3.8 + slurm_cred_get_args@Base 1.3.8 + slurm_cred_get_signature@Base 1.3.8 + slurm_cred_handle_reissue@Base 1.3.8 + slurm_cred_insert_jobid@Base 1.3.8 + slurm_cred_jobid_cached@Base 1.3.8 + slurm_cred_pack@Base 1.3.8 + slurm_cred_print@Base 1.3.8 + slurm_cred_revoke@Base 1.3.8 + slurm_cred_revoked@Base 1.3.8 + slurm_cred_rewind@Base 1.3.8 + slurm_cred_unpack@Base 1.3.8 + slurm_cred_verifier_ctx_create@Base 1.3.8 + slurm_cred_verify@Base 1.3.8 + slurm_crypto_fini@Base 1.3.8 + slurm_ctl_conf_2_key_pairs@Base 2.1.0 + slurm_debug2@Base 1.3.8 + slurm_debug3@Base 1.3.8 + slurm_debug4@Base 2.2.0 + slurm_debug5@Base 2.2.0 + slurm_debug@Base 1.3.8 + slurm_delete_partition@Base 1.3.8 + slurm_delete_reservation@Base 2.0.0 + slurm_destroy_association_shares_object@Base 2.0.0 + slurm_destroy_char@Base 1.3.8 + slurm_destroy_config_key_pair@Base 2.1.0 + slurm_destroy_priority_factors_object@Base 2.0.0 + slurm_destroy_select_ba_request@Base 2.3.1 + slurm_destroy_uint32_ptr@Base 2.0.0 + slurm_diff_tv@Base 2.3.1 + slurm_diff_tv_str@Base 2.3.1 + slurm_dump_cleanup_list@Base 1.3.8 + slurm_env_array_append@Base 1.3.8 + slurm_env_array_append_fmt@Base 1.3.8 + slurm_env_array_copy@Base 1.3.8 + slurm_env_array_create@Base 1.3.8 + slurm_env_array_free@Base 1.3.8 + slurm_env_array_merge@Base 1.3.8 + slurm_env_array_overwrite@Base 1.3.8 + slurm_env_array_overwrite_fmt@Base 1.3.8 + slurm_error@Base 1.3.8 + slurm_fatal@Base 1.3.8 + slurm_fatal_add_cleanup@Base 1.3.8 + slurm_fatal_add_cleanup_job@Base 1.3.8 + slurm_fatal_cleanup@Base 1.3.8 + slurm_fatal_remove_cleanup@Base 1.3.8 + slurm_fatal_remove_cleanup_job@Base 1.3.8 + slurm_fd_read_n@Base 1.3.8 + slurm_fd_set_blocking@Base 1.3.8 + slurm_fd_set_nonblocking@Base 1.3.8 + slurm_fd_write_n@Base 1.3.8 + slurm_free_accounting_update_msg@Base 1.3.8 + slurm_free_block_info@Base 2.2.0 + slurm_free_block_info_members@Base 2.2.0 + slurm_free_block_info_msg@Base 2.1.0 + slurm_free_block_info_request_msg@Base 2.1.0 + slurm_free_block_job_info@Base 2.3.1 + slurm_free_buf@Base 1.3.8 + slurm_free_checkpoint_comp_msg@Base 1.3.8 + slurm_free_checkpoint_msg@Base 1.3.8 + slurm_free_checkpoint_resp_msg@Base 1.3.8 + slurm_free_checkpoint_task_comp_msg@Base 1.3.8 + slurm_free_checkpoint_tasks_msg@Base 1.3.8 + slurm_free_complete_batch_script_msg@Base 1.3.8 + slurm_free_complete_job_allocation_msg@Base 1.3.8 + slurm_free_ctl_conf@Base 1.3.8 + slurm_free_delete_part_msg@Base 1.3.8 + slurm_free_epilog_complete_msg@Base 1.3.8 + slurm_free_file_bcast_msg@Base 1.3.8 + slurm_free_front_end_info_members@Base 2.3.1 + slurm_free_front_end_info_msg@Base 2.3.1 + slurm_free_front_end_info_request_msg@Base 2.3.1 + slurm_free_get_kvs_msg@Base 1.3.8 + slurm_free_job_alloc_info_msg@Base 1.3.8 + slurm_free_job_alloc_info_response_msg@Base 1.3.8 + slurm_free_job_desc_msg@Base 1.3.8 + slurm_free_job_id_msg@Base 1.3.8 + slurm_free_job_id_request_msg@Base 1.3.8 + slurm_free_job_id_response_msg@Base 1.3.8 + slurm_free_job_info@Base 1.3.8 + slurm_free_job_info_members@Base 1.3.8 + slurm_free_job_info_msg@Base 1.3.8 + slurm_free_job_info_request_msg@Base 1.3.8 + slurm_free_job_launch_msg@Base 1.3.8 + slurm_free_job_notify_msg@Base 1.3.8 + slurm_free_job_step_create_request_msg@Base 1.3.8 + slurm_free_job_step_create_response_msg@Base 1.3.8 + slurm_free_job_step_id_msg@Base 1.3.8 + slurm_free_job_step_info_members@Base 2.2.0 + slurm_free_job_step_info_request_msg@Base 1.3.8 + slurm_free_job_step_info_response_msg@Base 1.3.8 + slurm_free_job_step_kill_msg@Base 1.3.8 + slurm_free_job_step_pids@Base 2.2.0 + slurm_free_job_step_stat@Base 2.2.0 + slurm_free_kill_job_msg@Base 1.3.8 + slurm_free_kill_tasks_msg@Base 1.3.8 + slurm_free_kvs_comm_set@Base 1.3.8 + slurm_free_last_update_msg@Base 1.3.8 + slurm_free_launch_tasks_request_msg@Base 1.3.8 + slurm_free_launch_tasks_response_msg@Base 1.3.8 + slurm_free_msg@Base 1.3.8 + slurm_free_msg_data@Base 1.3.8 + slurm_free_node_info_members@Base 2.2.0 + slurm_free_node_info_msg@Base 1.3.8 + slurm_free_node_info_request_msg@Base 1.3.8 + slurm_free_node_registration_status_msg@Base 1.3.8 + slurm_free_part_info_request_msg@Base 1.3.8 + slurm_free_partition_info_members@Base 2.2.0 + slurm_free_partition_info_msg@Base 1.3.8 + slurm_free_priority_factors_request_msg@Base 2.0.0 + slurm_free_priority_factors_response_msg@Base 2.0.0 + slurm_free_reattach_tasks_request_msg@Base 1.3.8 + slurm_free_reattach_tasks_response_msg@Base 1.3.8 + slurm_free_reservation_info_msg@Base 2.0.0 + slurm_free_reserve_info_members@Base 2.2.0 + slurm_free_resource_allocation_response_msg@Base 1.3.8 + slurm_free_resv_desc_msg@Base 2.0.0 + slurm_free_resv_info_request_msg@Base 2.0.0 + slurm_free_resv_name_msg@Base 2.0.0 + slurm_free_return_code_msg@Base 1.3.8 + slurm_free_sbcast_cred_msg@Base 2.1.0 + slurm_free_set_debug_flags_msg@Base 2.3.1 + slurm_free_set_debug_level_msg@Base 1.3.8 + slurm_free_shares_request_msg@Base 2.0.0 + slurm_free_shares_response_msg@Base 2.0.0 + slurm_free_shutdown_msg@Base 1.3.8 + slurm_free_signal_job_msg@Base 1.3.8 + slurm_free_slurmd_status@Base 1.3.8 + slurm_free_spank_env_request_msg@Base 2.3.1 + slurm_free_spank_env_responce_msg@Base 2.3.1 + slurm_free_srun_exec_msg@Base 1.3.8 + slurm_free_srun_job_complete_msg@Base 1.3.8 + slurm_free_srun_node_fail_msg@Base 1.3.8 + slurm_free_srun_ping_msg@Base 1.3.8 + slurm_free_srun_step_missing_msg@Base 2.0.0 + slurm_free_srun_timeout_msg@Base 1.3.8 + slurm_free_srun_user_msg@Base 1.3.8 + slurm_free_step_complete_msg@Base 1.3.8 + slurm_free_submit_response_response_msg@Base 1.3.8 + slurm_free_suspend_msg@Base 1.3.8 + slurm_free_task_exit_msg@Base 1.3.8 + slurm_free_task_user_managed_io_stream_msg@Base 1.3.8 + slurm_free_topo_info_msg@Base 2.0.0 + slurm_free_trigger_msg@Base 1.3.8 + slurm_free_update_front_end_msg@Base 2.3.1 + slurm_free_update_job_time_msg@Base 1.3.8 + slurm_free_update_node_msg@Base 1.3.8 + slurm_free_update_part_msg@Base 1.3.8 + slurm_free_update_step_msg@Base 2.2.0 + slurm_free_will_run_response_msg@Base 1.3.8 + slurm_get_accounting_storage_backup_host@Base 2.0.0 + slurm_get_accounting_storage_enforce@Base 1.3.8 + slurm_get_accounting_storage_host@Base 1.3.8 + slurm_get_accounting_storage_loc@Base 1.3.8 + slurm_get_accounting_storage_pass@Base 1.3.8 + slurm_get_accounting_storage_port@Base 1.3.8 + slurm_get_accounting_storage_type@Base 1.3.8 + slurm_get_accounting_storage_user@Base 1.3.8 + slurm_get_addr@Base 1.3.8 + slurm_get_api_config@Base 1.3.8 + slurm_get_auth_type@Base 1.3.8 + slurm_get_avail_procs@Base 1.3.8 + slurm_get_batch_start_timeout@Base 1.3.12 + slurm_get_checkpoint_type@Base 1.3.8 + slurm_get_cluster_name@Base 1.3.8 + slurm_get_complete_wait@Base 2.0.0 + slurm_get_controller_addr_spec@Base 1.3.8 + slurm_get_crypto_type@Base 1.3.8 + slurm_get_debug_flags@Base 2.0.0 + slurm_get_def_mem_per_cpu@Base 2.1.0 + slurm_get_end_time@Base 1.3.8 + slurm_get_env_timeout@Base 1.3.8 + slurm_get_epilog_msg_time@Base 1.3.8 + slurm_get_errno@Base 1.3.8 + slurm_get_fast_schedule@Base 1.3.8 + slurm_get_gres_plugins@Base 2.2.0 + slurm_get_hash_val@Base 2.2.0 + slurm_get_health_check_program@Base 1.3.8 + slurm_get_ip_str@Base 1.3.8 + slurm_get_is_association_based_accounting@Base 1.3.9 + slurm_get_job_steps@Base 1.3.8 + slurm_get_job_submit_plugins@Base 2.2.0 + slurm_get_jobacct_gather_freq@Base 1.3.8 + slurm_get_jobacct_gather_type@Base 1.3.8 + slurm_get_jobcomp_host@Base 1.3.8 + slurm_get_jobcomp_loc@Base 1.3.8 + slurm_get_jobcomp_pass@Base 1.3.8 + slurm_get_jobcomp_port@Base 1.3.8 + slurm_get_jobcomp_type@Base 1.3.8 + slurm_get_jobcomp_user@Base 1.3.8 + slurm_get_kill_on_bad_exit@Base 2.0.0 + slurm_get_kvs_comm_set@Base 1.3.8 + slurm_get_max_mem_per_cpu@Base 2.1.0 + slurm_get_mpi_default@Base 1.3.8 + slurm_get_mpi_params@Base 2.0.0 + slurm_get_msg_timeout@Base 1.3.8 + slurm_get_peer_addr@Base 1.3.8 + slurm_get_plugin_dir@Base 1.3.8 + slurm_get_preempt_mode@Base 2.1.0 + slurm_get_preempt_type@Base 2.1.0 + slurm_get_priority_calc_period@Base 2.1.0 + slurm_get_priority_decay_hl@Base 2.0.0 + slurm_get_priority_favor_small@Base 2.0.0 + slurm_get_priority_max_age@Base 2.0.0 + slurm_get_priority_reset_period@Base 2.0.0 + slurm_get_priority_type@Base 2.0.0 + slurm_get_priority_weight_age@Base 2.0.0 + slurm_get_priority_weight_fairshare@Base 2.0.0 + slurm_get_priority_weight_job_size@Base 2.0.0 + slurm_get_priority_weight_partition@Base 2.0.0 + slurm_get_priority_weight_qos@Base 2.0.0 + slurm_get_private_data@Base 1.3.8 + slurm_get_proctrack_type@Base 1.3.8 + slurm_get_propagate_prio_process@Base 1.3.8 + slurm_get_rem_time@Base 1.3.8 + slurm_get_resume_timeout@Base 2.0.0 + slurm_get_return_code@Base 1.3.8 + slurm_get_root_filter@Base 1.3.8 + slurm_get_sched_params@Base 2.0.0 + slurm_get_sched_port@Base 1.3.8 + slurm_get_sched_type@Base 1.3.8 + slurm_get_select_jobinfo@Base 1.3.8 + slurm_get_select_nodeinfo@Base 2.1.0 + slurm_get_select_type@Base 1.3.8 + slurm_get_select_type_param@Base 2.3.1 + slurm_get_slurm_user_id@Base 1.3.8 + slurm_get_slurmd_port@Base 1.3.8 + slurm_get_slurmd_user_id@Base 2.0.0 + slurm_get_srun_epilog@Base 1.3.8 + slurm_get_srun_prolog@Base 1.3.8 + slurm_get_state_save_location@Base 1.3.8 + slurm_get_stream_addr@Base 1.3.8 + slurm_get_suspend_time@Base 2.1.0 + slurm_get_suspend_timeout@Base 2.2.0 + slurm_get_switch_type@Base 1.3.8 + slurm_get_task_epilog@Base 1.3.8 + slurm_get_task_plugin@Base 1.3.8 + slurm_get_task_plugin_param@Base 1.3.8 + slurm_get_task_prolog@Base 1.3.8 + slurm_get_topology_plugin@Base 2.0.0 + slurm_get_track_wckey@Base 1.3.12 + slurm_get_tree_width@Base 1.3.8 + slurm_get_triggers@Base 1.3.8 + slurm_get_vsize_factor@Base 2.2.0 + slurm_get_wait_time@Base 1.3.8 + slurm_getenvp@Base 1.3.8 + slurm_grow_buf@Base 1.3.8 + slurm_hostlist_copy@Base 1.3.8 + slurm_hostlist_count@Base 1.3.8 + slurm_hostlist_create@Base 1.3.8 + slurm_hostlist_create_dims@Base 2.3.1 + slurm_hostlist_delete@Base 1.3.8 + slurm_hostlist_delete_host@Base 1.3.8 + slurm_hostlist_delete_nth@Base 1.3.8 + slurm_hostlist_deranged_string@Base 1.3.8 + slurm_hostlist_deranged_string_dims@Base 2.3.1 + slurm_hostlist_deranged_string_malloc@Base 2.2.0 + slurm_hostlist_deranged_string_xmalloc@Base 2.2.0 + slurm_hostlist_deranged_string_xmalloc_dims@Base 2.3.1 + slurm_hostlist_destroy@Base 1.3.8 + slurm_hostlist_find@Base 1.3.8 + slurm_hostlist_iterator_create@Base 1.3.8 + slurm_hostlist_iterator_destroy@Base 1.3.8 + slurm_hostlist_iterator_reset@Base 1.3.8 + slurm_hostlist_next@Base 1.3.8 + slurm_hostlist_next_range@Base 1.3.8 + slurm_hostlist_nth@Base 1.3.8 + slurm_hostlist_pop@Base 1.3.8 + slurm_hostlist_pop_range@Base 1.3.8 + slurm_hostlist_push@Base 1.3.8 + slurm_hostlist_push_host@Base 1.3.8 + slurm_hostlist_push_host_dims@Base 2.3.1 + slurm_hostlist_push_list@Base 1.3.8 + slurm_hostlist_ranged_string@Base 1.3.8 + slurm_hostlist_ranged_string_dims@Base 2.3.1 + slurm_hostlist_ranged_string_malloc@Base 2.2.0 + slurm_hostlist_ranged_string_xmalloc@Base 2.2.0 + slurm_hostlist_ranged_string_xmalloc_dims@Base 2.3.1 + slurm_hostlist_remove@Base 1.3.8 + slurm_hostlist_shift@Base 1.3.8 + slurm_hostlist_shift_range@Base 1.3.8 + slurm_hostlist_soft@Base 1.3.8 + slurm_hostlist_uniq@Base 1.3.8 + slurm_hostset_copy@Base 1.3.8 + slurm_hostset_count@Base 1.3.8 + slurm_hostset_create@Base 1.3.8 + slurm_hostset_delete@Base 1.3.8 + slurm_hostset_destroy@Base 1.3.8 + slurm_hostset_find@Base 1.3.8 + slurm_hostset_insert@Base 1.3.8 + slurm_hostset_nth@Base 1.3.8 + slurm_hostset_shift@Base 1.3.8 + slurm_hostset_shift_range@Base 1.3.8 + slurm_hostset_within@Base 1.3.8 + slurm_info@Base 1.3.8 + slurm_init_buf@Base 1.3.8 + slurm_init_job_desc_msg@Base 1.3.8 + slurm_init_msg_engine@Base 1.3.8 + slurm_init_msg_engine_addrname_port@Base 2.0.0 + slurm_init_msg_engine_port@Base 1.3.8 + slurm_init_part_desc_msg@Base 1.3.8 + slurm_init_resv_desc_msg@Base 2.0.0 + slurm_init_update_block_msg@Base 2.1.0 + slurm_init_update_front_end_msg@Base 2.3.1 + slurm_init_update_node_msg@Base 2.0.0 + slurm_init_update_step_msg@Base 2.2.0 + slurm_int_and_set_count@Base 1.3.8 + slurm_job_cpus_allocated_on_node@Base 2.1.0 + slurm_job_cpus_allocated_on_node_id@Base 2.1.0 + slurm_job_node_ready@Base 1.3.8 + slurm_job_reason_string@Base 2.2.0 + slurm_job_state_num@Base 2.2.0 + slurm_job_state_string@Base 2.2.0 + slurm_job_state_string_compact@Base 2.2.0 + slurm_job_step_create@Base 1.3.8 + slurm_job_step_get_pids@Base 2.2.0 + slurm_job_step_layout_free@Base 1.3.8 + slurm_job_step_layout_get@Base 1.3.8 + slurm_job_step_pids_free@Base 2.2.0 + slurm_job_step_pids_response_msg_free@Base 2.2.0 + slurm_job_step_stat@Base 2.2.0 + slurm_job_step_stat_free@Base 2.2.0 + slurm_job_step_stat_response_msg_free@Base 2.2.0 + slurm_job_will_run@Base 1.3.8 + slurm_jobacct_common_alloc_jobacct@Base 2.2.0 + slurm_jobacct_common_free_jobacct@Base 2.2.0 + slurm_jobacct_common_pack@Base 2.2.0 + slurm_jobacct_common_unpack@Base 2.2.0 + slurm_jobacct_gather_fini@Base 1.3.8 + slurm_jobacct_gather_init@Base 1.3.8 + slurm_jobinfo_ctx_get@Base 1.3.8 + slurm_kill_job@Base 1.3.8 + slurm_kill_job_step@Base 1.3.8 + slurm_list_append@Base 1.3.8 + slurm_list_append_list@Base 1.3.8 + slurm_list_count@Base 1.3.8 + slurm_list_create@Base 1.3.8 + slurm_list_delete_all@Base 1.3.8 + slurm_list_delete_item@Base 1.3.8 + slurm_list_dequeue@Base 1.3.8 + slurm_list_destroy@Base 1.3.8 + slurm_list_enqueue@Base 1.3.8 + slurm_list_find@Base 1.3.8 + slurm_list_find_first@Base 1.3.8 + slurm_list_flush@Base 2.2.0 + slurm_list_for_each@Base 1.3.8 + slurm_list_insert@Base 1.3.8 + slurm_list_install_fork_handlers@Base 1.3.8 + slurm_list_is_empty@Base 1.3.8 + slurm_list_iterator_create@Base 1.3.8 + slurm_list_iterator_destroy@Base 1.3.8 + slurm_list_iterator_reset@Base 1.3.8 + slurm_list_next@Base 1.3.8 + slurm_list_peek@Base 1.3.8 + slurm_list_pop@Base 1.3.8 + slurm_list_prepend@Base 1.3.8 + slurm_list_push@Base 1.3.8 + slurm_list_remove@Base 1.3.8 + slurm_list_sort@Base 1.3.8 + slurm_list_transfer@Base 1.3.8 + slurm_listen_stream@Base 1.3.8 + slurm_load_block_info@Base 2.1.0 + slurm_load_ctl_conf@Base 1.3.8 + slurm_load_front_end@Base 2.3.1 + slurm_load_job@Base 1.3.8 + slurm_load_jobs@Base 1.3.8 + slurm_load_node@Base 1.3.8 + slurm_load_partitions@Base 1.3.8 + slurm_load_reservations@Base 2.0.0 + slurm_load_slurmd_status@Base 1.3.8 + slurm_load_topo@Base 2.0.0 + slurm_log_alter@Base 1.3.8 + slurm_log_fini@Base 1.3.8 + slurm_log_flush@Base 1.3.8 + slurm_log_fp@Base 1.3.8 + slurm_log_has_data@Base 1.3.8 + slurm_log_init@Base 1.3.8 + slurm_log_reinit@Base 1.3.8 + slurm_log_set_fpfx@Base 1.3.8 + slurm_make_time_str@Base 1.3.8 + slurm_msg_t_copy@Base 1.3.8 + slurm_msg_t_init@Base 1.3.8 + slurm_net_accept_stream@Base 1.3.8 + slurm_net_set_low_water@Base 1.3.8 + slurm_net_stream_listen@Base 1.3.8 + slurm_node_state_string@Base 2.2.0 + slurm_node_state_string_compact@Base 2.2.0 + slurm_node_use_string@Base 2.2.0 + slurm_notify_job@Base 1.3.8 + slurm_open_controller_conn@Base 1.3.8 + slurm_open_controller_conn_spec@Base 1.3.8 + slurm_open_msg_conn@Base 1.3.8 + slurm_open_slurmdbd_conn@Base 1.3.8 + slurm_open_stream@Base 1.3.8 + slurm_pack16@Base 1.3.8 + slurm_pack16_array@Base 1.3.8 + slurm_pack32@Base 1.3.8 + slurm_pack32_array@Base 1.3.8 + slurm_pack64@Base 1.3.8 + slurm_pack8@Base 1.3.8 + slurm_pack_block_job_info@Base 2.3.1 + slurm_pack_slurm_addr@Base 1.3.8 + slurm_pack_slurm_addr_array@Base 1.3.8 + slurm_pack_time@Base 1.3.8 + slurm_packdouble@Base 2.3.1 + slurm_packmem@Base 1.3.8 + slurm_packmem_array@Base 1.3.8 + slurm_packstr_array@Base 1.3.8 + slurm_parser@Base 1.3.8 + slurm_perror@Base 1.3.8 + slurm_pid2jobid@Base 1.3.8 + slurm_ping@Base 1.3.8 + slurm_plugin_get_syms@Base 2.2.0 + slurm_plugin_load_and_link@Base 2.2.0 + slurm_plugin_strerror@Base 2.2.0 + slurm_plugin_unload@Base 2.2.0 + slurm_plugrack_create@Base 2.2.0 + slurm_plugrack_destroy@Base 2.2.0 + slurm_plugrack_read_dir@Base 2.2.0 + slurm_plugrack_set_major_type@Base 2.2.0 + slurm_plugrack_set_paranoia@Base 2.2.0 + slurm_plugrack_use_by_type@Base 2.2.0 + slurm_pmi_finalize@Base 1.3.8 + slurm_preempt_mode_num@Base 2.2.0 + slurm_preempt_mode_string@Base 2.2.0 + slurm_print_block_info@Base 2.1.0 + slurm_print_block_info_msg@Base 2.1.0 + slurm_print_cpu_bind_help@Base 2.0.0 + slurm_print_ctl_conf@Base 1.3.8 + slurm_print_front_end_info_msg@Base 2.3.1 + slurm_print_front_end_table@Base 2.3.1 + slurm_print_job_info@Base 1.3.8 + slurm_print_job_info_msg@Base 1.3.8 + slurm_print_job_step_info@Base 1.3.8 + slurm_print_job_step_info_msg@Base 1.3.8 + slurm_print_key_pairs@Base 2.0.0 + slurm_print_launch_task_msg@Base 1.3.8 + slurm_print_mem_bind_help@Base 2.0.0 + slurm_print_node_info_msg@Base 1.3.8 + slurm_print_node_table@Base 1.3.8 + slurm_print_partition_info@Base 1.3.8 + slurm_print_partition_info_msg@Base 1.3.8 + slurm_print_reservation_info@Base 2.0.0 + slurm_print_reservation_info_msg@Base 2.0.0 + slurm_print_slurm_addr@Base 1.3.8 + slurm_print_slurmd_status@Base 1.3.8 + slurm_print_topo_info_msg@Base 2.0.0 + slurm_print_topo_record@Base 2.0.0 + slurm_priority_fini@Base 2.0.0 + slurm_priority_init@Base 2.0.0 + slurm_private_data_string@Base 2.2.0 + slurm_pull_trigger@Base 2.2.0 + slurm_read_hostfile@Base 1.3.8 + slurm_read_stream@Base 1.3.8 + slurm_read_stream_timeout@Base 1.3.8 + slurm_receive_msg@Base 1.3.8 + slurm_receive_msg_and_forward@Base 1.3.8 + slurm_receive_msgs@Base 1.3.8 + slurm_reconfigure@Base 1.3.8 + slurm_requeue@Base 1.3.8 + slurm_reservation_flags_string@Base 2.2.0 + slurm_resume@Base 1.3.8 + slurm_s_p_get_string@Base 2.3.1 + slurm_s_p_get_uint32@Base 2.3.1 + slurm_s_p_hashtbl_create@Base 2.3.1 + slurm_s_p_hashtbl_destroy@Base 2.3.1 + slurm_s_p_parse_file@Base 2.3.1 + slurm_sbcast_lookup@Base 2.1.0 + slurm_select_fini@Base 1.3.8 + slurm_select_init@Base 1.3.8 + slurm_send_addr_recv_msgs@Base 1.3.8 + slurm_send_kvs_comm_set@Base 1.3.8 + slurm_send_node_msg@Base 1.3.8 + slurm_send_only_controller_msg@Base 1.3.8 + slurm_send_only_node_msg@Base 1.3.8 + slurm_send_rc_msg@Base 1.3.8 + slurm_send_recv_controller_msg@Base 1.3.8 + slurm_send_recv_controller_rc_msg@Base 1.3.8 + slurm_send_recv_msgs@Base 1.3.8 + slurm_send_recv_node_msg@Base 1.3.8 + slurm_send_recv_rc_msg_only_one@Base 1.3.8 + slurm_send_recv_slurmdbd_msg@Base 1.3.8 + slurm_send_slurmdbd_msg@Base 1.3.8 + slurm_send_slurmdbd_recv_rc_msg@Base 1.3.8 + slurm_set_accounting_storage_host@Base 2.0.2 + slurm_set_accounting_storage_loc@Base 1.3.8 + slurm_set_accounting_storage_port@Base 1.3.11 + slurm_set_accounting_storage_user@Base 2.0.2 + slurm_set_addr@Base 1.3.8 + slurm_set_addr_any@Base 1.3.8 + slurm_set_addr_char@Base 1.3.8 + slurm_set_addr_uint@Base 1.3.8 + slurm_set_api_config@Base 1.3.8 + slurm_set_auth_type@Base 1.3.8 + slurm_set_debug_flags@Base 2.3.1 + slurm_set_debug_level@Base 1.3.8 + slurm_set_debugflags@Base 2.3.1 + slurm_set_jobcomp_port@Base 1.3.11 + slurm_set_schedlog_level@Base 2.2.0 + slurm_set_stream_blocking@Base 1.3.8 + slurm_set_stream_non_blocking@Base 1.3.8 + slurm_set_tree_width@Base 1.3.8 + slurm_set_trigger@Base 1.3.8 + slurm_setenvpf@Base 1.3.8 + slurm_seterrno@Base 1.3.8 + slurm_shutdown@Base 1.3.8 + slurm_shutdown_msg_conn@Base 1.3.8 + slurm_shutdown_msg_engine@Base 1.3.8 + slurm_signal_job@Base 1.3.8 + slurm_signal_job_step@Base 1.3.8 + slurm_sort_char_list_asc@Base 1.3.9 + slurm_sort_char_list_desc@Base 1.3.9 + slurm_sort_key_pairs@Base 2.1.0 + slurm_sprint_block_info@Base 2.1.0 + slurm_sprint_cpu_bind_type@Base 1.3.8 + slurm_sprint_front_end_table@Base 2.3.1 + slurm_sprint_job_info@Base 1.3.8 + slurm_sprint_job_step_info@Base 1.3.8 + slurm_sprint_mem_bind_type@Base 1.3.8 + slurm_sprint_node_table@Base 1.3.8 + slurm_sprint_partition_info@Base 1.3.8 + slurm_sprint_reservation_info@Base 2.0.0 + slurm_step_ctx_create@Base 1.3.8 + slurm_step_ctx_create_no_alloc@Base 1.3.8 + slurm_step_ctx_daemon_per_node_hack@Base 1.3.8 + slurm_step_ctx_destroy@Base 1.3.8 + slurm_step_ctx_get@Base 1.3.8 + slurm_step_ctx_params_t_init@Base 1.3.8 + slurm_step_launch@Base 1.3.8 + slurm_step_launch_abort@Base 1.3.8 + slurm_step_launch_fwd_signal@Base 1.3.8 + slurm_step_launch_params_t_init@Base 1.3.8 + slurm_step_launch_wait_finish@Base 1.3.8 + slurm_step_launch_wait_start@Base 1.3.8 + slurm_step_layout_copy@Base 1.3.8 + slurm_step_layout_create@Base 1.3.8 + slurm_step_layout_destroy@Base 1.3.8 + slurm_step_layout_host_id@Base 1.3.8 + slurm_step_layout_host_name@Base 1.3.8 + slurm_step_layout_type_name@Base 2.0.0 + slurm_strcasestr@Base 2.0.0 + slurm_strerror@Base 1.3.8 + slurm_strlcpy@Base 1.3.8 + slurm_submit_batch_job@Base 1.3.8 + slurm_suspend@Base 1.3.8 + slurm_takeover@Base 2.0.0 + slurm_terminate_job@Base 1.3.8 + slurm_terminate_job_step@Base 1.3.8 + slurm_topo_build_config@Base 2.1.0 + slurm_topo_fini@Base 2.1.0 + slurm_topo_generate_node_ranking@Base 2.3.1 + slurm_topo_get_node_addr@Base 2.1.0 + slurm_topo_init@Base 2.1.0 + slurm_try_xmalloc@Base 1.3.8 + slurm_try_xrealloc@Base 1.3.8 + slurm_unpack16@Base 1.3.8 + slurm_unpack16_array@Base 1.3.8 + slurm_unpack32@Base 1.3.8 + slurm_unpack32_array@Base 1.3.8 + slurm_unpack64@Base 1.3.8 + slurm_unpack8@Base 1.3.8 + slurm_unpack_block_info_members@Base 2.3.1 + slurm_unpack_block_info_msg@Base 2.2.0 + slurm_unpack_slurm_addr_array@Base 1.3.8 + slurm_unpack_slurm_addr_no_alloc@Base 1.3.8 + slurm_unpack_time@Base 1.3.8 + slurm_unpackdouble@Base 2.3.1 + slurm_unpackmem@Base 1.3.8 + slurm_unpackmem_array@Base 1.3.8 + slurm_unpackmem_malloc@Base 1.3.8 + slurm_unpackmem_ptr@Base 1.3.8 + slurm_unpackmem_xmalloc@Base 1.3.8 + slurm_unpackstr_array@Base 1.3.8 + slurm_unsetenvp@Base 1.3.8 + slurm_update_block@Base 2.1.0 + slurm_update_front_end@Base 2.3.1 + slurm_update_job@Base 1.3.8 + slurm_update_node@Base 1.3.8 + slurm_update_partition@Base 1.3.8 + slurm_update_reservation@Base 2.0.0 + slurm_update_step@Base 2.2.0 + slurm_verbose@Base 1.3.8 + slurm_verify_cpu_bind@Base 2.0.0 + slurm_verify_mem_bind@Base 2.0.0 + slurm_write_stream@Base 1.3.8 + slurm_write_stream_timeout@Base 1.3.8 + slurm_xassert_failed@Base 1.3.8 + slurm_xbasename@Base 1.3.8 + slurm_xfer_buf_data@Base 1.3.8 + slurm_xfree@Base 1.3.8 + slurm_xmalloc@Base 1.3.8 + slurm_xmemcat@Base 1.3.8 + slurm_xrealloc@Base 1.3.8 + slurm_xshort_hostname@Base 1.3.8 + slurm_xsignal@Base 1.3.8 + slurm_xsignal_block@Base 1.3.8 + slurm_xsignal_save_mask@Base 1.3.8 + slurm_xsignal_set_mask@Base 1.3.8 + slurm_xsignal_sigset_create@Base 1.3.8 + slurm_xsignal_unblock@Base 1.3.8 + slurm_xsize@Base 1.3.8 + slurm_xslurm_strerrorcat@Base 1.3.8 + slurm_xstrcat@Base 1.3.8 + slurm_xstrcatchar@Base 1.3.8 + slurm_xstrdup@Base 1.3.8 + slurm_xstrdup_printf@Base 1.3.8 + slurm_xstrfmtcat@Base 1.3.8 + slurm_xstrftimecat@Base 1.3.8 + slurm_xstring_is_whitespace@Base 1.3.8 + slurm_xstrncat@Base 2.2.0 + slurm_xstrndup@Base 1.3.8 + slurm_xstrstrip@Base 1.3.9 + slurm_xstrsubstitute@Base 1.3.8 + slurm_xstrtolower@Base 2.1.10 + slurmdb_addto_qos_char_list@Base 2.3.1 + slurmdb_admin_level_str@Base 2.3.1 + slurmdb_cluster_flags_2_str@Base 2.3.1 + slurmdb_create_job_rec@Base 2.3.1 + slurmdb_create_step_rec@Base 2.3.1 + slurmdb_destroy_account_cond@Base 2.3.1 + slurmdb_destroy_account_rec@Base 2.3.1 + slurmdb_destroy_accounting_rec@Base 2.3.1 + slurmdb_destroy_archive_cond@Base 2.3.1 + slurmdb_destroy_archive_rec@Base 2.3.1 + slurmdb_destroy_association_cond@Base 2.3.1 + slurmdb_destroy_association_rec@Base 2.3.1 + slurmdb_destroy_cluster_accounting_rec@Base 2.3.1 + slurmdb_destroy_cluster_cond@Base 2.3.1 + slurmdb_destroy_cluster_rec@Base 2.3.1 + slurmdb_destroy_coord_rec@Base 2.3.1 + slurmdb_destroy_event_cond@Base 2.3.1 + slurmdb_destroy_event_rec@Base 2.3.1 + slurmdb_destroy_hierarchical_rec@Base 2.3.1 + slurmdb_destroy_job_cond@Base 2.3.1 + slurmdb_destroy_job_modify_cond@Base 2.3.1 + slurmdb_destroy_job_rec@Base 2.3.1 + slurmdb_destroy_print_tree@Base 2.3.1 + slurmdb_destroy_qos_cond@Base 2.3.1 + slurmdb_destroy_qos_rec@Base 2.3.1 + slurmdb_destroy_report_acct_grouping@Base 2.3.1 + slurmdb_destroy_report_assoc_rec@Base 2.3.1 + slurmdb_destroy_report_cluster_grouping@Base 2.3.1 + slurmdb_destroy_report_cluster_rec@Base 2.3.1 + slurmdb_destroy_report_job_grouping@Base 2.3.1 + slurmdb_destroy_report_user_rec@Base 2.3.1 + slurmdb_destroy_reservation_cond@Base 2.3.1 + slurmdb_destroy_reservation_rec@Base 2.3.1 + slurmdb_destroy_selected_step@Base 2.3.1 + slurmdb_destroy_step_rec@Base 2.3.1 + slurmdb_destroy_txn_cond@Base 2.3.1 + slurmdb_destroy_txn_rec@Base 2.3.1 + slurmdb_destroy_update_object@Base 2.3.1 + slurmdb_destroy_update_shares_rec@Base 2.3.1 + slurmdb_destroy_used_limits@Base 2.3.1 + slurmdb_destroy_user_cond@Base 2.3.1 + slurmdb_destroy_user_rec@Base 2.3.1 + slurmdb_destroy_wckey_cond@Base 2.3.1 + slurmdb_destroy_wckey_rec@Base 2.3.1 + slurmdb_get_acct_hierarchical_rec_list@Base 2.3.1 + slurmdb_get_hierarchical_sorted_assoc_list@Base 2.3.1 + slurmdb_get_info_cluster@Base 2.3.1 + slurmdb_init_association_rec@Base 2.3.1 + slurmdb_init_cluster_cond@Base 2.3.1 + slurmdb_init_cluster_rec@Base 2.3.1 + slurmdb_init_qos_rec@Base 2.3.1 + slurmdb_init_wckey_rec@Base 2.3.1 + slurmdb_pack_account_cond@Base 2.3.1 + slurmdb_pack_account_rec@Base 2.3.1 + slurmdb_pack_accounting_rec@Base 2.3.1 + slurmdb_pack_archive_cond@Base 2.3.1 + slurmdb_pack_archive_rec@Base 2.3.1 + slurmdb_pack_association_cond@Base 2.3.1 + slurmdb_pack_association_rec@Base 2.3.1 + slurmdb_pack_cluster_accounting_rec@Base 2.3.1 + slurmdb_pack_cluster_cond@Base 2.3.1 + slurmdb_pack_cluster_rec@Base 2.3.1 + slurmdb_pack_coord_rec@Base 2.3.1 + slurmdb_pack_event_cond@Base 2.3.1 + slurmdb_pack_event_rec@Base 2.3.1 + slurmdb_pack_job_cond@Base 2.3.1 + slurmdb_pack_job_modify_cond@Base 2.3.1 + slurmdb_pack_job_rec@Base 2.3.1 + slurmdb_pack_qos_cond@Base 2.3.1 + slurmdb_pack_qos_rec@Base 2.3.1 + slurmdb_pack_reservation_cond@Base 2.3.1 + slurmdb_pack_reservation_rec@Base 2.3.1 + slurmdb_pack_selected_step@Base 2.3.1 + slurmdb_pack_step_rec@Base 2.3.1 + slurmdb_pack_txn_cond@Base 2.3.1 + slurmdb_pack_txn_rec@Base 2.3.1 + slurmdb_pack_update_object@Base 2.3.1 + slurmdb_pack_used_limits@Base 2.3.1 + slurmdb_pack_user_cond@Base 2.3.1 + slurmdb_pack_user_rec@Base 2.3.1 + slurmdb_pack_wckey_cond@Base 2.3.1 + slurmdb_pack_wckey_rec@Base 2.3.1 + slurmdb_parse_purge@Base 2.3.1 + slurmdb_problem_str_get@Base 2.3.1 + slurmdb_purge_string@Base 2.3.1 + slurmdb_qos_flags_str@Base 2.3.1 + slurmdb_qos_str@Base 2.3.1 + slurmdb_report_set_start_end_time@Base 2.3.1 + slurmdb_send_accounting_update@Base 2.3.1 + slurmdb_setup_cluster_dim_size@Base 2.3.1 + slurmdb_setup_cluster_dims@Base 2.3.1 + slurmdb_setup_cluster_flags@Base 2.3.1 + slurmdb_setup_cluster_name_dims@Base 2.3.1 + slurmdb_slurmdbd_free_id_rc_msg@Base 2.3.1 + slurmdb_slurmdbd_free_list_msg@Base 2.3.1 + slurmdb_slurmdbd_free_rc_msg@Base 2.3.1 + slurmdb_slurmdbd_free_usage_msg@Base 2.3.1 + slurmdb_sort_hierarchical_assoc_list@Base 2.3.1 + slurmdb_str_2_cluster_flags@Base 2.3.1 + slurmdb_tree_name_get@Base 2.3.1 + slurmdb_unpack_account_cond@Base 2.3.1 + slurmdb_unpack_account_rec@Base 2.3.1 + slurmdb_unpack_accounting_rec@Base 2.3.1 + slurmdb_unpack_archive_cond@Base 2.3.1 + slurmdb_unpack_archive_rec@Base 2.3.1 + slurmdb_unpack_association_cond@Base 2.3.1 + slurmdb_unpack_association_rec@Base 2.3.1 + slurmdb_unpack_cluster_accounting_rec@Base 2.3.1 + slurmdb_unpack_cluster_cond@Base 2.3.1 + slurmdb_unpack_cluster_rec@Base 2.3.1 + slurmdb_unpack_coord_rec@Base 2.3.1 + slurmdb_unpack_event_cond@Base 2.3.1 + slurmdb_unpack_event_rec@Base 2.3.1 + slurmdb_unpack_job_cond@Base 2.3.1 + slurmdb_unpack_job_modify_cond@Base 2.3.1 + slurmdb_unpack_job_rec@Base 2.3.1 + slurmdb_unpack_qos_cond@Base 2.3.1 + slurmdb_unpack_qos_rec@Base 2.3.1 + slurmdb_unpack_reservation_cond@Base 2.3.1 + slurmdb_unpack_reservation_rec@Base 2.3.1 + slurmdb_unpack_selected_step@Base 2.3.1 + slurmdb_unpack_step_rec@Base 2.3.1 + slurmdb_unpack_txn_cond@Base 2.3.1 + slurmdb_unpack_txn_rec@Base 2.3.1 + slurmdb_unpack_update_object@Base 2.3.1 + slurmdb_unpack_used_limits@Base 2.3.1 + slurmdb_unpack_user_cond@Base 2.3.1 + slurmdb_unpack_user_rec@Base 2.3.1 + slurmdb_unpack_wckey_cond@Base 2.3.1 + slurmdb_unpack_wckey_rec@Base 2.3.1 diff -Nru slurm-llnl-2.2.7/debian/libslurmdb22.symbols slurm-llnl-2.3.2/debian/libslurmdb22.symbols --- slurm-llnl-2.2.7/debian/libslurmdb22.symbols 2011-04-04 13:39:29.000000000 +0000 +++ slurm-llnl-2.3.2/debian/libslurmdb22.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,870 +0,0 @@ -libslurmdb.so.22 libslurmdb22 #MINVER# - slurm_accept_msg_conn@Base 2.2.0 - slurm_accept_stream@Base 2.2.0 - slurm_accounting_enforce_string@Base 2.2.0 - slurm_acct_storage_fini@Base 2.2.0 - slurm_acct_storage_init@Base 2.2.0 - slurm_add_slash_to_quotes@Base 2.2.0 - slurm_addto_char_list@Base 2.2.0 - slurm_allocate_resources@Base 2.2.0 - slurm_allocate_resources_blocking@Base 2.2.0 - slurm_allocation_lookup@Base 2.2.0 - slurm_allocation_lookup_lite@Base 2.2.0 - slurm_allocation_msg_thr_create@Base 2.2.0 - slurm_allocation_msg_thr_destroy@Base 2.2.0 - slurm_api_clear_config@Base 2.2.0 - slurm_api_set_conf_file@Base 2.2.0 - slurm_api_set_default_config@Base 2.2.0 - slurm_api_version@Base 2.2.0 - slurm_arg_count@Base 2.2.0 - slurm_arg_idx_by_name@Base 2.2.0 - slurm_arg_name_by_idx@Base 2.2.0 - slurm_auth_context_create@Base 2.2.0 - slurm_auth_fini@Base 2.2.0 - slurm_auth_get_arg_desc@Base 2.2.0 - slurm_auth_init@Base 2.2.0 - slurm_bg_block_state_string@Base 2.2.0 - slurm_bit_alloc@Base 2.2.0 - slurm_bit_and@Base 2.2.0 - slurm_bit_clear@Base 2.2.0 - slurm_bit_clear_count@Base 2.2.0 - slurm_bit_copy@Base 2.2.0 - slurm_bit_copybits@Base 2.2.0 - slurm_bit_equal@Base 2.2.0 - slurm_bit_ffc@Base 2.2.0 - slurm_bit_ffs@Base 2.2.0 - slurm_bit_fill_gaps@Base 2.2.0 - slurm_bit_fls@Base 2.2.0 - slurm_bit_fmt@Base 2.2.0 - slurm_bit_fmt_binmask@Base 2.2.0 - slurm_bit_fmt_hexmask@Base 2.2.0 - slurm_bit_free@Base 2.2.0 - slurm_bit_get_bit_num@Base 2.2.0 - slurm_bit_get_pos_num@Base 2.2.0 - slurm_bit_nclear@Base 2.2.0 - slurm_bit_nffc@Base 2.2.0 - slurm_bit_nffs@Base 2.2.0 - slurm_bit_noc@Base 2.2.0 - slurm_bit_not@Base 2.2.0 - slurm_bit_nset@Base 2.2.0 - slurm_bit_nset_max_count@Base 2.2.0 - slurm_bit_or@Base 2.2.0 - slurm_bit_overlap@Base 2.2.0 - slurm_bit_pick_cnt@Base 2.2.0 - slurm_bit_realloc@Base 2.2.0 - slurm_bit_rotate@Base 2.2.0 - slurm_bit_rotate_copy@Base 2.2.0 - slurm_bit_set@Base 2.2.0 - slurm_bit_set_count@Base 2.2.0 - slurm_bit_size@Base 2.2.0 - slurm_bit_super_set@Base 2.2.0 - slurm_bit_test@Base 2.2.0 - slurm_bit_unfmt@Base 2.2.0 - slurm_bit_unfmt_binmask@Base 2.2.0 - slurm_bit_unfmt_hexmask@Base 2.2.0 - slurm_bitfmt2int@Base 2.2.0 - slurm_checkpoint_able@Base 2.2.0 - slurm_checkpoint_complete@Base 2.2.0 - slurm_checkpoint_create@Base 2.2.0 - slurm_checkpoint_disable@Base 2.2.0 - slurm_checkpoint_enable@Base 2.2.0 - slurm_checkpoint_error@Base 2.2.0 - slurm_checkpoint_requeue@Base 2.2.0 - slurm_checkpoint_restart@Base 2.2.0 - slurm_checkpoint_task_complete@Base 2.2.0 - slurm_checkpoint_tasks@Base 2.2.0 - slurm_checkpoint_vacate@Base 2.2.0 - slurm_clear_trigger@Base 2.2.0 - slurm_close_accepted_conn@Base 2.2.0 - slurm_close_slurmdbd_conn@Base 2.2.0 - slurm_close_stream@Base 2.2.0 - slurm_complete_job@Base 2.2.0 - slurm_conf_destroy@Base 2.2.0 - slurm_conf_downnodes_array@Base 2.2.0 - slurm_conf_expand_slurmd_path@Base 2.2.0 - slurm_conf_get_addr@Base 2.2.0 - slurm_conf_get_aliased_nodename@Base 2.2.0 - slurm_conf_get_aliases@Base 2.2.4 - slurm_conf_get_cpus_sct@Base 2.2.0 - slurm_conf_get_hostname@Base 2.2.0 - slurm_conf_get_nodeaddr@Base 2.2.0 - slurm_conf_get_nodename@Base 2.2.0 - slurm_conf_get_port@Base 2.2.0 - slurm_conf_init@Base 2.2.0 - slurm_conf_install_fork_handlers@Base 2.2.0 - slurm_conf_lock@Base 2.2.0 - slurm_conf_mutex_init@Base 2.2.0 - slurm_conf_nodename_array@Base 2.2.0 - slurm_conf_options@Base 2.2.0 - slurm_conf_partition_array@Base 2.2.0 - slurm_conf_reinit@Base 2.2.0 - slurm_conf_unlock@Base 2.2.0 - slurm_conn_type_string@Base 2.2.0 - slurm_create_buf@Base 2.2.0 - slurm_create_partition@Base 2.2.0 - slurm_create_reservation@Base 2.2.0 - slurm_cred_begin_expiration@Base 2.2.0 - slurm_cred_copy@Base 2.2.0 - slurm_cred_create@Base 2.2.0 - slurm_cred_creator_ctx_create@Base 2.2.0 - slurm_cred_ctx_destroy@Base 2.2.0 - slurm_cred_ctx_get@Base 2.2.0 - slurm_cred_ctx_key_update@Base 2.2.0 - slurm_cred_ctx_pack@Base 2.2.0 - slurm_cred_ctx_set@Base 2.2.0 - slurm_cred_ctx_unpack@Base 2.2.0 - slurm_cred_destroy@Base 2.2.0 - slurm_cred_faker@Base 2.2.0 - slurm_cred_free_args@Base 2.2.0 - slurm_cred_get_args@Base 2.2.0 - slurm_cred_get_signature@Base 2.2.0 - slurm_cred_handle_reissue@Base 2.2.0 - slurm_cred_insert_jobid@Base 2.2.0 - slurm_cred_jobid_cached@Base 2.2.0 - slurm_cred_pack@Base 2.2.0 - slurm_cred_print@Base 2.2.0 - slurm_cred_revoke@Base 2.2.0 - slurm_cred_revoked@Base 2.2.0 - slurm_cred_rewind@Base 2.2.0 - slurm_cred_unpack@Base 2.2.0 - slurm_cred_verifier_ctx_create@Base 2.2.0 - slurm_cred_verify@Base 2.2.0 - slurm_crypto_fini@Base 2.2.0 - slurm_ctl_conf_2_key_pairs@Base 2.2.0 - slurm_debug2@Base 2.2.0 - slurm_debug3@Base 2.2.0 - slurm_debug4@Base 2.2.0 - slurm_debug5@Base 2.2.0 - slurm_debug@Base 2.2.0 - slurm_delete_partition@Base 2.2.0 - slurm_delete_reservation@Base 2.2.0 - slurm_destroy_association_shares_object@Base 2.2.0 - slurm_destroy_char@Base 2.2.0 - slurm_destroy_config_key_pair@Base 2.2.0 - slurm_destroy_priority_factors_object@Base 2.2.0 - slurm_destroy_uint32_ptr@Base 2.2.0 - slurm_dump_cleanup_list@Base 2.2.0 - slurm_env_array_append@Base 2.2.0 - slurm_env_array_append_fmt@Base 2.2.0 - slurm_env_array_copy@Base 2.2.0 - slurm_env_array_create@Base 2.2.0 - slurm_env_array_free@Base 2.2.0 - slurm_env_array_merge@Base 2.2.0 - slurm_env_array_overwrite@Base 2.2.0 - slurm_env_array_overwrite_fmt@Base 2.2.0 - slurm_error@Base 2.2.0 - slurm_fatal@Base 2.2.0 - slurm_fatal_add_cleanup@Base 2.2.0 - slurm_fatal_add_cleanup_job@Base 2.2.0 - slurm_fatal_cleanup@Base 2.2.0 - slurm_fatal_remove_cleanup@Base 2.2.0 - slurm_fatal_remove_cleanup_job@Base 2.2.0 - slurm_fd_read_n@Base 2.2.0 - slurm_fd_set_blocking@Base 2.2.0 - slurm_fd_set_nonblocking@Base 2.2.0 - slurm_fd_write_n@Base 2.2.0 - slurm_free_accounting_update_msg@Base 2.2.0 - slurm_free_block_info@Base 2.2.0 - slurm_free_block_info_members@Base 2.2.0 - slurm_free_block_info_msg@Base 2.2.0 - slurm_free_block_info_request_msg@Base 2.2.0 - slurm_free_buf@Base 2.2.0 - slurm_free_checkpoint_comp_msg@Base 2.2.0 - slurm_free_checkpoint_msg@Base 2.2.0 - slurm_free_checkpoint_resp_msg@Base 2.2.0 - slurm_free_checkpoint_task_comp_msg@Base 2.2.0 - slurm_free_checkpoint_tasks_msg@Base 2.2.0 - slurm_free_complete_batch_script_msg@Base 2.2.0 - slurm_free_complete_job_allocation_msg@Base 2.2.0 - slurm_free_ctl_conf@Base 2.2.0 - slurm_free_delete_part_msg@Base 2.2.0 - slurm_free_epilog_complete_msg@Base 2.2.0 - slurm_free_file_bcast_msg@Base 2.2.0 - slurm_free_get_kvs_msg@Base 2.2.0 - slurm_free_job_alloc_info_msg@Base 2.2.0 - slurm_free_job_alloc_info_response_msg@Base 2.2.0 - slurm_free_job_desc_msg@Base 2.2.0 - slurm_free_job_id_msg@Base 2.2.0 - slurm_free_job_id_request_msg@Base 2.2.0 - slurm_free_job_id_response_msg@Base 2.2.0 - slurm_free_job_info@Base 2.2.0 - slurm_free_job_info_members@Base 2.2.0 - slurm_free_job_info_msg@Base 2.2.0 - slurm_free_job_info_request_msg@Base 2.2.0 - slurm_free_job_launch_msg@Base 2.2.0 - slurm_free_job_notify_msg@Base 2.2.0 - slurm_free_job_step_create_request_msg@Base 2.2.0 - slurm_free_job_step_create_response_msg@Base 2.2.0 - slurm_free_job_step_id_msg@Base 2.2.0 - slurm_free_job_step_info_members@Base 2.2.0 - slurm_free_job_step_info_request_msg@Base 2.2.0 - slurm_free_job_step_info_response_msg@Base 2.2.0 - slurm_free_job_step_kill_msg@Base 2.2.0 - slurm_free_job_step_pids@Base 2.2.0 - slurm_free_job_step_stat@Base 2.2.0 - slurm_free_kill_job_msg@Base 2.2.0 - slurm_free_kill_tasks_msg@Base 2.2.0 - slurm_free_kvs_comm_set@Base 2.2.0 - slurm_free_last_update_msg@Base 2.2.0 - slurm_free_launch_tasks_request_msg@Base 2.2.0 - slurm_free_launch_tasks_response_msg@Base 2.2.0 - slurm_free_msg@Base 2.2.0 - slurm_free_msg_data@Base 2.2.0 - slurm_free_node_info_members@Base 2.2.0 - slurm_free_node_info_msg@Base 2.2.0 - slurm_free_node_info_request_msg@Base 2.2.0 - slurm_free_node_registration_status_msg@Base 2.2.0 - slurm_free_part_info_request_msg@Base 2.2.0 - slurm_free_partition_info_members@Base 2.2.0 - slurm_free_partition_info_msg@Base 2.2.0 - slurm_free_priority_factors_request_msg@Base 2.2.0 - slurm_free_priority_factors_response_msg@Base 2.2.0 - slurm_free_reattach_tasks_request_msg@Base 2.2.0 - slurm_free_reattach_tasks_response_msg@Base 2.2.0 - slurm_free_reservation_info_msg@Base 2.2.0 - slurm_free_reserve_info_members@Base 2.2.0 - slurm_free_resource_allocation_response_msg@Base 2.2.0 - slurm_free_resv_desc_msg@Base 2.2.0 - slurm_free_resv_info_request_msg@Base 2.2.0 - slurm_free_resv_name_msg@Base 2.2.0 - slurm_free_return_code_msg@Base 2.2.0 - slurm_free_sbcast_cred_msg@Base 2.2.0 - slurm_free_set_debug_level_msg@Base 2.2.0 - slurm_free_shares_request_msg@Base 2.2.0 - slurm_free_shares_response_msg@Base 2.2.0 - slurm_free_shutdown_msg@Base 2.2.0 - slurm_free_signal_job_msg@Base 2.2.0 - slurm_free_slurmd_status@Base 2.2.0 - slurm_free_srun_exec_msg@Base 2.2.0 - slurm_free_srun_job_complete_msg@Base 2.2.0 - slurm_free_srun_node_fail_msg@Base 2.2.0 - slurm_free_srun_ping_msg@Base 2.2.0 - slurm_free_srun_step_missing_msg@Base 2.2.0 - slurm_free_srun_timeout_msg@Base 2.2.0 - slurm_free_srun_user_msg@Base 2.2.0 - slurm_free_step_complete_msg@Base 2.2.0 - slurm_free_submit_response_response_msg@Base 2.2.0 - slurm_free_suspend_msg@Base 2.2.0 - slurm_free_task_exit_msg@Base 2.2.0 - slurm_free_task_user_managed_io_stream_msg@Base 2.2.0 - slurm_free_topo_info_msg@Base 2.2.0 - slurm_free_trigger_msg@Base 2.2.0 - slurm_free_update_job_time_msg@Base 2.2.0 - slurm_free_update_node_msg@Base 2.2.0 - slurm_free_update_part_msg@Base 2.2.0 - slurm_free_update_step_msg@Base 2.2.0 - slurm_free_will_run_response_msg@Base 2.2.0 - slurm_get_accounting_storage_backup_host@Base 2.2.0 - slurm_get_accounting_storage_enforce@Base 2.2.0 - slurm_get_accounting_storage_host@Base 2.2.0 - slurm_get_accounting_storage_loc@Base 2.2.0 - slurm_get_accounting_storage_pass@Base 2.2.0 - slurm_get_accounting_storage_port@Base 2.2.0 - slurm_get_accounting_storage_type@Base 2.2.0 - slurm_get_accounting_storage_user@Base 2.2.0 - slurm_get_addr@Base 2.2.0 - slurm_get_api_config@Base 2.2.0 - slurm_get_auth_type@Base 2.2.0 - slurm_get_avail_procs@Base 2.2.0 - slurm_get_batch_start_timeout@Base 2.2.0 - slurm_get_checkpoint_type@Base 2.2.0 - slurm_get_cluster_name@Base 2.2.0 - slurm_get_complete_wait@Base 2.2.0 - slurm_get_controller_addr_spec@Base 2.2.0 - slurm_get_crypto_type@Base 2.2.0 - slurm_get_debug_flags@Base 2.2.0 - slurm_get_def_mem_per_cpu@Base 2.2.0 - slurm_get_end_time@Base 2.2.0 - slurm_get_env_timeout@Base 2.2.0 - slurm_get_epilog_msg_time@Base 2.2.0 - slurm_get_errno@Base 2.2.0 - slurm_get_fast_schedule@Base 2.2.0 - slurm_get_gres_plugins@Base 2.2.0 - slurm_get_hash_val@Base 2.2.0 - slurm_get_health_check_program@Base 2.2.0 - slurm_get_ip_str@Base 2.2.0 - slurm_get_is_association_based_accounting@Base 2.2.0 - slurm_get_job_steps@Base 2.2.0 - slurm_get_job_submit_plugins@Base 2.2.0 - slurm_get_jobacct_gather_freq@Base 2.2.0 - slurm_get_jobacct_gather_type@Base 2.2.0 - slurm_get_jobcomp_host@Base 2.2.0 - slurm_get_jobcomp_loc@Base 2.2.0 - slurm_get_jobcomp_pass@Base 2.2.0 - slurm_get_jobcomp_port@Base 2.2.0 - slurm_get_jobcomp_type@Base 2.2.0 - slurm_get_jobcomp_user@Base 2.2.0 - slurm_get_kill_on_bad_exit@Base 2.2.0 - slurm_get_kvs_comm_set@Base 2.2.0 - slurm_get_max_mem_per_cpu@Base 2.2.0 - slurm_get_mpi_default@Base 2.2.0 - slurm_get_mpi_params@Base 2.2.0 - slurm_get_msg_timeout@Base 2.2.0 - slurm_get_peer_addr@Base 2.2.0 - slurm_get_plugin_dir@Base 2.2.0 - slurm_get_preempt_mode@Base 2.2.0 - slurm_get_preempt_type@Base 2.2.0 - slurm_get_priority_calc_period@Base 2.2.0 - slurm_get_priority_decay_hl@Base 2.2.0 - slurm_get_priority_favor_small@Base 2.2.0 - slurm_get_priority_max_age@Base 2.2.0 - slurm_get_priority_reset_period@Base 2.2.0 - slurm_get_priority_type@Base 2.2.0 - slurm_get_priority_weight_age@Base 2.2.0 - slurm_get_priority_weight_fairshare@Base 2.2.0 - slurm_get_priority_weight_job_size@Base 2.2.0 - slurm_get_priority_weight_partition@Base 2.2.0 - slurm_get_priority_weight_qos@Base 2.2.0 - slurm_get_private_data@Base 2.2.0 - slurm_get_proctrack_type@Base 2.2.0 - slurm_get_propagate_prio_process@Base 2.2.0 - slurm_get_rem_time@Base 2.2.0 - slurm_get_resume_timeout@Base 2.2.0 - slurm_get_return_code@Base 2.2.0 - slurm_get_root_filter@Base 2.2.0 - slurm_get_sched_params@Base 2.2.0 - slurm_get_sched_port@Base 2.2.0 - slurm_get_sched_type@Base 2.2.0 - slurm_get_select_jobinfo@Base 2.2.0 - slurm_get_select_nodeinfo@Base 2.2.0 - slurm_get_select_type@Base 2.2.0 - slurm_get_slurm_user_id@Base 2.2.0 - slurm_get_slurmd_port@Base 2.2.0 - slurm_get_slurmd_user_id@Base 2.2.0 - slurm_get_srun_epilog@Base 2.2.0 - slurm_get_srun_prolog@Base 2.2.0 - slurm_get_state_save_location@Base 2.2.0 - slurm_get_stream_addr@Base 2.2.0 - slurm_get_suspend_time@Base 2.2.0 - slurm_get_suspend_timeout@Base 2.2.0 - slurm_get_switch_type@Base 2.2.0 - slurm_get_task_epilog@Base 2.2.0 - slurm_get_task_plugin@Base 2.2.0 - slurm_get_task_plugin_param@Base 2.2.0 - slurm_get_task_prolog@Base 2.2.0 - slurm_get_topology_plugin@Base 2.2.0 - slurm_get_track_wckey@Base 2.2.0 - slurm_get_tree_width@Base 2.2.0 - slurm_get_triggers@Base 2.2.0 - slurm_get_vsize_factor@Base 2.2.0 - slurm_get_wait_time@Base 2.2.0 - slurm_getenvp@Base 2.2.0 - slurm_grow_buf@Base 2.2.0 - slurm_hostlist_copy@Base 2.2.0 - slurm_hostlist_count@Base 2.2.0 - slurm_hostlist_create@Base 2.2.0 - slurm_hostlist_delete@Base 2.2.0 - slurm_hostlist_delete_host@Base 2.2.0 - slurm_hostlist_delete_nth@Base 2.2.0 - slurm_hostlist_deranged_string@Base 2.2.0 - slurm_hostlist_deranged_string_malloc@Base 2.2.0 - slurm_hostlist_deranged_string_xmalloc@Base 2.2.0 - slurm_hostlist_destroy@Base 2.2.0 - slurm_hostlist_find@Base 2.2.0 - slurm_hostlist_iterator_create@Base 2.2.0 - slurm_hostlist_iterator_destroy@Base 2.2.0 - slurm_hostlist_iterator_reset@Base 2.2.0 - slurm_hostlist_next@Base 2.2.0 - slurm_hostlist_next_range@Base 2.2.0 - slurm_hostlist_nth@Base 2.2.0 - slurm_hostlist_pop@Base 2.2.0 - slurm_hostlist_pop_range@Base 2.2.0 - slurm_hostlist_push@Base 2.2.0 - slurm_hostlist_push_host@Base 2.2.0 - slurm_hostlist_push_list@Base 2.2.0 - slurm_hostlist_ranged_string@Base 2.2.0 - slurm_hostlist_ranged_string_malloc@Base 2.2.0 - slurm_hostlist_ranged_string_xmalloc@Base 2.2.0 - slurm_hostlist_remove@Base 2.2.0 - slurm_hostlist_shift@Base 2.2.0 - slurm_hostlist_shift_range@Base 2.2.0 - slurm_hostlist_soft@Base 2.2.0 - slurm_hostlist_uniq@Base 2.2.0 - slurm_hostset_copy@Base 2.2.0 - slurm_hostset_count@Base 2.2.0 - slurm_hostset_create@Base 2.2.0 - slurm_hostset_delete@Base 2.2.0 - slurm_hostset_destroy@Base 2.2.0 - slurm_hostset_find@Base 2.2.0 - slurm_hostset_insert@Base 2.2.0 - slurm_hostset_nth@Base 2.2.0 - slurm_hostset_shift@Base 2.2.0 - slurm_hostset_shift_range@Base 2.2.0 - slurm_hostset_within@Base 2.2.0 - slurm_info@Base 2.2.0 - slurm_init_buf@Base 2.2.0 - slurm_init_job_desc_msg@Base 2.2.0 - slurm_init_msg_engine@Base 2.2.0 - slurm_init_msg_engine_addrname_port@Base 2.2.0 - slurm_init_msg_engine_port@Base 2.2.0 - slurm_init_part_desc_msg@Base 2.2.0 - slurm_init_resv_desc_msg@Base 2.2.0 - slurm_init_update_block_msg@Base 2.2.0 - slurm_init_update_node_msg@Base 2.2.0 - slurm_init_update_step_msg@Base 2.2.0 - slurm_int_and_set_count@Base 2.2.0 - slurm_job_cpus_allocated_on_node@Base 2.2.0 - slurm_job_cpus_allocated_on_node_id@Base 2.2.0 - slurm_job_node_ready@Base 2.2.0 - slurm_job_reason_string@Base 2.2.0 - slurm_job_state_num@Base 2.2.0 - slurm_job_state_string@Base 2.2.0 - slurm_job_state_string_compact@Base 2.2.0 - slurm_job_step_create@Base 2.2.0 - slurm_job_step_get_pids@Base 2.2.0 - slurm_job_step_layout_free@Base 2.2.0 - slurm_job_step_layout_get@Base 2.2.0 - slurm_job_step_pids_free@Base 2.2.0 - slurm_job_step_pids_response_msg_free@Base 2.2.0 - slurm_job_step_stat@Base 2.2.0 - slurm_job_step_stat_free@Base 2.2.0 - slurm_job_step_stat_response_msg_free@Base 2.2.0 - slurm_job_will_run@Base 2.2.0 - slurm_jobacct_common_alloc_jobacct@Base 2.2.0 - slurm_jobacct_common_free_jobacct@Base 2.2.0 - slurm_jobacct_common_pack@Base 2.2.0 - slurm_jobacct_common_unpack@Base 2.2.0 - slurm_jobacct_gather_fini@Base 2.2.0 - slurm_jobacct_gather_init@Base 2.2.0 - slurm_jobinfo_ctx_get@Base 2.2.0 - slurm_kill_job@Base 2.2.0 - slurm_kill_job_step@Base 2.2.0 - slurm_list_append@Base 2.2.0 - slurm_list_append_list@Base 2.2.0 - slurm_list_count@Base 2.2.0 - slurm_list_create@Base 2.2.0 - slurm_list_delete_all@Base 2.2.0 - slurm_list_delete_item@Base 2.2.0 - slurm_list_dequeue@Base 2.2.0 - slurm_list_destroy@Base 2.2.0 - slurm_list_enqueue@Base 2.2.0 - slurm_list_find@Base 2.2.0 - slurm_list_find_first@Base 2.2.0 - slurm_list_flush@Base 2.2.0 - slurm_list_for_each@Base 2.2.0 - slurm_list_insert@Base 2.2.0 - slurm_list_install_fork_handlers@Base 2.2.0 - slurm_list_is_empty@Base 2.2.0 - slurm_list_iterator_create@Base 2.2.0 - slurm_list_iterator_destroy@Base 2.2.0 - slurm_list_iterator_reset@Base 2.2.0 - slurm_list_next@Base 2.2.0 - slurm_list_peek@Base 2.2.0 - slurm_list_pop@Base 2.2.0 - slurm_list_prepend@Base 2.2.0 - slurm_list_push@Base 2.2.0 - slurm_list_remove@Base 2.2.0 - slurm_list_sort@Base 2.2.0 - slurm_list_transfer@Base 2.2.0 - slurm_listen_stream@Base 2.2.0 - slurm_load_block_info@Base 2.2.0 - slurm_load_ctl_conf@Base 2.2.0 - slurm_load_job@Base 2.2.0 - slurm_load_jobs@Base 2.2.0 - slurm_load_node@Base 2.2.0 - slurm_load_partitions@Base 2.2.0 - slurm_load_reservations@Base 2.2.0 - slurm_load_slurmd_status@Base 2.2.0 - slurm_load_topo@Base 2.2.0 - slurm_log_alter@Base 2.2.0 - slurm_log_fini@Base 2.2.0 - slurm_log_flush@Base 2.2.0 - slurm_log_fp@Base 2.2.0 - slurm_log_has_data@Base 2.2.0 - slurm_log_init@Base 2.2.0 - slurm_log_reinit@Base 2.2.0 - slurm_log_set_fpfx@Base 2.2.0 - slurm_make_time_str@Base 2.2.0 - slurm_msg_t_copy@Base 2.2.0 - slurm_msg_t_init@Base 2.2.0 - slurm_net_accept_stream@Base 2.2.0 - slurm_net_set_low_water@Base 2.2.0 - slurm_net_stream_listen@Base 2.2.0 - slurm_node_state_string@Base 2.2.0 - slurm_node_state_string_compact@Base 2.2.0 - slurm_node_use_string@Base 2.2.0 - slurm_notify_job@Base 2.2.0 - slurm_open_controller_conn@Base 2.2.0 - slurm_open_controller_conn_spec@Base 2.2.0 - slurm_open_msg_conn@Base 2.2.0 - slurm_open_slurmdbd_conn@Base 2.2.0 - slurm_open_stream@Base 2.2.0 - slurm_pack16@Base 2.2.0 - slurm_pack16_array@Base 2.2.0 - slurm_pack32@Base 2.2.0 - slurm_pack32_array@Base 2.2.0 - slurm_pack64@Base 2.2.0 - slurm_pack8@Base 2.2.0 - slurm_pack_msg_no_header@Base 2.2.0 - slurm_pack_slurm_addr@Base 2.2.0 - slurm_pack_slurm_addr_array@Base 2.2.0 - slurm_pack_time@Base 2.2.0 - slurm_packmem@Base 2.2.0 - slurm_packmem_array@Base 2.2.0 - slurm_packstr_array@Base 2.2.0 - slurm_parser@Base 2.2.0 - slurm_perror@Base 2.2.0 - slurm_pid2jobid@Base 2.2.0 - slurm_ping@Base 2.2.0 - slurm_plugin_get_syms@Base 2.2.0 - slurm_plugin_load_and_link@Base 2.2.0 - slurm_plugin_strerror@Base 2.2.0 - slurm_plugin_unload@Base 2.2.0 - slurm_plugrack_create@Base 2.2.0 - slurm_plugrack_destroy@Base 2.2.0 - slurm_plugrack_read_dir@Base 2.2.0 - slurm_plugrack_set_major_type@Base 2.2.0 - slurm_plugrack_set_paranoia@Base 2.2.0 - slurm_plugrack_use_by_type@Base 2.2.0 - slurm_pmi_finalize@Base 2.2.0 - slurm_preempt_mode_num@Base 2.2.0 - slurm_preempt_mode_string@Base 2.2.0 - slurm_print_block_info@Base 2.2.0 - slurm_print_block_info_msg@Base 2.2.0 - slurm_print_cpu_bind_help@Base 2.2.0 - slurm_print_ctl_conf@Base 2.2.0 - slurm_print_job_info@Base 2.2.0 - slurm_print_job_info_msg@Base 2.2.0 - slurm_print_job_step_info@Base 2.2.0 - slurm_print_job_step_info_msg@Base 2.2.0 - slurm_print_key_pairs@Base 2.2.0 - slurm_print_launch_task_msg@Base 2.2.0 - slurm_print_mem_bind_help@Base 2.2.0 - slurm_print_node_info_msg@Base 2.2.0 - slurm_print_node_table@Base 2.2.0 - slurm_print_partition_info@Base 2.2.0 - slurm_print_partition_info_msg@Base 2.2.0 - slurm_print_reservation_info@Base 2.2.0 - slurm_print_reservation_info_msg@Base 2.2.0 - slurm_print_slurm_addr@Base 2.2.0 - slurm_print_slurmd_status@Base 2.2.0 - slurm_print_topo_info_msg@Base 2.2.0 - slurm_print_topo_record@Base 2.2.0 - slurm_priority_fini@Base 2.2.0 - slurm_priority_init@Base 2.2.0 - slurm_private_data_string@Base 2.2.0 - slurm_pull_trigger@Base 2.2.0 - slurm_read_hostfile@Base 2.2.0 - slurm_read_stream@Base 2.2.0 - slurm_read_stream_timeout@Base 2.2.0 - slurm_receive_msg@Base 2.2.0 - slurm_receive_msg_and_forward@Base 2.2.0 - slurm_receive_msgs@Base 2.2.0 - slurm_reconfigure@Base 2.2.0 - slurm_requeue@Base 2.2.0 - slurm_reservation_flags_string@Base 2.2.0 - slurm_resume@Base 2.2.0 - slurm_sbcast_lookup@Base 2.2.0 - slurm_select_fini@Base 2.2.0 - slurm_select_init@Base 2.2.0 - slurm_send_addr_recv_msgs@Base 2.2.0 - slurm_send_kvs_comm_set@Base 2.2.0 - slurm_send_node_msg@Base 2.2.0 - slurm_send_only_controller_msg@Base 2.2.0 - slurm_send_only_node_msg@Base 2.2.0 - slurm_send_rc_msg@Base 2.2.0 - slurm_send_recv_controller_msg@Base 2.2.0 - slurm_send_recv_controller_rc_msg@Base 2.2.0 - slurm_send_recv_msgs@Base 2.2.0 - slurm_send_recv_node_msg@Base 2.2.0 - slurm_send_recv_rc_msg_only_one@Base 2.2.0 - slurm_send_recv_slurmdbd_msg@Base 2.2.0 - slurm_send_slurmdbd_msg@Base 2.2.0 - slurm_send_slurmdbd_recv_rc_msg@Base 2.2.0 - slurm_set_accounting_storage_host@Base 2.2.0 - slurm_set_accounting_storage_loc@Base 2.2.0 - slurm_set_accounting_storage_port@Base 2.2.0 - slurm_set_accounting_storage_user@Base 2.2.0 - slurm_set_addr@Base 2.2.0 - slurm_set_addr_any@Base 2.2.0 - slurm_set_addr_char@Base 2.2.0 - slurm_set_addr_uint@Base 2.2.0 - slurm_set_api_config@Base 2.2.0 - slurm_set_auth_type@Base 2.2.0 - slurm_set_debug_level@Base 2.2.0 - slurm_set_jobcomp_port@Base 2.2.0 - slurm_set_schedlog_level@Base 2.2.0 - slurm_set_stream_blocking@Base 2.2.0 - slurm_set_stream_non_blocking@Base 2.2.0 - slurm_set_tree_width@Base 2.2.0 - slurm_set_trigger@Base 2.2.0 - slurm_setenvpf@Base 2.2.0 - slurm_seterrno@Base 2.2.0 - slurm_shutdown@Base 2.2.0 - slurm_shutdown_msg_conn@Base 2.2.0 - slurm_shutdown_msg_engine@Base 2.2.0 - slurm_signal_job@Base 2.2.0 - slurm_signal_job_step@Base 2.2.0 - slurm_sort_char_list_asc@Base 2.2.0 - slurm_sort_char_list_desc@Base 2.2.0 - slurm_sort_key_pairs@Base 2.2.0 - slurm_sprint_block_info@Base 2.2.0 - slurm_sprint_cpu_bind_type@Base 2.2.0 - slurm_sprint_job_info@Base 2.2.0 - slurm_sprint_job_step_info@Base 2.2.0 - slurm_sprint_mem_bind_type@Base 2.2.0 - slurm_sprint_node_table@Base 2.2.0 - slurm_sprint_partition_info@Base 2.2.0 - slurm_sprint_reservation_info@Base 2.2.0 - slurm_step_ctx_create@Base 2.2.0 - slurm_step_ctx_create_no_alloc@Base 2.2.0 - slurm_step_ctx_daemon_per_node_hack@Base 2.2.0 - slurm_step_ctx_destroy@Base 2.2.0 - slurm_step_ctx_get@Base 2.2.0 - slurm_step_ctx_params_t_init@Base 2.2.0 - slurm_step_launch@Base 2.2.0 - slurm_step_launch_abort@Base 2.2.0 - slurm_step_launch_fwd_signal@Base 2.2.0 - slurm_step_launch_params_t_init@Base 2.2.0 - slurm_step_launch_wait_finish@Base 2.2.0 - slurm_step_launch_wait_start@Base 2.2.0 - slurm_step_layout_copy@Base 2.2.0 - slurm_step_layout_create@Base 2.2.0 - slurm_step_layout_destroy@Base 2.2.0 - slurm_step_layout_host_id@Base 2.2.0 - slurm_step_layout_host_name@Base 2.2.0 - slurm_step_layout_type_name@Base 2.2.0 - slurm_strcasestr@Base 2.2.0 - slurm_strerror@Base 2.2.0 - slurm_strlcpy@Base 2.2.0 - slurm_submit_batch_job@Base 2.2.0 - slurm_suspend@Base 2.2.0 - slurm_takeover@Base 2.2.0 - slurm_terminate_job@Base 2.2.0 - slurm_terminate_job_step@Base 2.2.0 - slurm_topo_build_config@Base 2.2.0 - slurm_topo_fini@Base 2.2.0 - slurm_topo_get_node_addr@Base 2.2.0 - slurm_topo_init@Base 2.2.0 - slurm_try_xmalloc@Base 2.2.0 - slurm_try_xrealloc@Base 2.2.0 - slurm_unpack16@Base 2.2.0 - slurm_unpack16_array@Base 2.2.0 - slurm_unpack32@Base 2.2.0 - slurm_unpack32_array@Base 2.2.0 - slurm_unpack64@Base 2.2.0 - slurm_unpack8@Base 2.2.0 - slurm_unpack_block_info_msg@Base 2.2.0 - slurm_unpack_slurm_addr_array@Base 2.2.0 - slurm_unpack_slurm_addr_no_alloc@Base 2.2.0 - slurm_unpack_time@Base 2.2.0 - slurm_unpackmem@Base 2.2.0 - slurm_unpackmem_array@Base 2.2.0 - slurm_unpackmem_malloc@Base 2.2.0 - slurm_unpackmem_ptr@Base 2.2.0 - slurm_unpackmem_xmalloc@Base 2.2.0 - slurm_unpackstr_array@Base 2.2.0 - slurm_unsetenvp@Base 2.2.0 - slurm_update_block@Base 2.2.0 - slurm_update_job@Base 2.2.0 - slurm_update_node@Base 2.2.0 - slurm_update_partition@Base 2.2.0 - slurm_update_reservation@Base 2.2.0 - slurm_update_step@Base 2.2.0 - slurm_verbose@Base 2.2.0 - slurm_verify_cpu_bind@Base 2.2.0 - slurm_verify_mem_bind@Base 2.2.0 - slurm_write_stream@Base 2.2.0 - slurm_write_stream_timeout@Base 2.2.0 - slurm_xassert_failed@Base 2.2.0 - slurm_xbasename@Base 2.2.0 - slurm_xfer_buf_data@Base 2.2.0 - slurm_xfree@Base 2.2.0 - slurm_xmalloc@Base 2.2.0 - slurm_xmemcat@Base 2.2.0 - slurm_xrealloc@Base 2.2.0 - slurm_xshort_hostname@Base 2.2.0 - slurm_xsignal@Base 2.2.0 - slurm_xsignal_block@Base 2.2.0 - slurm_xsignal_save_mask@Base 2.2.0 - slurm_xsignal_set_mask@Base 2.2.0 - slurm_xsignal_sigset_create@Base 2.2.0 - slurm_xsignal_unblock@Base 2.2.0 - slurm_xsize@Base 2.2.0 - slurm_xslurm_strerrorcat@Base 2.2.0 - slurm_xstrcat@Base 2.2.0 - slurm_xstrcatchar@Base 2.2.0 - slurm_xstrdup@Base 2.2.0 - slurm_xstrdup_printf@Base 2.2.0 - slurm_xstrfmtcat@Base 2.2.0 - slurm_xstrftimecat@Base 2.2.0 - slurm_xstring_is_whitespace@Base 2.2.0 - slurm_xstrncat@Base 2.2.0 - slurm_xstrndup@Base 2.2.0 - slurm_xstrstrip@Base 2.2.0 - slurm_xstrsubstitute@Base 2.2.0 - slurm_xstrtolower@Base 2.2.0 - slurmdb_accounts_add@Base 2.2.0 - slurmdb_accounts_get@Base 2.2.0 - slurmdb_accounts_modify@Base 2.2.0 - slurmdb_accounts_remove@Base 2.2.0 - slurmdb_addto_qos_char_list@Base 2.2.0 - slurmdb_admin_level_str@Base 2.2.0 - slurmdb_archive@Base 2.2.0 - slurmdb_archive_load@Base 2.2.0 - slurmdb_associations_add@Base 2.2.0 - slurmdb_associations_get@Base 2.2.0 - slurmdb_associations_modify@Base 2.2.0 - slurmdb_associations_remove@Base 2.2.0 - slurmdb_cluster_flags_2_str@Base 2.2.0 - slurmdb_clusters_add@Base 2.2.0 - slurmdb_clusters_get@Base 2.2.0 - slurmdb_clusters_modify@Base 2.2.0 - slurmdb_clusters_remove@Base 2.2.0 - slurmdb_config_get@Base 2.2.0 - slurmdb_connection_close@Base 2.2.0 - slurmdb_connection_get@Base 2.2.0 - slurmdb_coord_add@Base 2.2.0 - slurmdb_coord_remove@Base 2.2.0 - slurmdb_create_job_rec@Base 2.2.0 - slurmdb_create_step_rec@Base 2.2.0 - slurmdb_destroy_account_cond@Base 2.2.0 - slurmdb_destroy_account_rec@Base 2.2.0 - slurmdb_destroy_accounting_rec@Base 2.2.0 - slurmdb_destroy_archive_cond@Base 2.2.0 - slurmdb_destroy_archive_rec@Base 2.2.0 - slurmdb_destroy_association_cond@Base 2.2.0 - slurmdb_destroy_association_rec@Base 2.2.0 - slurmdb_destroy_cluster_accounting_rec@Base 2.2.0 - slurmdb_destroy_cluster_cond@Base 2.2.0 - slurmdb_destroy_cluster_rec@Base 2.2.0 - slurmdb_destroy_coord_rec@Base 2.2.0 - slurmdb_destroy_event_cond@Base 2.2.0 - slurmdb_destroy_event_rec@Base 2.2.0 - slurmdb_destroy_hierarchical_rec@Base 2.2.0 - slurmdb_destroy_job_cond@Base 2.2.0 - slurmdb_destroy_job_modify_cond@Base 2.2.0 - slurmdb_destroy_job_rec@Base 2.2.0 - slurmdb_destroy_print_tree@Base 2.2.0 - slurmdb_destroy_qos_cond@Base 2.2.0 - slurmdb_destroy_qos_rec@Base 2.2.0 - slurmdb_destroy_report_acct_grouping@Base 2.2.0 - slurmdb_destroy_report_assoc_rec@Base 2.2.0 - slurmdb_destroy_report_cluster_grouping@Base 2.2.0 - slurmdb_destroy_report_cluster_rec@Base 2.2.0 - slurmdb_destroy_report_job_grouping@Base 2.2.0 - slurmdb_destroy_report_user_rec@Base 2.2.0 - slurmdb_destroy_reservation_cond@Base 2.2.0 - slurmdb_destroy_reservation_rec@Base 2.2.0 - slurmdb_destroy_selected_step@Base 2.2.0 - slurmdb_destroy_step_rec@Base 2.2.0 - slurmdb_destroy_txn_cond@Base 2.2.0 - slurmdb_destroy_txn_rec@Base 2.2.0 - slurmdb_destroy_update_object@Base 2.2.0 - slurmdb_destroy_update_shares_rec@Base 2.2.0 - slurmdb_destroy_used_limits@Base 2.2.0 - slurmdb_destroy_user_cond@Base 2.2.0 - slurmdb_destroy_user_rec@Base 2.2.0 - slurmdb_destroy_wckey_cond@Base 2.2.0 - slurmdb_destroy_wckey_rec@Base 2.2.0 - slurmdb_events_get@Base 2.2.0 - slurmdb_get_acct_hierarchical_rec_list@Base 2.2.0 - slurmdb_get_hierarchical_sorted_assoc_list@Base 2.2.0 - slurmdb_get_info_cluster@Base 2.2.0 - slurmdb_init_association_rec@Base 2.2.0 - slurmdb_init_cluster_cond@Base 2.2.0 - slurmdb_init_cluster_rec@Base 2.2.0 - slurmdb_init_qos_rec@Base 2.2.0 - slurmdb_init_wckey_rec@Base 2.2.0 - slurmdb_jobs_get@Base 2.2.0 - slurmdb_pack_account_cond@Base 2.2.0 - slurmdb_pack_account_rec@Base 2.2.0 - slurmdb_pack_accounting_rec@Base 2.2.0 - slurmdb_pack_archive_cond@Base 2.2.0 - slurmdb_pack_archive_rec@Base 2.2.0 - slurmdb_pack_association_cond@Base 2.2.0 - slurmdb_pack_association_rec@Base 2.2.0 - slurmdb_pack_cluster_accounting_rec@Base 2.2.0 - slurmdb_pack_cluster_cond@Base 2.2.0 - slurmdb_pack_cluster_rec@Base 2.2.0 - slurmdb_pack_coord_rec@Base 2.2.0 - slurmdb_pack_event_cond@Base 2.2.0 - slurmdb_pack_event_rec@Base 2.2.0 - slurmdb_pack_job_cond@Base 2.2.0 - slurmdb_pack_job_modify_cond@Base 2.2.0 - slurmdb_pack_job_rec@Base 2.2.0 - slurmdb_pack_qos_cond@Base 2.2.0 - slurmdb_pack_qos_rec@Base 2.2.0 - slurmdb_pack_reservation_cond@Base 2.2.0 - slurmdb_pack_reservation_rec@Base 2.2.0 - slurmdb_pack_selected_step@Base 2.2.0 - slurmdb_pack_step_rec@Base 2.2.0 - slurmdb_pack_txn_cond@Base 2.2.0 - slurmdb_pack_txn_rec@Base 2.2.0 - slurmdb_pack_update_object@Base 2.2.0 - slurmdb_pack_used_limits@Base 2.2.0 - slurmdb_pack_user_cond@Base 2.2.0 - slurmdb_pack_user_rec@Base 2.2.0 - slurmdb_pack_wckey_cond@Base 2.2.0 - slurmdb_pack_wckey_rec@Base 2.2.0 - slurmdb_parse_purge@Base 2.2.0 - slurmdb_problem_str_get@Base 2.2.0 - slurmdb_problems_get@Base 2.2.0 - slurmdb_purge_string@Base 2.2.0 - slurmdb_qos_add@Base 2.2.0 - slurmdb_qos_flags_str@Base 2.2.0 - slurmdb_qos_get@Base 2.2.0 - slurmdb_qos_modify@Base 2.2.0 - slurmdb_qos_remove@Base 2.2.0 - slurmdb_qos_str@Base 2.2.0 - slurmdb_report_cluster_account_by_user@Base 2.2.0 - slurmdb_report_cluster_user_by_account@Base 2.2.0 - slurmdb_report_cluster_user_by_wckey@Base 2.2.0 - slurmdb_report_cluster_wckey_by_user@Base 2.2.0 - slurmdb_report_job_sizes_grouped_by_top_account@Base 2.2.0 - slurmdb_report_job_sizes_grouped_by_top_account_then_wckey@Base 2.2.0 - slurmdb_report_job_sizes_grouped_by_wckey@Base 2.2.0 - slurmdb_report_set_start_end_time@Base 2.2.0 - slurmdb_report_user_top_usage@Base 2.2.0 - slurmdb_reservations_get@Base 2.2.0 - slurmdb_send_accounting_update@Base 2.2.1 - slurmdb_setup_cluster_dims@Base 2.2.0 - slurmdb_setup_cluster_flags@Base 2.2.0 - slurmdb_slurmdbd_free_id_rc_msg@Base 2.2.0 - slurmdb_slurmdbd_free_list_msg@Base 2.2.0 - slurmdb_slurmdbd_free_rc_msg@Base 2.2.0 - slurmdb_slurmdbd_free_usage_msg@Base 2.2.0 - slurmdb_sort_hierarchical_assoc_list@Base 2.2.0 - slurmdb_str_2_cluster_flags@Base 2.2.0 - slurmdb_tree_name_get@Base 2.2.0 - slurmdb_txn_get@Base 2.2.0 - slurmdb_unpack_account_cond@Base 2.2.0 - slurmdb_unpack_account_rec@Base 2.2.0 - slurmdb_unpack_accounting_rec@Base 2.2.0 - slurmdb_unpack_archive_cond@Base 2.2.0 - slurmdb_unpack_archive_rec@Base 2.2.0 - slurmdb_unpack_association_cond@Base 2.2.0 - slurmdb_unpack_association_rec@Base 2.2.0 - slurmdb_unpack_cluster_accounting_rec@Base 2.2.0 - slurmdb_unpack_cluster_cond@Base 2.2.0 - slurmdb_unpack_cluster_rec@Base 2.2.0 - slurmdb_unpack_coord_rec@Base 2.2.0 - slurmdb_unpack_event_cond@Base 2.2.0 - slurmdb_unpack_event_rec@Base 2.2.0 - slurmdb_unpack_job_cond@Base 2.2.0 - slurmdb_unpack_job_modify_cond@Base 2.2.0 - slurmdb_unpack_job_rec@Base 2.2.0 - slurmdb_unpack_qos_cond@Base 2.2.0 - slurmdb_unpack_qos_rec@Base 2.2.0 - slurmdb_unpack_reservation_cond@Base 2.2.0 - slurmdb_unpack_reservation_rec@Base 2.2.0 - slurmdb_unpack_selected_step@Base 2.2.0 - slurmdb_unpack_step_rec@Base 2.2.0 - slurmdb_unpack_txn_cond@Base 2.2.0 - slurmdb_unpack_txn_rec@Base 2.2.0 - slurmdb_unpack_update_object@Base 2.2.0 - slurmdb_unpack_used_limits@Base 2.2.0 - slurmdb_unpack_user_cond@Base 2.2.0 - slurmdb_unpack_user_rec@Base 2.2.0 - slurmdb_unpack_wckey_cond@Base 2.2.0 - slurmdb_unpack_wckey_rec@Base 2.2.0 - slurmdb_usage_get@Base 2.2.0 - slurmdb_usage_roll@Base 2.2.0 - slurmdb_users_add@Base 2.2.0 - slurmdb_users_get@Base 2.2.0 - slurmdb_users_modify@Base 2.2.0 - slurmdb_users_remove@Base 2.2.0 - slurmdb_wckeys_add@Base 2.2.0 - slurmdb_wckeys_get@Base 2.2.0 - slurmdb_wckeys_modify@Base 2.2.0 - slurmdb_wckeys_remove@Base 2.2.0 diff -Nru slurm-llnl-2.2.7/debian/libslurmdb23.symbols slurm-llnl-2.3.2/debian/libslurmdb23.symbols --- slurm-llnl-2.2.7/debian/libslurmdb23.symbols 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/debian/libslurmdb23.symbols 2011-10-27 08:24:31.000000000 +0000 @@ -0,0 +1,911 @@ +libslurmdb.so.23 libslurmdb23 #MINVER# + slurm_accept_msg_conn@Base 2.2.0 + slurm_accept_stream@Base 2.2.0 + slurm_accounting_enforce_string@Base 2.2.0 + slurm_acct_storage_fini@Base 2.2.0 + slurm_acct_storage_init@Base 2.2.0 + slurm_add_slash_to_quotes@Base 2.2.0 + slurm_addto_char_list@Base 2.2.0 + slurm_allocate_resources@Base 2.2.0 + slurm_allocate_resources_blocking@Base 2.2.0 + slurm_allocation_lookup@Base 2.2.0 + slurm_allocation_lookup_lite@Base 2.2.0 + slurm_allocation_msg_thr_create@Base 2.2.0 + slurm_allocation_msg_thr_destroy@Base 2.2.0 + slurm_api_clear_config@Base 2.2.0 + slurm_api_set_conf_file@Base 2.2.0 + slurm_api_set_default_config@Base 2.2.0 + slurm_api_version@Base 2.2.0 + slurm_arg_count@Base 2.2.0 + slurm_arg_idx_by_name@Base 2.2.0 + slurm_arg_name_by_idx@Base 2.2.0 + slurm_auth_context_create@Base 2.2.0 + slurm_auth_fini@Base 2.2.0 + slurm_auth_get_arg_desc@Base 2.2.0 + slurm_auth_init@Base 2.2.0 + slurm_bg_block_state_string@Base 2.2.0 + slurm_bit_alloc@Base 2.2.0 + slurm_bit_and@Base 2.2.0 + slurm_bit_clear@Base 2.2.0 + slurm_bit_clear_count@Base 2.2.0 + slurm_bit_copy@Base 2.2.0 + slurm_bit_copybits@Base 2.2.0 + slurm_bit_equal@Base 2.2.0 + slurm_bit_ffc@Base 2.2.0 + slurm_bit_ffs@Base 2.2.0 + slurm_bit_fill_gaps@Base 2.2.0 + slurm_bit_fls@Base 2.2.0 + slurm_bit_fmt@Base 2.2.0 + slurm_bit_fmt_binmask@Base 2.2.0 + slurm_bit_fmt_hexmask@Base 2.2.0 + slurm_bit_free@Base 2.2.0 + slurm_bit_get_bit_num@Base 2.2.0 + slurm_bit_get_pos_num@Base 2.2.0 + slurm_bit_nclear@Base 2.2.0 + slurm_bit_nffc@Base 2.2.0 + slurm_bit_nffs@Base 2.2.0 + slurm_bit_noc@Base 2.2.0 + slurm_bit_not@Base 2.2.0 + slurm_bit_nset@Base 2.2.0 + slurm_bit_nset_max_count@Base 2.2.0 + slurm_bit_or@Base 2.2.0 + slurm_bit_overlap@Base 2.2.0 + slurm_bit_pick_cnt@Base 2.2.0 + slurm_bit_realloc@Base 2.2.0 + slurm_bit_rotate@Base 2.2.0 + slurm_bit_rotate_copy@Base 2.2.0 + slurm_bit_set@Base 2.2.0 + slurm_bit_set_count@Base 2.2.0 + slurm_bit_size@Base 2.2.0 + slurm_bit_super_set@Base 2.2.0 + slurm_bit_test@Base 2.2.0 + slurm_bit_unfmt@Base 2.2.0 + slurm_bit_unfmt_binmask@Base 2.2.0 + slurm_bit_unfmt_hexmask@Base 2.2.0 + slurm_bitfmt2int@Base 2.2.0 + slurm_cgroup_conf@Base 2.3.1 + slurm_checkpoint_able@Base 2.2.0 + slurm_checkpoint_complete@Base 2.2.0 + slurm_checkpoint_create@Base 2.2.0 + slurm_checkpoint_disable@Base 2.2.0 + slurm_checkpoint_enable@Base 2.2.0 + slurm_checkpoint_error@Base 2.2.0 + slurm_checkpoint_requeue@Base 2.2.0 + slurm_checkpoint_restart@Base 2.2.0 + slurm_checkpoint_task_complete@Base 2.2.0 + slurm_checkpoint_tasks@Base 2.2.0 + slurm_checkpoint_vacate@Base 2.2.0 + slurm_clear_trigger@Base 2.2.0 + slurm_close_accepted_conn@Base 2.2.0 + slurm_close_slurmdbd_conn@Base 2.2.0 + slurm_close_stream@Base 2.2.0 + slurm_complete_job@Base 2.2.0 + slurm_conf_destroy@Base 2.2.0 + slurm_conf_downnodes_array@Base 2.2.0 + slurm_conf_expand_slurmd_path@Base 2.2.0 + slurm_conf_frontend_array@Base 2.3.1 + slurm_conf_get_addr@Base 2.2.0 + slurm_conf_get_aliased_nodename@Base 2.2.0 + slurm_conf_get_aliases@Base 2.2.4 + slurm_conf_get_cpus_sct@Base 2.2.0 + slurm_conf_get_hostname@Base 2.2.0 + slurm_conf_get_nodeaddr@Base 2.2.0 + slurm_conf_get_nodename@Base 2.2.0 + slurm_conf_get_port@Base 2.2.0 + slurm_conf_init@Base 2.2.0 + slurm_conf_install_fork_handlers@Base 2.2.0 + slurm_conf_lock@Base 2.2.0 + slurm_conf_mutex_init@Base 2.2.0 + slurm_conf_nodename_array@Base 2.2.0 + slurm_conf_options@Base 2.2.0 + slurm_conf_partition_array@Base 2.2.0 + slurm_conf_reinit@Base 2.2.0 + slurm_conf_unlock@Base 2.2.0 + slurm_conn_type_string@Base 2.2.0 + slurm_conn_type_string_full@Base 2.3.1 + slurm_create_buf@Base 2.2.0 + slurm_create_partition@Base 2.2.0 + slurm_create_reservation@Base 2.2.0 + slurm_cred_begin_expiration@Base 2.2.0 + slurm_cred_copy@Base 2.2.0 + slurm_cred_create@Base 2.2.0 + slurm_cred_creator_ctx_create@Base 2.2.0 + slurm_cred_ctx_destroy@Base 2.2.0 + slurm_cred_ctx_get@Base 2.2.0 + slurm_cred_ctx_key_update@Base 2.2.0 + slurm_cred_ctx_pack@Base 2.2.0 + slurm_cred_ctx_set@Base 2.2.0 + slurm_cred_ctx_unpack@Base 2.2.0 + slurm_cred_destroy@Base 2.2.0 + slurm_cred_faker@Base 2.2.0 + slurm_cred_free_args@Base 2.2.0 + slurm_cred_get_args@Base 2.2.0 + slurm_cred_get_signature@Base 2.2.0 + slurm_cred_handle_reissue@Base 2.2.0 + slurm_cred_insert_jobid@Base 2.2.0 + slurm_cred_jobid_cached@Base 2.2.0 + slurm_cred_pack@Base 2.2.0 + slurm_cred_print@Base 2.2.0 + slurm_cred_revoke@Base 2.2.0 + slurm_cred_revoked@Base 2.2.0 + slurm_cred_rewind@Base 2.2.0 + slurm_cred_unpack@Base 2.2.0 + slurm_cred_verifier_ctx_create@Base 2.2.0 + slurm_cred_verify@Base 2.2.0 + slurm_crypto_fini@Base 2.2.0 + slurm_ctl_conf_2_key_pairs@Base 2.2.0 + slurm_debug2@Base 2.2.0 + slurm_debug3@Base 2.2.0 + slurm_debug4@Base 2.2.0 + slurm_debug5@Base 2.2.0 + slurm_debug@Base 2.2.0 + slurm_delete_partition@Base 2.2.0 + slurm_delete_reservation@Base 2.2.0 + slurm_destroy_association_shares_object@Base 2.2.0 + slurm_destroy_char@Base 2.2.0 + slurm_destroy_config_key_pair@Base 2.2.0 + slurm_destroy_priority_factors_object@Base 2.2.0 + slurm_destroy_select_ba_request@Base 2.3.1 + slurm_destroy_uint32_ptr@Base 2.2.0 + slurm_diff_tv@Base 2.3.1 + slurm_diff_tv_str@Base 2.3.1 + slurm_dump_cleanup_list@Base 2.2.0 + slurm_env_array_append@Base 2.2.0 + slurm_env_array_append_fmt@Base 2.2.0 + slurm_env_array_copy@Base 2.2.0 + slurm_env_array_create@Base 2.2.0 + slurm_env_array_free@Base 2.2.0 + slurm_env_array_merge@Base 2.2.0 + slurm_env_array_overwrite@Base 2.2.0 + slurm_env_array_overwrite_fmt@Base 2.2.0 + slurm_error@Base 2.2.0 + slurm_fatal@Base 2.2.0 + slurm_fatal_add_cleanup@Base 2.2.0 + slurm_fatal_add_cleanup_job@Base 2.2.0 + slurm_fatal_cleanup@Base 2.2.0 + slurm_fatal_remove_cleanup@Base 2.2.0 + slurm_fatal_remove_cleanup_job@Base 2.2.0 + slurm_fd_read_n@Base 2.2.0 + slurm_fd_set_blocking@Base 2.2.0 + slurm_fd_set_nonblocking@Base 2.2.0 + slurm_fd_write_n@Base 2.2.0 + slurm_free_accounting_update_msg@Base 2.2.0 + slurm_free_block_info@Base 2.2.0 + slurm_free_block_info_members@Base 2.2.0 + slurm_free_block_info_msg@Base 2.2.0 + slurm_free_block_info_request_msg@Base 2.2.0 + slurm_free_block_job_info@Base 2.3.1 + slurm_free_buf@Base 2.2.0 + slurm_free_checkpoint_comp_msg@Base 2.2.0 + slurm_free_checkpoint_msg@Base 2.2.0 + slurm_free_checkpoint_resp_msg@Base 2.2.0 + slurm_free_checkpoint_task_comp_msg@Base 2.2.0 + slurm_free_checkpoint_tasks_msg@Base 2.2.0 + slurm_free_complete_batch_script_msg@Base 2.2.0 + slurm_free_complete_job_allocation_msg@Base 2.2.0 + slurm_free_ctl_conf@Base 2.2.0 + slurm_free_delete_part_msg@Base 2.2.0 + slurm_free_epilog_complete_msg@Base 2.2.0 + slurm_free_file_bcast_msg@Base 2.2.0 + slurm_free_front_end_info_members@Base 2.3.1 + slurm_free_front_end_info_msg@Base 2.3.1 + slurm_free_front_end_info_request_msg@Base 2.3.1 + slurm_free_get_kvs_msg@Base 2.2.0 + slurm_free_job_alloc_info_msg@Base 2.2.0 + slurm_free_job_alloc_info_response_msg@Base 2.2.0 + slurm_free_job_desc_msg@Base 2.2.0 + slurm_free_job_id_msg@Base 2.2.0 + slurm_free_job_id_request_msg@Base 2.2.0 + slurm_free_job_id_response_msg@Base 2.2.0 + slurm_free_job_info@Base 2.2.0 + slurm_free_job_info_members@Base 2.2.0 + slurm_free_job_info_msg@Base 2.2.0 + slurm_free_job_info_request_msg@Base 2.2.0 + slurm_free_job_launch_msg@Base 2.2.0 + slurm_free_job_notify_msg@Base 2.2.0 + slurm_free_job_step_create_request_msg@Base 2.2.0 + slurm_free_job_step_create_response_msg@Base 2.2.0 + slurm_free_job_step_id_msg@Base 2.2.0 + slurm_free_job_step_info_members@Base 2.2.0 + slurm_free_job_step_info_request_msg@Base 2.2.0 + slurm_free_job_step_info_response_msg@Base 2.2.0 + slurm_free_job_step_kill_msg@Base 2.2.0 + slurm_free_job_step_pids@Base 2.2.0 + slurm_free_job_step_stat@Base 2.2.0 + slurm_free_kill_job_msg@Base 2.2.0 + slurm_free_kill_tasks_msg@Base 2.2.0 + slurm_free_kvs_comm_set@Base 2.2.0 + slurm_free_last_update_msg@Base 2.2.0 + slurm_free_launch_tasks_request_msg@Base 2.2.0 + slurm_free_launch_tasks_response_msg@Base 2.2.0 + slurm_free_msg@Base 2.2.0 + slurm_free_msg_data@Base 2.2.0 + slurm_free_node_info_members@Base 2.2.0 + slurm_free_node_info_msg@Base 2.2.0 + slurm_free_node_info_request_msg@Base 2.2.0 + slurm_free_node_registration_status_msg@Base 2.2.0 + slurm_free_part_info_request_msg@Base 2.2.0 + slurm_free_partition_info_members@Base 2.2.0 + slurm_free_partition_info_msg@Base 2.2.0 + slurm_free_priority_factors_request_msg@Base 2.2.0 + slurm_free_priority_factors_response_msg@Base 2.2.0 + slurm_free_reattach_tasks_request_msg@Base 2.2.0 + slurm_free_reattach_tasks_response_msg@Base 2.2.0 + slurm_free_reservation_info_msg@Base 2.2.0 + slurm_free_reserve_info_members@Base 2.2.0 + slurm_free_resource_allocation_response_msg@Base 2.2.0 + slurm_free_resv_desc_msg@Base 2.2.0 + slurm_free_resv_info_request_msg@Base 2.2.0 + slurm_free_resv_name_msg@Base 2.2.0 + slurm_free_return_code_msg@Base 2.2.0 + slurm_free_sbcast_cred_msg@Base 2.2.0 + slurm_free_set_debug_flags_msg@Base 2.3.1 + slurm_free_set_debug_level_msg@Base 2.2.0 + slurm_free_shares_request_msg@Base 2.2.0 + slurm_free_shares_response_msg@Base 2.2.0 + slurm_free_shutdown_msg@Base 2.2.0 + slurm_free_signal_job_msg@Base 2.2.0 + slurm_free_slurmd_status@Base 2.2.0 + slurm_free_spank_env_request_msg@Base 2.3.1 + slurm_free_spank_env_responce_msg@Base 2.3.1 + slurm_free_srun_exec_msg@Base 2.2.0 + slurm_free_srun_job_complete_msg@Base 2.2.0 + slurm_free_srun_node_fail_msg@Base 2.2.0 + slurm_free_srun_ping_msg@Base 2.2.0 + slurm_free_srun_step_missing_msg@Base 2.2.0 + slurm_free_srun_timeout_msg@Base 2.2.0 + slurm_free_srun_user_msg@Base 2.2.0 + slurm_free_step_complete_msg@Base 2.2.0 + slurm_free_submit_response_response_msg@Base 2.2.0 + slurm_free_suspend_msg@Base 2.2.0 + slurm_free_task_exit_msg@Base 2.2.0 + slurm_free_task_user_managed_io_stream_msg@Base 2.2.0 + slurm_free_topo_info_msg@Base 2.2.0 + slurm_free_trigger_msg@Base 2.2.0 + slurm_free_update_front_end_msg@Base 2.3.1 + slurm_free_update_job_time_msg@Base 2.2.0 + slurm_free_update_node_msg@Base 2.2.0 + slurm_free_update_part_msg@Base 2.2.0 + slurm_free_update_step_msg@Base 2.2.0 + slurm_free_will_run_response_msg@Base 2.2.0 + slurm_get_accounting_storage_backup_host@Base 2.2.0 + slurm_get_accounting_storage_enforce@Base 2.2.0 + slurm_get_accounting_storage_host@Base 2.2.0 + slurm_get_accounting_storage_loc@Base 2.2.0 + slurm_get_accounting_storage_pass@Base 2.2.0 + slurm_get_accounting_storage_port@Base 2.2.0 + slurm_get_accounting_storage_type@Base 2.2.0 + slurm_get_accounting_storage_user@Base 2.2.0 + slurm_get_addr@Base 2.2.0 + slurm_get_api_config@Base 2.2.0 + slurm_get_auth_type@Base 2.2.0 + slurm_get_avail_procs@Base 2.2.0 + slurm_get_batch_start_timeout@Base 2.2.0 + slurm_get_checkpoint_type@Base 2.2.0 + slurm_get_cluster_name@Base 2.2.0 + slurm_get_complete_wait@Base 2.2.0 + slurm_get_controller_addr_spec@Base 2.2.0 + slurm_get_crypto_type@Base 2.2.0 + slurm_get_debug_flags@Base 2.2.0 + slurm_get_def_mem_per_cpu@Base 2.2.0 + slurm_get_end_time@Base 2.2.0 + slurm_get_env_timeout@Base 2.2.0 + slurm_get_epilog_msg_time@Base 2.2.0 + slurm_get_errno@Base 2.2.0 + slurm_get_fast_schedule@Base 2.2.0 + slurm_get_gres_plugins@Base 2.2.0 + slurm_get_hash_val@Base 2.2.0 + slurm_get_health_check_program@Base 2.2.0 + slurm_get_ip_str@Base 2.2.0 + slurm_get_is_association_based_accounting@Base 2.2.0 + slurm_get_job_steps@Base 2.2.0 + slurm_get_job_submit_plugins@Base 2.2.0 + slurm_get_jobacct_gather_freq@Base 2.2.0 + slurm_get_jobacct_gather_type@Base 2.2.0 + slurm_get_jobcomp_host@Base 2.2.0 + slurm_get_jobcomp_loc@Base 2.2.0 + slurm_get_jobcomp_pass@Base 2.2.0 + slurm_get_jobcomp_port@Base 2.2.0 + slurm_get_jobcomp_type@Base 2.2.0 + slurm_get_jobcomp_user@Base 2.2.0 + slurm_get_kill_on_bad_exit@Base 2.2.0 + slurm_get_kvs_comm_set@Base 2.2.0 + slurm_get_max_mem_per_cpu@Base 2.2.0 + slurm_get_mpi_default@Base 2.2.0 + slurm_get_mpi_params@Base 2.2.0 + slurm_get_msg_timeout@Base 2.2.0 + slurm_get_peer_addr@Base 2.2.0 + slurm_get_plugin_dir@Base 2.2.0 + slurm_get_preempt_mode@Base 2.2.0 + slurm_get_preempt_type@Base 2.2.0 + slurm_get_priority_calc_period@Base 2.2.0 + slurm_get_priority_decay_hl@Base 2.2.0 + slurm_get_priority_favor_small@Base 2.2.0 + slurm_get_priority_max_age@Base 2.2.0 + slurm_get_priority_reset_period@Base 2.2.0 + slurm_get_priority_type@Base 2.2.0 + slurm_get_priority_weight_age@Base 2.2.0 + slurm_get_priority_weight_fairshare@Base 2.2.0 + slurm_get_priority_weight_job_size@Base 2.2.0 + slurm_get_priority_weight_partition@Base 2.2.0 + slurm_get_priority_weight_qos@Base 2.2.0 + slurm_get_private_data@Base 2.2.0 + slurm_get_proctrack_type@Base 2.2.0 + slurm_get_propagate_prio_process@Base 2.2.0 + slurm_get_rem_time@Base 2.2.0 + slurm_get_resume_timeout@Base 2.2.0 + slurm_get_return_code@Base 2.2.0 + slurm_get_root_filter@Base 2.2.0 + slurm_get_sched_params@Base 2.2.0 + slurm_get_sched_port@Base 2.2.0 + slurm_get_sched_type@Base 2.2.0 + slurm_get_select_jobinfo@Base 2.2.0 + slurm_get_select_nodeinfo@Base 2.2.0 + slurm_get_select_type@Base 2.2.0 + slurm_get_select_type_param@Base 2.3.1 + slurm_get_slurm_user_id@Base 2.2.0 + slurm_get_slurmd_port@Base 2.2.0 + slurm_get_slurmd_user_id@Base 2.2.0 + slurm_get_srun_epilog@Base 2.2.0 + slurm_get_srun_prolog@Base 2.2.0 + slurm_get_state_save_location@Base 2.2.0 + slurm_get_stream_addr@Base 2.2.0 + slurm_get_suspend_time@Base 2.2.0 + slurm_get_suspend_timeout@Base 2.2.0 + slurm_get_switch_type@Base 2.2.0 + slurm_get_task_epilog@Base 2.2.0 + slurm_get_task_plugin@Base 2.2.0 + slurm_get_task_plugin_param@Base 2.2.0 + slurm_get_task_prolog@Base 2.2.0 + slurm_get_topology_plugin@Base 2.2.0 + slurm_get_track_wckey@Base 2.2.0 + slurm_get_tree_width@Base 2.2.0 + slurm_get_triggers@Base 2.2.0 + slurm_get_vsize_factor@Base 2.2.0 + slurm_get_wait_time@Base 2.2.0 + slurm_getenvp@Base 2.2.0 + slurm_grow_buf@Base 2.2.0 + slurm_hostlist_copy@Base 2.2.0 + slurm_hostlist_count@Base 2.2.0 + slurm_hostlist_create@Base 2.2.0 + slurm_hostlist_create_dims@Base 2.3.1 + slurm_hostlist_delete@Base 2.2.0 + slurm_hostlist_delete_host@Base 2.2.0 + slurm_hostlist_delete_nth@Base 2.2.0 + slurm_hostlist_deranged_string@Base 2.2.0 + slurm_hostlist_deranged_string_dims@Base 2.3.1 + slurm_hostlist_deranged_string_malloc@Base 2.2.0 + slurm_hostlist_deranged_string_xmalloc@Base 2.2.0 + slurm_hostlist_deranged_string_xmalloc_dims@Base 2.3.1 + slurm_hostlist_destroy@Base 2.2.0 + slurm_hostlist_find@Base 2.2.0 + slurm_hostlist_iterator_create@Base 2.2.0 + slurm_hostlist_iterator_destroy@Base 2.2.0 + slurm_hostlist_iterator_reset@Base 2.2.0 + slurm_hostlist_next@Base 2.2.0 + slurm_hostlist_next_range@Base 2.2.0 + slurm_hostlist_nth@Base 2.2.0 + slurm_hostlist_pop@Base 2.2.0 + slurm_hostlist_pop_range@Base 2.2.0 + slurm_hostlist_push@Base 2.2.0 + slurm_hostlist_push_host@Base 2.2.0 + slurm_hostlist_push_host_dims@Base 2.3.1 + slurm_hostlist_push_list@Base 2.2.0 + slurm_hostlist_ranged_string@Base 2.2.0 + slurm_hostlist_ranged_string_dims@Base 2.3.1 + slurm_hostlist_ranged_string_malloc@Base 2.2.0 + slurm_hostlist_ranged_string_xmalloc@Base 2.2.0 + slurm_hostlist_ranged_string_xmalloc_dims@Base 2.3.1 + slurm_hostlist_remove@Base 2.2.0 + slurm_hostlist_shift@Base 2.2.0 + slurm_hostlist_shift_range@Base 2.2.0 + slurm_hostlist_soft@Base 2.2.0 + slurm_hostlist_uniq@Base 2.2.0 + slurm_hostset_copy@Base 2.2.0 + slurm_hostset_count@Base 2.2.0 + slurm_hostset_create@Base 2.2.0 + slurm_hostset_delete@Base 2.2.0 + slurm_hostset_destroy@Base 2.2.0 + slurm_hostset_find@Base 2.2.0 + slurm_hostset_insert@Base 2.2.0 + slurm_hostset_nth@Base 2.2.0 + slurm_hostset_shift@Base 2.2.0 + slurm_hostset_shift_range@Base 2.2.0 + slurm_hostset_within@Base 2.2.0 + slurm_info@Base 2.2.0 + slurm_init_buf@Base 2.2.0 + slurm_init_job_desc_msg@Base 2.2.0 + slurm_init_msg_engine@Base 2.2.0 + slurm_init_msg_engine_addrname_port@Base 2.2.0 + slurm_init_msg_engine_port@Base 2.2.0 + slurm_init_part_desc_msg@Base 2.2.0 + slurm_init_resv_desc_msg@Base 2.2.0 + slurm_init_update_block_msg@Base 2.2.0 + slurm_init_update_front_end_msg@Base 2.3.1 + slurm_init_update_node_msg@Base 2.2.0 + slurm_init_update_step_msg@Base 2.2.0 + slurm_int_and_set_count@Base 2.2.0 + slurm_job_cpus_allocated_on_node@Base 2.2.0 + slurm_job_cpus_allocated_on_node_id@Base 2.2.0 + slurm_job_node_ready@Base 2.2.0 + slurm_job_reason_string@Base 2.2.0 + slurm_job_state_num@Base 2.2.0 + slurm_job_state_string@Base 2.2.0 + slurm_job_state_string_compact@Base 2.2.0 + slurm_job_step_create@Base 2.2.0 + slurm_job_step_get_pids@Base 2.2.0 + slurm_job_step_layout_free@Base 2.2.0 + slurm_job_step_layout_get@Base 2.2.0 + slurm_job_step_pids_free@Base 2.2.0 + slurm_job_step_pids_response_msg_free@Base 2.2.0 + slurm_job_step_stat@Base 2.2.0 + slurm_job_step_stat_free@Base 2.2.0 + slurm_job_step_stat_response_msg_free@Base 2.2.0 + slurm_job_will_run@Base 2.2.0 + slurm_jobacct_common_alloc_jobacct@Base 2.2.0 + slurm_jobacct_common_free_jobacct@Base 2.2.0 + slurm_jobacct_common_pack@Base 2.2.0 + slurm_jobacct_common_unpack@Base 2.2.0 + slurm_jobacct_gather_fini@Base 2.2.0 + slurm_jobacct_gather_init@Base 2.2.0 + slurm_jobinfo_ctx_get@Base 2.2.0 + slurm_kill_job@Base 2.2.0 + slurm_kill_job_step@Base 2.2.0 + slurm_list_append@Base 2.2.0 + slurm_list_append_list@Base 2.2.0 + slurm_list_count@Base 2.2.0 + slurm_list_create@Base 2.2.0 + slurm_list_delete_all@Base 2.2.0 + slurm_list_delete_item@Base 2.2.0 + slurm_list_dequeue@Base 2.2.0 + slurm_list_destroy@Base 2.2.0 + slurm_list_enqueue@Base 2.2.0 + slurm_list_find@Base 2.2.0 + slurm_list_find_first@Base 2.2.0 + slurm_list_flush@Base 2.2.0 + slurm_list_for_each@Base 2.2.0 + slurm_list_insert@Base 2.2.0 + slurm_list_install_fork_handlers@Base 2.2.0 + slurm_list_is_empty@Base 2.2.0 + slurm_list_iterator_create@Base 2.2.0 + slurm_list_iterator_destroy@Base 2.2.0 + slurm_list_iterator_reset@Base 2.2.0 + slurm_list_next@Base 2.2.0 + slurm_list_peek@Base 2.2.0 + slurm_list_pop@Base 2.2.0 + slurm_list_prepend@Base 2.2.0 + slurm_list_push@Base 2.2.0 + slurm_list_remove@Base 2.2.0 + slurm_list_sort@Base 2.2.0 + slurm_list_transfer@Base 2.2.0 + slurm_listen_stream@Base 2.2.0 + slurm_load_block_info@Base 2.2.0 + slurm_load_ctl_conf@Base 2.2.0 + slurm_load_front_end@Base 2.3.1 + slurm_load_job@Base 2.2.0 + slurm_load_jobs@Base 2.2.0 + slurm_load_node@Base 2.2.0 + slurm_load_partitions@Base 2.2.0 + slurm_load_reservations@Base 2.2.0 + slurm_load_slurmd_status@Base 2.2.0 + slurm_load_topo@Base 2.2.0 + slurm_log_alter@Base 2.2.0 + slurm_log_fini@Base 2.2.0 + slurm_log_flush@Base 2.2.0 + slurm_log_fp@Base 2.2.0 + slurm_log_has_data@Base 2.2.0 + slurm_log_init@Base 2.2.0 + slurm_log_reinit@Base 2.2.0 + slurm_log_set_fpfx@Base 2.2.0 + slurm_make_time_str@Base 2.2.0 + slurm_msg_t_copy@Base 2.2.0 + slurm_msg_t_init@Base 2.2.0 + slurm_net_accept_stream@Base 2.2.0 + slurm_net_set_low_water@Base 2.2.0 + slurm_net_stream_listen@Base 2.2.0 + slurm_node_state_string@Base 2.2.0 + slurm_node_state_string_compact@Base 2.2.0 + slurm_node_use_string@Base 2.2.0 + slurm_notify_job@Base 2.2.0 + slurm_open_controller_conn@Base 2.2.0 + slurm_open_controller_conn_spec@Base 2.2.0 + slurm_open_msg_conn@Base 2.2.0 + slurm_open_slurmdbd_conn@Base 2.2.0 + slurm_open_stream@Base 2.2.0 + slurm_pack16@Base 2.2.0 + slurm_pack16_array@Base 2.2.0 + slurm_pack32@Base 2.2.0 + slurm_pack32_array@Base 2.2.0 + slurm_pack64@Base 2.2.0 + slurm_pack8@Base 2.2.0 + slurm_pack_block_job_info@Base 2.3.1 +#MISSING: 2.3.1-1# slurm_pack_msg_no_header@Base 2.2.0 + slurm_pack_slurm_addr@Base 2.2.0 + slurm_pack_slurm_addr_array@Base 2.2.0 + slurm_pack_time@Base 2.2.0 + slurm_packdouble@Base 2.3.1 + slurm_packmem@Base 2.2.0 + slurm_packmem_array@Base 2.2.0 + slurm_packstr_array@Base 2.2.0 + slurm_parser@Base 2.2.0 + slurm_perror@Base 2.2.0 + slurm_pid2jobid@Base 2.2.0 + slurm_ping@Base 2.2.0 + slurm_plugin_get_syms@Base 2.2.0 + slurm_plugin_load_and_link@Base 2.2.0 + slurm_plugin_strerror@Base 2.2.0 + slurm_plugin_unload@Base 2.2.0 + slurm_plugrack_create@Base 2.2.0 + slurm_plugrack_destroy@Base 2.2.0 + slurm_plugrack_read_dir@Base 2.2.0 + slurm_plugrack_set_major_type@Base 2.2.0 + slurm_plugrack_set_paranoia@Base 2.2.0 + slurm_plugrack_use_by_type@Base 2.2.0 + slurm_pmi_finalize@Base 2.2.0 + slurm_preempt_mode_num@Base 2.2.0 + slurm_preempt_mode_string@Base 2.2.0 + slurm_print_block_info@Base 2.2.0 + slurm_print_block_info_msg@Base 2.2.0 + slurm_print_cpu_bind_help@Base 2.2.0 + slurm_print_ctl_conf@Base 2.2.0 + slurm_print_front_end_info_msg@Base 2.3.1 + slurm_print_front_end_table@Base 2.3.1 + slurm_print_job_info@Base 2.2.0 + slurm_print_job_info_msg@Base 2.2.0 + slurm_print_job_step_info@Base 2.2.0 + slurm_print_job_step_info_msg@Base 2.2.0 + slurm_print_key_pairs@Base 2.2.0 + slurm_print_launch_task_msg@Base 2.2.0 + slurm_print_mem_bind_help@Base 2.2.0 + slurm_print_node_info_msg@Base 2.2.0 + slurm_print_node_table@Base 2.2.0 + slurm_print_partition_info@Base 2.2.0 + slurm_print_partition_info_msg@Base 2.2.0 + slurm_print_reservation_info@Base 2.2.0 + slurm_print_reservation_info_msg@Base 2.2.0 + slurm_print_slurm_addr@Base 2.2.0 + slurm_print_slurmd_status@Base 2.2.0 + slurm_print_topo_info_msg@Base 2.2.0 + slurm_print_topo_record@Base 2.2.0 + slurm_priority_fini@Base 2.2.0 + slurm_priority_init@Base 2.2.0 + slurm_private_data_string@Base 2.2.0 + slurm_pull_trigger@Base 2.2.0 + slurm_read_hostfile@Base 2.2.0 + slurm_read_stream@Base 2.2.0 + slurm_read_stream_timeout@Base 2.2.0 + slurm_receive_msg@Base 2.2.0 + slurm_receive_msg_and_forward@Base 2.2.0 + slurm_receive_msgs@Base 2.2.0 + slurm_reconfigure@Base 2.2.0 + slurm_requeue@Base 2.2.0 + slurm_reservation_flags_string@Base 2.2.0 + slurm_resume@Base 2.2.0 + slurm_s_p_get_string@Base 2.3.1 + slurm_s_p_get_uint32@Base 2.3.1 + slurm_s_p_hashtbl_create@Base 2.3.1 + slurm_s_p_hashtbl_destroy@Base 2.3.1 + slurm_s_p_parse_file@Base 2.3.1 + slurm_sbcast_lookup@Base 2.2.0 + slurm_select_fini@Base 2.2.0 + slurm_select_init@Base 2.2.0 + slurm_send_addr_recv_msgs@Base 2.2.0 + slurm_send_kvs_comm_set@Base 2.2.0 + slurm_send_node_msg@Base 2.2.0 + slurm_send_only_controller_msg@Base 2.2.0 + slurm_send_only_node_msg@Base 2.2.0 + slurm_send_rc_msg@Base 2.2.0 + slurm_send_recv_controller_msg@Base 2.2.0 + slurm_send_recv_controller_rc_msg@Base 2.2.0 + slurm_send_recv_msgs@Base 2.2.0 + slurm_send_recv_node_msg@Base 2.2.0 + slurm_send_recv_rc_msg_only_one@Base 2.2.0 + slurm_send_recv_slurmdbd_msg@Base 2.2.0 + slurm_send_slurmdbd_msg@Base 2.2.0 + slurm_send_slurmdbd_recv_rc_msg@Base 2.2.0 + slurm_set_accounting_storage_host@Base 2.2.0 + slurm_set_accounting_storage_loc@Base 2.2.0 + slurm_set_accounting_storage_port@Base 2.2.0 + slurm_set_accounting_storage_user@Base 2.2.0 + slurm_set_addr@Base 2.2.0 + slurm_set_addr_any@Base 2.2.0 + slurm_set_addr_char@Base 2.2.0 + slurm_set_addr_uint@Base 2.2.0 + slurm_set_api_config@Base 2.2.0 + slurm_set_auth_type@Base 2.2.0 + slurm_set_debug_flags@Base 2.3.1 + slurm_set_debug_level@Base 2.2.0 + slurm_set_debugflags@Base 2.3.1 + slurm_set_jobcomp_port@Base 2.2.0 + slurm_set_schedlog_level@Base 2.2.0 + slurm_set_stream_blocking@Base 2.2.0 + slurm_set_stream_non_blocking@Base 2.2.0 + slurm_set_tree_width@Base 2.2.0 + slurm_set_trigger@Base 2.2.0 + slurm_setenvpf@Base 2.2.0 + slurm_seterrno@Base 2.2.0 + slurm_shutdown@Base 2.2.0 + slurm_shutdown_msg_conn@Base 2.2.0 + slurm_shutdown_msg_engine@Base 2.2.0 + slurm_signal_job@Base 2.2.0 + slurm_signal_job_step@Base 2.2.0 + slurm_sort_char_list_asc@Base 2.2.0 + slurm_sort_char_list_desc@Base 2.2.0 + slurm_sort_key_pairs@Base 2.2.0 + slurm_sprint_block_info@Base 2.2.0 + slurm_sprint_cpu_bind_type@Base 2.2.0 + slurm_sprint_front_end_table@Base 2.3.1 + slurm_sprint_job_info@Base 2.2.0 + slurm_sprint_job_step_info@Base 2.2.0 + slurm_sprint_mem_bind_type@Base 2.2.0 + slurm_sprint_node_table@Base 2.2.0 + slurm_sprint_partition_info@Base 2.2.0 + slurm_sprint_reservation_info@Base 2.2.0 + slurm_step_ctx_create@Base 2.2.0 + slurm_step_ctx_create_no_alloc@Base 2.2.0 + slurm_step_ctx_daemon_per_node_hack@Base 2.2.0 + slurm_step_ctx_destroy@Base 2.2.0 + slurm_step_ctx_get@Base 2.2.0 + slurm_step_ctx_params_t_init@Base 2.2.0 + slurm_step_launch@Base 2.2.0 + slurm_step_launch_abort@Base 2.2.0 + slurm_step_launch_fwd_signal@Base 2.2.0 + slurm_step_launch_params_t_init@Base 2.2.0 + slurm_step_launch_wait_finish@Base 2.2.0 + slurm_step_launch_wait_start@Base 2.2.0 + slurm_step_layout_copy@Base 2.2.0 + slurm_step_layout_create@Base 2.2.0 + slurm_step_layout_destroy@Base 2.2.0 + slurm_step_layout_host_id@Base 2.2.0 + slurm_step_layout_host_name@Base 2.2.0 + slurm_step_layout_type_name@Base 2.2.0 + slurm_strcasestr@Base 2.2.0 + slurm_strerror@Base 2.2.0 + slurm_strlcpy@Base 2.2.0 + slurm_submit_batch_job@Base 2.2.0 + slurm_suspend@Base 2.2.0 + slurm_takeover@Base 2.2.0 + slurm_terminate_job@Base 2.2.0 + slurm_terminate_job_step@Base 2.2.0 + slurm_topo_build_config@Base 2.2.0 + slurm_topo_fini@Base 2.2.0 + slurm_topo_generate_node_ranking@Base 2.3.1 + slurm_topo_get_node_addr@Base 2.2.0 + slurm_topo_init@Base 2.2.0 + slurm_try_xmalloc@Base 2.2.0 + slurm_try_xrealloc@Base 2.2.0 + slurm_unpack16@Base 2.2.0 + slurm_unpack16_array@Base 2.2.0 + slurm_unpack32@Base 2.2.0 + slurm_unpack32_array@Base 2.2.0 + slurm_unpack64@Base 2.2.0 + slurm_unpack8@Base 2.2.0 + slurm_unpack_block_info_members@Base 2.3.1 + slurm_unpack_block_info_msg@Base 2.2.0 + slurm_unpack_slurm_addr_array@Base 2.2.0 + slurm_unpack_slurm_addr_no_alloc@Base 2.2.0 + slurm_unpack_time@Base 2.2.0 + slurm_unpackdouble@Base 2.3.1 + slurm_unpackmem@Base 2.2.0 + slurm_unpackmem_array@Base 2.2.0 + slurm_unpackmem_malloc@Base 2.2.0 + slurm_unpackmem_ptr@Base 2.2.0 + slurm_unpackmem_xmalloc@Base 2.2.0 + slurm_unpackstr_array@Base 2.2.0 + slurm_unsetenvp@Base 2.2.0 + slurm_update_block@Base 2.2.0 + slurm_update_front_end@Base 2.3.1 + slurm_update_job@Base 2.2.0 + slurm_update_node@Base 2.2.0 + slurm_update_partition@Base 2.2.0 + slurm_update_reservation@Base 2.2.0 + slurm_update_step@Base 2.2.0 + slurm_verbose@Base 2.2.0 + slurm_verify_cpu_bind@Base 2.2.0 + slurm_verify_mem_bind@Base 2.2.0 + slurm_write_stream@Base 2.2.0 + slurm_write_stream_timeout@Base 2.2.0 + slurm_xassert_failed@Base 2.2.0 + slurm_xbasename@Base 2.2.0 + slurm_xfer_buf_data@Base 2.2.0 + slurm_xfree@Base 2.2.0 + slurm_xmalloc@Base 2.2.0 + slurm_xmemcat@Base 2.2.0 + slurm_xrealloc@Base 2.2.0 + slurm_xshort_hostname@Base 2.2.0 + slurm_xsignal@Base 2.2.0 + slurm_xsignal_block@Base 2.2.0 + slurm_xsignal_save_mask@Base 2.2.0 + slurm_xsignal_set_mask@Base 2.2.0 + slurm_xsignal_sigset_create@Base 2.2.0 + slurm_xsignal_unblock@Base 2.2.0 + slurm_xsize@Base 2.2.0 + slurm_xslurm_strerrorcat@Base 2.2.0 + slurm_xstrcat@Base 2.2.0 + slurm_xstrcatchar@Base 2.2.0 + slurm_xstrdup@Base 2.2.0 + slurm_xstrdup_printf@Base 2.2.0 + slurm_xstrfmtcat@Base 2.2.0 + slurm_xstrftimecat@Base 2.2.0 + slurm_xstring_is_whitespace@Base 2.2.0 + slurm_xstrncat@Base 2.2.0 + slurm_xstrndup@Base 2.2.0 + slurm_xstrstrip@Base 2.2.0 + slurm_xstrsubstitute@Base 2.2.0 + slurm_xstrtolower@Base 2.2.0 + slurmdb_accounts_add@Base 2.2.0 + slurmdb_accounts_get@Base 2.2.0 + slurmdb_accounts_modify@Base 2.2.0 + slurmdb_accounts_remove@Base 2.2.0 + slurmdb_addto_qos_char_list@Base 2.2.0 + slurmdb_admin_level_str@Base 2.2.0 + slurmdb_archive@Base 2.2.0 + slurmdb_archive_load@Base 2.2.0 + slurmdb_associations_add@Base 2.2.0 + slurmdb_associations_get@Base 2.2.0 + slurmdb_associations_modify@Base 2.2.0 + slurmdb_associations_remove@Base 2.2.0 + slurmdb_cluster_flags_2_str@Base 2.2.0 + slurmdb_clusters_add@Base 2.2.0 + slurmdb_clusters_get@Base 2.2.0 + slurmdb_clusters_modify@Base 2.2.0 + slurmdb_clusters_remove@Base 2.2.0 + slurmdb_config_get@Base 2.2.0 + slurmdb_connection_close@Base 2.2.0 + slurmdb_connection_get@Base 2.2.0 + slurmdb_coord_add@Base 2.2.0 + slurmdb_coord_remove@Base 2.2.0 + slurmdb_create_job_rec@Base 2.2.0 + slurmdb_create_step_rec@Base 2.2.0 + slurmdb_destroy_account_cond@Base 2.2.0 + slurmdb_destroy_account_rec@Base 2.2.0 + slurmdb_destroy_accounting_rec@Base 2.2.0 + slurmdb_destroy_archive_cond@Base 2.2.0 + slurmdb_destroy_archive_rec@Base 2.2.0 + slurmdb_destroy_association_cond@Base 2.2.0 + slurmdb_destroy_association_rec@Base 2.2.0 + slurmdb_destroy_cluster_accounting_rec@Base 2.2.0 + slurmdb_destroy_cluster_cond@Base 2.2.0 + slurmdb_destroy_cluster_rec@Base 2.2.0 + slurmdb_destroy_coord_rec@Base 2.2.0 + slurmdb_destroy_event_cond@Base 2.2.0 + slurmdb_destroy_event_rec@Base 2.2.0 + slurmdb_destroy_hierarchical_rec@Base 2.2.0 + slurmdb_destroy_job_cond@Base 2.2.0 + slurmdb_destroy_job_modify_cond@Base 2.2.0 + slurmdb_destroy_job_rec@Base 2.2.0 + slurmdb_destroy_print_tree@Base 2.2.0 + slurmdb_destroy_qos_cond@Base 2.2.0 + slurmdb_destroy_qos_rec@Base 2.2.0 + slurmdb_destroy_report_acct_grouping@Base 2.2.0 + slurmdb_destroy_report_assoc_rec@Base 2.2.0 + slurmdb_destroy_report_cluster_grouping@Base 2.2.0 + slurmdb_destroy_report_cluster_rec@Base 2.2.0 + slurmdb_destroy_report_job_grouping@Base 2.2.0 + slurmdb_destroy_report_user_rec@Base 2.2.0 + slurmdb_destroy_reservation_cond@Base 2.2.0 + slurmdb_destroy_reservation_rec@Base 2.2.0 + slurmdb_destroy_selected_step@Base 2.2.0 + slurmdb_destroy_step_rec@Base 2.2.0 + slurmdb_destroy_txn_cond@Base 2.2.0 + slurmdb_destroy_txn_rec@Base 2.2.0 + slurmdb_destroy_update_object@Base 2.2.0 + slurmdb_destroy_update_shares_rec@Base 2.2.0 + slurmdb_destroy_used_limits@Base 2.2.0 + slurmdb_destroy_user_cond@Base 2.2.0 + slurmdb_destroy_user_rec@Base 2.2.0 + slurmdb_destroy_wckey_cond@Base 2.2.0 + slurmdb_destroy_wckey_rec@Base 2.2.0 + slurmdb_events_get@Base 2.2.0 + slurmdb_get_acct_hierarchical_rec_list@Base 2.2.0 + slurmdb_get_hierarchical_sorted_assoc_list@Base 2.2.0 + slurmdb_get_info_cluster@Base 2.2.0 + slurmdb_init_association_rec@Base 2.2.0 + slurmdb_init_cluster_cond@Base 2.2.0 + slurmdb_init_cluster_rec@Base 2.2.0 + slurmdb_init_qos_rec@Base 2.2.0 + slurmdb_init_wckey_rec@Base 2.2.0 + slurmdb_jobs_get@Base 2.2.0 + slurmdb_pack_account_cond@Base 2.2.0 + slurmdb_pack_account_rec@Base 2.2.0 + slurmdb_pack_accounting_rec@Base 2.2.0 + slurmdb_pack_archive_cond@Base 2.2.0 + slurmdb_pack_archive_rec@Base 2.2.0 + slurmdb_pack_association_cond@Base 2.2.0 + slurmdb_pack_association_rec@Base 2.2.0 + slurmdb_pack_cluster_accounting_rec@Base 2.2.0 + slurmdb_pack_cluster_cond@Base 2.2.0 + slurmdb_pack_cluster_rec@Base 2.2.0 + slurmdb_pack_coord_rec@Base 2.2.0 + slurmdb_pack_event_cond@Base 2.2.0 + slurmdb_pack_event_rec@Base 2.2.0 + slurmdb_pack_job_cond@Base 2.2.0 + slurmdb_pack_job_modify_cond@Base 2.2.0 + slurmdb_pack_job_rec@Base 2.2.0 + slurmdb_pack_qos_cond@Base 2.2.0 + slurmdb_pack_qos_rec@Base 2.2.0 + slurmdb_pack_reservation_cond@Base 2.2.0 + slurmdb_pack_reservation_rec@Base 2.2.0 + slurmdb_pack_selected_step@Base 2.2.0 + slurmdb_pack_step_rec@Base 2.2.0 + slurmdb_pack_txn_cond@Base 2.2.0 + slurmdb_pack_txn_rec@Base 2.2.0 + slurmdb_pack_update_object@Base 2.2.0 + slurmdb_pack_used_limits@Base 2.2.0 + slurmdb_pack_user_cond@Base 2.2.0 + slurmdb_pack_user_rec@Base 2.2.0 + slurmdb_pack_wckey_cond@Base 2.2.0 + slurmdb_pack_wckey_rec@Base 2.2.0 + slurmdb_parse_purge@Base 2.2.0 + slurmdb_problem_str_get@Base 2.2.0 + slurmdb_problems_get@Base 2.2.0 + slurmdb_purge_string@Base 2.2.0 + slurmdb_qos_add@Base 2.2.0 + slurmdb_qos_flags_str@Base 2.2.0 + slurmdb_qos_get@Base 2.2.0 + slurmdb_qos_modify@Base 2.2.0 + slurmdb_qos_remove@Base 2.2.0 + slurmdb_qos_str@Base 2.2.0 + slurmdb_report_cluster_account_by_user@Base 2.2.0 + slurmdb_report_cluster_user_by_account@Base 2.2.0 + slurmdb_report_cluster_user_by_wckey@Base 2.2.0 + slurmdb_report_cluster_wckey_by_user@Base 2.2.0 + slurmdb_report_job_sizes_grouped_by_top_account@Base 2.2.0 + slurmdb_report_job_sizes_grouped_by_top_account_then_wckey@Base 2.2.0 + slurmdb_report_job_sizes_grouped_by_wckey@Base 2.2.0 + slurmdb_report_set_start_end_time@Base 2.2.0 + slurmdb_report_user_top_usage@Base 2.2.0 + slurmdb_reservations_get@Base 2.2.0 + slurmdb_send_accounting_update@Base 2.2.1 + slurmdb_setup_cluster_dim_size@Base 2.3.1 + slurmdb_setup_cluster_dims@Base 2.2.0 + slurmdb_setup_cluster_flags@Base 2.2.0 + slurmdb_setup_cluster_name_dims@Base 2.3.1 + slurmdb_slurmdbd_free_id_rc_msg@Base 2.2.0 + slurmdb_slurmdbd_free_list_msg@Base 2.2.0 + slurmdb_slurmdbd_free_rc_msg@Base 2.2.0 + slurmdb_slurmdbd_free_usage_msg@Base 2.2.0 + slurmdb_sort_hierarchical_assoc_list@Base 2.2.0 + slurmdb_str_2_cluster_flags@Base 2.2.0 + slurmdb_tree_name_get@Base 2.2.0 + slurmdb_txn_get@Base 2.2.0 + slurmdb_unpack_account_cond@Base 2.2.0 + slurmdb_unpack_account_rec@Base 2.2.0 + slurmdb_unpack_accounting_rec@Base 2.2.0 + slurmdb_unpack_archive_cond@Base 2.2.0 + slurmdb_unpack_archive_rec@Base 2.2.0 + slurmdb_unpack_association_cond@Base 2.2.0 + slurmdb_unpack_association_rec@Base 2.2.0 + slurmdb_unpack_cluster_accounting_rec@Base 2.2.0 + slurmdb_unpack_cluster_cond@Base 2.2.0 + slurmdb_unpack_cluster_rec@Base 2.2.0 + slurmdb_unpack_coord_rec@Base 2.2.0 + slurmdb_unpack_event_cond@Base 2.2.0 + slurmdb_unpack_event_rec@Base 2.2.0 + slurmdb_unpack_job_cond@Base 2.2.0 + slurmdb_unpack_job_modify_cond@Base 2.2.0 + slurmdb_unpack_job_rec@Base 2.2.0 + slurmdb_unpack_qos_cond@Base 2.2.0 + slurmdb_unpack_qos_rec@Base 2.2.0 + slurmdb_unpack_reservation_cond@Base 2.2.0 + slurmdb_unpack_reservation_rec@Base 2.2.0 + slurmdb_unpack_selected_step@Base 2.2.0 + slurmdb_unpack_step_rec@Base 2.2.0 + slurmdb_unpack_txn_cond@Base 2.2.0 + slurmdb_unpack_txn_rec@Base 2.2.0 + slurmdb_unpack_update_object@Base 2.2.0 + slurmdb_unpack_used_limits@Base 2.2.0 + slurmdb_unpack_user_cond@Base 2.2.0 + slurmdb_unpack_user_rec@Base 2.2.0 + slurmdb_unpack_wckey_cond@Base 2.2.0 + slurmdb_unpack_wckey_rec@Base 2.2.0 + slurmdb_usage_get@Base 2.2.0 + slurmdb_usage_roll@Base 2.2.0 + slurmdb_users_add@Base 2.2.0 + slurmdb_users_get@Base 2.2.0 + slurmdb_users_modify@Base 2.2.0 + slurmdb_users_remove@Base 2.2.0 + slurmdb_wckeys_add@Base 2.2.0 + slurmdb_wckeys_get@Base 2.2.0 + slurmdb_wckeys_modify@Base 2.2.0 + slurmdb_wckeys_remove@Base 2.2.0 diff -Nru slurm-llnl-2.2.7/debian/patches/mail-path slurm-llnl-2.3.2/debian/patches/mail-path --- slurm-llnl-2.2.7/debian/patches/mail-path 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/debian/patches/mail-path 2011-10-23 20:17:43.000000000 +0000 @@ -0,0 +1,60 @@ +Description: mail command absolute pathname + This patch changes the default command to /usr/bin/mail in various + configuration files and manual pages. +Author: Gennaro Oliva +Bug-Debian: http://bugs.debian.org/588862 +Forwarded: no + +--- slurm-llnl-2.3.0.orig/src/common/read_config.h ++++ slurm-llnl-2.3.0/src/common/read_config.h +@@ -85,7 +85,7 @@ extern char *default_plugstack; + #define DEFAULT_KILL_ON_BAD_EXIT 0 + #define DEFAULT_KILL_TREE 0 + #define DEFAULT_KILL_WAIT 30 +-#define DEFAULT_MAIL_PROG "/bin/mail" ++#define DEFAULT_MAIL_PROG "/usr/bin/mail" + #define DEFAULT_MAX_JOB_COUNT 10000 + #define DEFAULT_MAX_JOB_ID 0xffff0000 + #define DEFAULT_MAX_STEP_COUNT 40000 +--- slurm-llnl-2.3.0.orig/doc/man/man1/strigger.1 ++++ slurm-llnl-2.3.0/doc/man/man1/strigger.1 +@@ -263,7 +263,7 @@ primary slurmctld fails. + strigger \-\-set \-\-primary_slurmctld_failure \\ + \-\-program=/usr/sbin/primary_slurmctld_failure + # Notify the administrator of the failure using by e\-mail +- /bin/mail slurm_admin@site.com \-s Primary_SLURMCTLD_FAILURE ++ /usr/bin/mail slurm_admin@site.com \-s Primary_SLURMCTLD_FAILURE + + > strigger \-\-set \-\-primary_slurmctld_failure \\ + \-\-program=/usr/sbin/primary_slurmctld_failure +@@ -282,7 +282,7 @@ argument to the script by SLURM). + strigger \-\-set \-\-node \-\-down \\ + \-\-program=/usr/sbin/slurm_admin_notify + # Notify administrator using by e\-mail +- /bin/mail slurm_admin@site.com \-s NodesDown:$* ++ /usr/bin/mail slurm_admin@site.com \-s NodesDown:$* + + > strigger \-\-set \-\-node \-\-down \\ + \-\-program=/usr/sbin/slurm_admin_notify +--- slurm-llnl-2.3.0.orig/doc/man/man5/slurm.conf.5 ++++ slurm-llnl-2.3.0/doc/man/man5/slurm.conf.5 +@@ -735,7 +735,7 @@ not explicitly listed in the job submiss + .TP + \fBMailProg\fR + Fully qualified pathname to the program used to send email per user request. +-The default value is "/bin/mail". ++The default value is "/usr/bin/mail". + + .TP + \fBMaxJobCount\fR +--- slurm-llnl-2.3.0.orig/doc/html/configurator.html.in ++++ slurm-llnl-2.3.0/doc/html/configurator.html.in +@@ -143,7 +143,7 @@ function displayfile() + "#JobSubmitPlugins=1
" + + "#KillOnBadExit=0
" + + "#Licenses=foo*4,bar
" + +- "#MailProg=/bin/mail
" + ++ "#MailProg=/usr/bin/mail
" + + "#MaxJobCount=5000
" + + "#MaxStepCount=40000
" + + "#MaxTasksPerNode=128
" + diff -Nru slurm-llnl-2.2.7/debian/patches/mail-path-patch slurm-llnl-2.3.2/debian/patches/mail-path-patch --- slurm-llnl-2.2.7/debian/patches/mail-path-patch 2011-05-06 17:35:29.000000000 +0000 +++ slurm-llnl-2.3.2/debian/patches/mail-path-patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -Description: mail command absolute pathname - This patch changes the default command to /usr/bin/mail in various - configuration files and manual pages. -Author: Gennaro Oliva -Bug-Debian: http://bugs.debian.org/588862 -Forwarded: no - ---- slurm-llnl-2.2.1.orig/src/common/read_config.h -+++ slurm-llnl-2.2.1/src/common/read_config.h -@@ -84,7 +84,7 @@ extern char *default_plugstack; - #define DEFAULT_KILL_ON_BAD_EXIT 0 - #define DEFAULT_KILL_TREE 0 - #define DEFAULT_KILL_WAIT 30 --#define DEFAULT_MAIL_PROG "/bin/mail" -+#define DEFAULT_MAIL_PROG "/usr/bin/mail" - #define DEFAULT_MAX_JOB_COUNT 10000 - #define DEFAULT_MEM_PER_CPU 0 - #define DEFAULT_MAX_MEM_PER_CPU 0 ---- slurm-llnl-2.2.1.orig/doc/man/man1/strigger.1 -+++ slurm-llnl-2.2.1/doc/man/man1/strigger.1 -@@ -257,7 +257,7 @@ primary slurmctld fails. - strigger \-\-set \-\-primary_slurmctld_failure \\ - \-\-program=/usr/sbin/primary_slurmctld_failure - # Notify the administrator of the failure using by e\-mail -- /bin/mail slurm_admin@site.com \-s Primary_SLURMCTLD_FAILURE -+ /usr/bin/mail slurm_admin@site.com \-s Primary_SLURMCTLD_FAILURE - - > strigger \-\-set \-\-primary_slurmctld_failure \\ - \-\-program=/usr/sbin/primary_slurmctld_failure -@@ -276,7 +276,7 @@ argument to the script by SLURM). - strigger \-\-set \-\-node \-\-down \\ - \-\-program=/usr/sbin/slurm_admin_notify - # Notify administrator using by e\-mail -- /bin/mail slurm_admin@site.com \-s NodesDown:$* -+ /usr/bin/mail slurm_admin@site.com \-s NodesDown:$* - - > strigger \-\-set \-\-node \-\-down \\ - \-\-program=/usr/sbin/slurm_admin_notify ---- slurm-llnl-2.2.1.orig/doc/man/man5/slurm.conf.5 -+++ slurm-llnl-2.2.1/doc/man/man5/slurm.conf.5 -@@ -722,7 +722,7 @@ not explicitly listed in the job submiss - .TP - \fBMailProg\fR - Fully qualified pathname to the program used to send email per user request. --The default value is "/bin/mail". -+The default value is "/usr/bin/mail". - - .TP - \fBMaxJobCount\fR ---- slurm-llnl-2.2.1.orig/doc/html/configurator.html.in -+++ slurm-llnl-2.2.1/doc/html/configurator.html.in -@@ -163,7 +163,7 @@ function displayfile() - "#JobSubmitPlugins=1
" + - "#KillOnBadExit=0
" + - "#Licenses=foo*4,bar
" + -- "#MailProg=/bin/mail
" + -+ "#MailProg=/usr/bin/mail
" + - "#MaxJobCount=5000
" + - "#MaxTasksPerNode=128
" + - "MpiDefault=" + get_radio_value(document.config.mpi_default) + "
" + diff -Nru slurm-llnl-2.2.7/debian/patches/pamlibslurm slurm-llnl-2.3.2/debian/patches/pamlibslurm --- slurm-llnl-2.2.7/debian/patches/pamlibslurm 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/debian/patches/pamlibslurm 2011-12-28 12:02:37.000000000 +0000 @@ -0,0 +1,68 @@ +Description: Making pamslurm use libslurm shipped with the libslurm package + The pam_slurm module dlopen libslurm.so that is a link usually shipped + with the dev package (libslurm-dev), this patch modify the source to + open the libslur.so.version shipped with the libslurm package. + +--- +Origin: maintainer +Forwarded: by mail +Reviewed-By: Moe Jette +Last-Update: 2011-12-21 + +--- slurm-llnl-2.3.2.orig/contribs/pam/pam_slurm.c ++++ slurm-llnl-2.3.2/contribs/pam/pam_slurm.c +@@ -30,6 +30,9 @@ + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + \*****************************************************************************/ + ++#if HAVE_CONFIG_H ++# include "config.h" ++#endif + + #include + #include +@@ -357,12 +360,42 @@ _send_denial_msg(pam_handle_t *pamh, str + */ + extern void libpam_slurm_init (void) + { ++ char libslurmname[64]; ++ + if (slurm_h) + return; + +- if (!(slurm_h = dlopen("libslurm.so", RTLD_NOW|RTLD_GLOBAL))) +- _log_msg (LOG_ERR, "Unable to dlopen libslurm: %s\n", ++ /* First try to use the same libslurm version ("libslurm.so.24.0.0"), ++ * Second try to match the major version number ("libslurm.so.24"), ++ * Otherwise use "libslurm.so" */ ++ ++ if (snprintf(libslurmname, sizeof(libslurmname), ++ "libslurm.so.%d.%d.%d", SLURM_API_CURRENT, SLURM_API_REVISION, ++ SLURM_API_AGE) >= sizeof(libslurmname) ) { ++ _log_msg (LOG_ERR, "Unable to write libslurmname\n"); ++ } ++ else { ++ if (!(slurm_h = dlopen(libslurmname, RTLD_NOW|RTLD_GLOBAL))) { ++ _log_msg (LOG_INFO, "Unable to dlopen %s: %s\n", ++ libslurmname, dlerror ()); ++ } ++ } ++ ++ if (snprintf(libslurmname, sizeof(libslurmname), "libslurm.so.%d", ++ SLURM_API_CURRENT) >= sizeof(libslurmname) ) { ++ _log_msg (LOG_ERR, "Unable to write libslurmname\n"); ++ } ++ else { ++ if (!(slurm_h = dlopen(libslurmname, RTLD_NOW|RTLD_GLOBAL))) { ++ _log_msg (LOG_INFO, "Unable to dlopen %s: %s\n", ++ libslurmname, dlerror ()); ++ } ++ } ++ ++ if (!(slurm_h = dlopen("libslurm.so", RTLD_NOW|RTLD_GLOBAL))) { ++ _log_msg (LOG_ERR, "Unable to dlopen libslurm.so: %s\n", + dlerror ()); ++ } + + return; + } diff -Nru slurm-llnl-2.2.7/debian/patches/series slurm-llnl-2.3.2/debian/patches/series --- slurm-llnl-2.2.7/debian/patches/series 2011-06-10 11:21:35.000000000 +0000 +++ slurm-llnl-2.3.2/debian/patches/series 2011-12-21 12:17:15.000000000 +0000 @@ -1 +1,2 @@ -mail-path-patch +mail-path +pamlibslurm diff -Nru slurm-llnl-2.2.7/debian/rules slurm-llnl-2.3.2/debian/rules --- slurm-llnl-2.2.7/debian/rules 2011-07-11 14:01:11.000000000 +0000 +++ slurm-llnl-2.3.2/debian/rules 2011-12-21 08:32:17.000000000 +0000 @@ -39,7 +39,7 @@ cp -f /usr/share/misc/config.guess config.guess endif # Add here commands to configure the package. - CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --sysconfdir=/etc/slurm-llnl --with-munge --localstatedir=/var/run/slurm-llnl --without-blcr --libexecdir=/usr/share --enable-pam + CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --sysconfdir=/etc/slurm-llnl --with-munge --localstatedir=/var/run/slurm-llnl --without-blcr --libexecdir=/usr/share --enable-pam --without-rpath @@ -68,6 +68,7 @@ # Add here commands to clean up after the build process. [ ! -f contribs/perlapi/Makefile ] || $(MAKE) -C contribs/perlapi distclean [ ! -f contribs/torque/Makefile ] || $(MAKE) -C contribs/torque distclean + [ ! -f contribs/pam/Makefile ] || $(MAKE) -C contribs/pam distclean [ ! -f Makefile ] || $(MAKE) distclean rm -rf .pc contribs/pam/.deps \ @@ -106,12 +107,14 @@ # Add here commands to install the arch part of the package into # debian/tmp. $(MAKE) install DESTDIR=$(CURDIR)/debian/slurm-llnl + sed -i "s/\-shared/-shared -lc/" contribs/pam/Makefile + $(MAKE) -C contribs/pam install DESTDIR=$(CURDIR)/debian/slurm-llnl sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'` rm -fr debian/slurm-llnl/usr/lib/slurm/src rm -f debian/slurm-llnl/usr/sbin/slurm_epilog rm -f debian/slurm-llnl/usr/sbin/slurm_prolog rmdir debian/slurm-llnl/usr/share/slurm - dh_install debian/slurm-llnl-configurator.html usr/share/doc/slurm-llnl + dh_install -pslurm-llnl debian/slurm-llnl-configurator.html usr/share/doc/slurm-llnl rm -rf debian/slurm-llnl/usr/share/doc/slurm-[0-9]* # pmi packages @@ -128,7 +131,7 @@ dh_install -plibslurmdb-dev debian/slurm-llnl/usr/lib/libslurmdb.a usr/lib dh_install -plibslurmdb-dev debian/slurm-llnl/usr/lib/libslurmdb.la usr/lib dh_install -plibslurmdb-dev debian/slurm-llnl/usr/lib/libslurmdb.so usr/lib - dh_install -plibslurmdb22 debian/slurm-llnl/usr/lib/libslurmdb.so.* usr/lib + dh_install -plibslurmdb23 debian/slurm-llnl/usr/lib/libslurmdb.so.* usr/lib rm -f debian/slurm-llnl/usr/include/slurm/slurmdb.h rm -f debian/slurm-llnl/usr/lib/libslurmdb.a rm -f debian/slurm-llnl/usr/lib/libslurmdb.la @@ -141,7 +144,10 @@ dh_install -plibslurm-dev debian/slurm-llnl/usr/lib/lib*.la usr/lib dh_install -plibslurm-dev debian/slurm-llnl/usr/lib/lib*.so usr/lib dh_installman -plibslurm-dev debian/slurm-llnl/usr/share/man/man3/* - dh_install -plibslurm22 debian/slurm-llnl/usr/lib/libslurm.so.* usr/lib + dh_install -plibslurm23 debian/slurm-llnl/usr/lib/libslurm.so.* usr/lib + #LIBSLURM = `ls -v debian/slurm-llnl/usr/lib/libslurm.so* | tail -1` + #ls -v debian/slurm-llnl/usr/lib/libslurm.so* | tail -1 + #echo LIBSLURM is $(LIBSLURM) rm -rf debian/slurm-llnl/usr/include rm -f debian/slurm-llnl/usr/lib/*.a rm -f debian/slurm-llnl/usr/lib/lib*.la @@ -172,7 +178,6 @@ dh_install -pslurm-llnl-slurmdbd debian/slurm-llnl/usr/share/man/man8/slurmdbd.8 usr/share/man/man8 dh_install -pslurm-llnl-slurmdbd debian/slurm-llnl/usr/share/man/man5/slurmdbd.conf.5 usr/share/man/man5 dh_install -pslurm-llnl-slurmdbd debian/slurm-llnl/usr/share/man/man1/sacctmgr.1 usr/share/man/man1 - rm -f debian/slurm-llnl/usr/sbin/slurmdbd rm -f debian/slurm-llnl/usr/bin/sacctmgr rm -f debian/slurm-llnl/usr/share/man/man8/slurmdbd.8 @@ -181,6 +186,11 @@ rmdir debian/slurm-llnl/usr/lib + #libpam-slurm package + dh_install -plibpam-slurm debian/slurm-llnl/lib/security/pam_slurm.so lib/security + rm -rf debian/slurm-llnl/lib + + # Perl $(MAKE) -C contribs/perlapi install DESTDIR=$(CURDIR)/debian/libslurm-perl PERL_MM_OPT="INSTALLDIRS=vendor" diff -Nru slurm-llnl-2.2.7/debian/slurm-llnl-configurator.html slurm-llnl-2.3.2/debian/slurm-llnl-configurator.html --- slurm-llnl-2.2.7/debian/slurm-llnl-configurator.html 2011-04-04 13:39:29.000000000 +0000 +++ slurm-llnl-2.3.2/debian/slurm-llnl-configurator.html 2011-12-05 12:48:18.000000000 +0000 @@ -1,11 +1,11 @@ -

Accounting

- -

NOTE: This documents accounting features available in SLURM version -1.3, which are far more extensive than those available in previous -releases.

+

Accounting and Resource Limits

SLURM can be configured to collect accounting information for every job and job step executed. @@ -386,7 +382,7 @@ As the mysql user grant privileges to that user using a command such as:

-

GRANT ALL ON StorageLoc.* TO 'StorageUser'@'StorageHost'; +

GRANT ALL ON StorageLoc.* TO 'StorageUser'@'StorageHost';
(The ticks are needed)

(You need to be root to do this. Also in the info for password @@ -394,7 +390,7 @@ prompt since the previous mysql statement did not end with a ';'. It assumes that you wish to input more info.)

-

live example:

+

Live example:

 mysql@snowflake:~$ mysql
@@ -664,8 +660,10 @@
 if not we will refer to the account associated with the job.
 If the account doesn't have the limit set we will refer to
 the cluster's limits.
-If the cluster doesn't have the limit set no limit will be enforced.
-

All of the above entities can include limits as described below... +If the cluster doesn't have the limit set no limit will be enforced.

+ +

All of the above entities can include limits as described below and +in the Resource Limits document.

    @@ -673,7 +671,6 @@ Essentially this is the amount of claim this association and it's children have to the above system. Can also be the string "parent", this means that the parent association is used for fairshare. -
  • GrpCPUMins= A hard limit of cpu minutes to be used by jobs @@ -780,7 +777,7 @@ If an entity has existed for less than 1 day, the entity will be removed completely. This is meant to clean up after typographic errors.

    -

    Last modified 27 January 2010

    +

    Last modified 10 June 2010

    diff -Nru slurm-llnl-2.2.7/doc/html/accounting_storageplugins.shtml slurm-llnl-2.3.2/doc/html/accounting_storageplugins.shtml --- slurm-llnl-2.2.7/doc/html/accounting_storageplugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/accounting_storageplugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -303,7 +303,7 @@ List acct_storage_p_modify_job(void *db_conn, uint32_t uid, acct_job_modify_cond_t *job_cond, acct_job_rec_t *job)

    Description:
    -Used to modify two fields (the derived exit code and derived exit string) of an +Used to modify two fields (the derived exit code and the comment string) of an existing job in the storage type. Can only modify one job at a time.

    Arguments:
    db_conn (input) connection to @@ -785,6 +785,24 @@ SLURM_ERROR on failure.

    +int clusteracct_storage_p_fini_ctld(void *db_conn, char *ip, +uint16_t port, char *cluster_nodes) +

    Description:
    +Used when a controller is turned off to tell the storage type the + slurmctld has gone away. +

    Arguments:
    +db_conn (input) connection to +the storage type.
    +ip (input) ip of connected slurmctld.
    +port (input) port on host cluster is +running on the host is grabbed from the connection.
    +cluster_nodes (input) name of all +nodes currently on the cluster.
    +

    Returns:
    +SLURM_SUCCESS on success, or
    +SLURM_ERROR on failure. + +

    int jobacct_storage_p_job_start(void *db_conn, struct job_record *job_ptr)

    Description:
    Note that a job is about to begin execution or has just changed size. diff -Nru slurm-llnl-2.2.7/doc/html/big_sys.shtml slurm-llnl-2.3.2/doc/html/big_sys.shtml --- slurm-llnl-2.2.7/doc/html/big_sys.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/big_sys.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -72,7 +72,7 @@ on each compute node and use it for scheduling purposes, this entails extra overhead. Optimize performance by specifying the expected configuration using -the available parameters (RealMemory, Procs, and +the available parameters (RealMemory, CPUs, and TmpDisk). If the node is found to contain less resources than configured, it will be marked DOWN and not used. diff -Nru slurm-llnl-2.2.7/doc/html/bluegene.shtml slurm-llnl-2.3.2/doc/html/bluegene.shtml --- slurm-llnl-2.2.7/doc/html/bluegene.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/bluegene.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -6,40 +6,45 @@

    This document describes the unique features of SLURM on the IBM BlueGene systems. -You should be familiar with the SLURM's mode of operation on Linux clusters +You should be familiar with SLURM's mode of operation on Linux clusters before studying the relatively few differences in BlueGene operation described in this document.

    BlueGene systems have several unique features making for a few differences in how SLURM operates there. -The BlueGene system consists of one or more base partitions or -midplanes connected in a three-dimensional torus. -Each base partition consists of 512 c-nodes each containing two processors; -one designed primarily for computations and the other primarily for managing communications. -The c-nodes can execute only one process and thus are unable to execute both -the user's jobs and SLURM's slurmd daemon. -Thus the slurmd daemon executes on one of the BlueGene Front End Nodes. -This single slurmd daemon provides (almost) all of the normal SLURM services +BlueGene systems consists of one or more base partitions or +midplanes connected in a three-dimensional (BlueGene/L and BlueGene/P +systems) or five-dimensional (BlueGene/Q) torus. +Each base partition typically includes 512 c-nodes or compute +nodes each containing two or more cores; +one core is typically designed primarily for managing communications while the +other cores are used primarily for computations. +Each c-node can execute only one process and thus are unable to execute +both the user's application plus SLURM's slurmd daemon. +Thus the slurmd daemon(s) executes on one or more of the BlueGene +Front End Nodes. +The slurmd daemons provide (almost) all of the normal SLURM services for every base partition on the system.

    Internally SLURM treats each base partition as one node with -1024 processors, which keeps the number of entities being managed reasonable. +a processor count equal to the number of cores on the base partition, which +keeps the number of entities being managed by SLURM more reasonable. Since the current BlueGene software can sub-allocate a base partition -into blocks of 32 and/or 128 c-nodes, more than one user job can execute -on each base partition (subject to system administrator configuration). +into smaller blocks, more than one user job can execute on each base +partition (subject to system administrator configuration). In the case of +BlueGene/Q systems, more than one user job can also execute in each block. To effectively utilize this environment, SLURM tools present the user with -the view that each c-nodes is a separate node, so allocation requests -and status information use c-node counts (this is a new feature in -SLURM version 1.1). +the view that each c-node is a separate node, so allocation requests +and status information use c-node counts. Since the c-node count can be very large, the suffix "k" can be used -to represent multiples of 1024 (e.g. "2k" is equivalent to "2048").

    +to represent multiples of 1024 or "m" for multiples of 1,048,576 (1024 x 1024). +For example, "2k" is equivalent to "2048".

    User Tools

    -

    The normal set of SLURM user tools: sbatch, scancel, sinfo, squeue, and scontrol -provide all of the expected services except support for job steps. -SLURM performs resource allocation for the job, but initiation of tasks is performed -using the mpirun command. SLURM has no concept of a job step on BlueGene. +

    The normal set of SLURM user tools: sbatch, scancel, sinfo, squeue, and +scontrol provide all of the expected services except support for job steps, +which is detailed later. Seven new sbatch options are available: --geometry (specify job size in each dimension), --no-rotate (disable rotation of geometry), @@ -52,25 +57,25 @@ --ramdisk-image (specify alternative ramdisk image for bluegene block. Default if not set, BGL only.) The --nodes option with a minimum and (optionally) maximum node count continues to be available. - Note that this is a c-node count.

    -

    To reiterate: sbatch is used to submit a job script, -but mpirun is used to launch the parallel tasks. -Note that a SLURM batch job's default stdout and stderr file names are generated -using the SLURM job ID. -When the SLURM control daemon is restarted, SLURM job ID values can be repeated, -therefore it is recommended that batch jobs explicitly specify unique names for -stdout and stderr files using the srun options --output and --error -respectively. -While the salloc command may be used to create an interactive SLURM job, -it will be the responsibility of the user to insure that the bgblock -is ready for use before initiating any mpirun commands. -SLURM will assume this responsibility for batch jobs. -The script that you submit to SLURM can contain multiple invocations of mpirun as -well as any desired commands for pre- and post-processing. +

    Task Launch on BlueGene/Q only

    + +

    Use SLURM's srun command to launch tasks (srun is a wrapper for IBM's +runjob command. +SLURM job step information including accounting functions as expected.

    + +

    Task Launch on BlueGene/L and BlueGene/P only

    + +

    SLURM performs resource allocation for the job, but initiation of tasks is +performed using the mpirun command. SLURM has no concept of a job step +on BlueGene/L or BlueGene/P systems. +To reiterate: salloc or sbatch are used to create a job allocation, but +mpirun is used to launch the parallel tasks. +The script that you submit to SLURM can contain multiple invocations of mpirun +as well as any desired commands for pre- and post-processing. The mpirun command will get its bgblock information from the -MPIRUN_PARTITION as set by SLURM. A sample script is shown below. +MPIRUN_PARTITION as set by SLURM. A sample script is shown below.

     #!/bin/bash
     # pre-processing
    @@ -80,51 +85,50 @@
     mpirun -exec /home/user/prog -cwd /home/user -args 124
     # post-processing
     date
    -

    - -

    Naming Convensions

    -

    The naming of base partitions includes a three-digit suffix representing the its -coordinates in the X, Y and Z dimensions with a zero origin. -For example, "bg012" represents the base partition whose coordinate is at X=0, Y=1 and Z=2. In a system -configured with small blocks (any block less than a full base partition) there will be divisions -into the base partition notation. For example, if there were 64 psets in the -configuration, bg012[0-15] represents -the first quarter or first 16 ionodes of a midplane. In BlueGene/L -this would be 128 c-node block. To represent the first nodecard in the -second quarter or ionodes 16-19 the notation would be bg012[16-19], or -a 32 c-node block. -Since jobs must allocate consecutive base partitions in all three dimensions, we have developed -an abbreviated format for describing the base partitions in one of these three-dimensional blocks. -The base partition has a prefix determined from the system which is followed by the end-points -of the block enclosed in square-brackets and separated by an "x". -For example, "bg[620x731]" is used to represent the eight base partitions enclosed in a block -with end-points and bg620 and bg731 (bg620, bg621, bg630, bg631, bg720, bg721, -bg730 and bg731).

    - -

    -IMPORTANT: SLURM version 1.2 or higher can handle a bluegene system of -sizes up to 36x36x36. To try to keep with the 'three-digit suffix -representing the its coordinates in the X, Y and Z dimensions with a -zero origin', we now support A-Z as valid numbers. This makes it so -the prefix must always be lower case, and any letters in the -three-digit suffix must always be upper case. This schema -should be used in your slurm.conf file and in your bluegene.conf file -if you put a prefix there even though it is not necessary there. This -schema should also be used to specify midplanes or locations in -configure mode of smap. +

+

Naming Conventions

+

The naming of base partitions includes a numeric suffix representing the its +coordinates with a zero origin. The suffix contains three digits on BlueGene/L +and BlueGene/P systems, while four digits are required for the BlueGene/Q +systems. For example, "bgp012" represents the base partition whose coordinate +is at X=0, Y=1 and Z=2. +SLURM uses an abbreviated format for describing base partitions in which the +end-points of the block enclosed are in square-brackets and separated by an "x". +For example, "bgp[620x731]" is used to represent the eight base partitions +enclosed in a block with end-points and bgp620 and bgp731 (bgp620, bgp621, +bgp630, bgp631, bgp720, bgp721, bgp730 and bgp731).

+ +

IMPORTANT: SLURM higher can support up to 36 elements in each +BlueGene dimension by supporting "A-Z" as valid numbers. SLURM requires the +prefix to be lower case and any letters in the suffix must always be upper +case. This schema must be used in both the slurm.conf and bluegene.conf +configuration files when specifying midplane/node names (the prefix is +optional). This schema should also be used to specify midplanes or locations +in configure mode of smap:
-valid: bgl[000xC44] bgl000 bglZZZ +valid: bgl[000xC44], bgl000, bglZZZ
-invalid: BGL[000xC44] BglC00 bglb00 Bglzzz +invalid: BGL[000xC44], BglC00, bglb00, Bglzzz

-

One new tool provided is smap. -As of SLURM version 1.2, sview is -another new tool offering even more viewing and configuring options. -Smap is aware of system topography and provides a map of what base partitions -are allocated to jobs, partitions, etc. -See the smap man page for details. +

In a system configured with small blocks (any block less +than a full base partition) there will be divisions in the base partition +notation. On BlueGene/L and BlueGene/P systems, the base partition name may +be followed by a square bracket enclosing ID numbers of the IO nodes associated +with the block. For example, if there are 64 psets in a BlueGene/L +configuration, "bgl012[0-15]" represents the first quarter or first 16 IO nodes +of a midplane. In BlueGene/L this would be 128 c-node block. To represent +the first nodecard in the second quarter or IO nodes 16-19, the notation would +be "bgl012[16-19]", or a 32 c-node block. On BlueGene/Q systems, the specific +c-nodes would be identified in square brackets using their five digit +coordinates. For example "bgq0123[00000x11111]" would represent the 32 c-nodes +in midplane "bgq0123" having coordinates (within that midplane) from zero to +one in each of the five dimensions.

+ +

Two topology-aware graphical user interfaces are provided: smap and +sview (sview provides more viewing and configuring options). +See each command's man page for details. A sample of smap output is provided below showing the location of five jobs. Note the format of the list of base partitions allocated to each job. Also note that idle (unassigned) base partitions are indicated by a period. @@ -226,14 +230,17 @@

The slurmctld daemon should execute on the system's service node. If an optional backup daemon is used, it must be in some location where it is capable of executing Bridge APIs. -One slurmd daemon should be configured to execute on one of the front end nodes. -That one slurmd daemon represents communications channel for every base partition. -You can use the scontrol command to drain individual nodes as desired and -return them to service.

- -

The slurm.conf (configuration) file needs to have the value of InactiveLimit -set to zero or not specified (it defaults to a value of zero). -This is because there are no job steps and we don't want to purge jobs prematurely. +The slurmd daemons executes the user scripts and there must be at least one +front end node configured for this purpose. Multiple front end nodes may be +configured for slurmd use to improve performance and fault tolerance. +Each slurmd can execute jobs for every base partition and the work will be +distributed among the slurmd daemons to balance the workload. +You can use the scontrol command to drain individual compute nodes as desired +and return them to service.

+ +

The slurm.conf (configuration) file needs to have the value of +InactiveLimit set to zero or not specified (it defaults to a value of zero). +This is because if there are no job steps, we don't want to purge jobs prematurely. The value of SelectType must be set to "select/bluegene" in order to have node selection performed using a system aware of the system's topography and interfaces. @@ -248,7 +255,7 @@ The prolog and epilog programs are used to insure proper synchronization between the slurmctld daemon, the user job, and MMCS. A multitude of other functions may also be placed into the prolog and -epilog as desired (e.g. enabling/disabling user logins, puring file systmes, +epilog as desired (e.g. enabling/disabling user logins, purging file systems, etc.). Sample prolog and epilog scripts follow.

@@ -257,8 +264,9 @@
 #
 # Wait for bgblock to be ready for this job's use
 /usr/sbin/slurm_prolog
+
- +
 #!/bin/bash
 # Sample BlueGene Epilog script
 #
@@ -294,31 +302,47 @@
 
 

SLURM node and partition descriptions should make use of the naming conventions described above. For example, -"NodeName=bg[000x733] NodeAddr=frontend0 NodeHostname=frontend0 Procs=1024" +"NodeName=bg[000x733] CPUs=1024" is used in slurm.conf to define a BlueGene system with 128 midplanes -in an 8 by 4 by 4 matrix. +in an 8 by 4 by 4 matrix and each midplane is configured with 1024 processors +(cores). The node name prefix of "bg" defined by NodeName can be anything you want, but needs to be consistent throughout the slurm.conf file. -Note that the values of both NodeAddr and NodeHostname for all -128 base partitions is the name of the front-end node executing -the slurmd daemon. No computer is actually expected to a hostname of "bg000" and no -attempt will be made to route message traffic to this address.

+attempt will be made to route message traffic to this address.

-

While users are unable to initiate SLURM job steps on BlueGene systems, -this restriction does not apply to user root or SlurmUser. -Be advised that the one slurmd supporting all nodes is unable to manage a -large number of job steps, so this ability should be used only to verify normal -SLURM operation. +

Front end nodes used for executing the slurmd daemons must also be defined +in the slurm.conf file. +It is recommended that at least two front end nodes be dedicated to use by +the slurmd daemons for fault tolerance. +For example: +"FrontendName=frontend[00-03] State=UNKNOWN" +is used to define four front end nodes for running slurmd daemons.

+ +
+# Portion of slurm.conf for BlueGene system
+InactiveLimit=0
+SelectType=select/bluegene
+Prolog=/usr/sbin/prolog
+Epilog=/usr/sbin/epilog
+#
+FrontendName=frontend[00-01] State=UNKNOWN
+NodeName=bg[000x733] CPUs=1024 State=UNKNOWN
+
+ +

While users are unable to initiate SLURM job steps on BlueGene/L or BlueGene/P +systems, this restriction does not apply to user root or SlurmUser. +Be advised that the slurmd daemon is unable to manage a large number of job +steps, so this ability should be used only to verify normal SLURM operation. If large numbers of job steps are initiated by slurmd, expect the daemon to fail due to lack of memory or other resources. -It is best to minimize other work on the front-end node executing slurmd +It is best to minimize other work on the front end nodes executing slurmd so as to maximize its performance and minimize other risk factors.

Bluegene.conf File Creation

In addition to the normal slurm.conf file, a new bluegene.conf configuration file is required with information pertinent -to the sytem. +to the system. Put bluegene.conf into the SLURM configuration directory with slurm.conf. A sample file is installed in bluegene.conf.example. @@ -326,7 +350,7 @@ configuration file for static partitioning. Note that smap -Dc can be run without the SLURM daemons active to establish the initial configuration. -Note that the defined bgblocks may not overlap (except for the +Note that the bgblocks defined using smap may not overlap (except for the full-system bgblock, which is implicitly created). See the smap man page for more information.

@@ -371,7 +395,7 @@ Dynamic partitioning was developed primarily for smaller BlueGene systems, but can be used on larger systems. Dynamic partitioning may introduce fragmentation of resources. -This fragementaiton may be severe since SLURM will run a job anywhere +This fragmentation may be severe since SLURM will run a job anywhere resources are available with little thought of the future. As with overlap partitioning, use dynamic partitioning with caution! @@ -383,17 +407,17 @@

Blocks can be freed or set in an error state with scontrol, (i.e. "scontrol update BlockName=RMP0 state=error"). This will end any job on the block and set the state of the block to ERROR -making it so no job will run on the block. To set it back to a useable -state set the state to free (i.e. +making it so no job will run on the block. To set it back to a usable +state, set the state to free (i.e. "scontrol update BlockName=RMP0 state=free").

Alternatively, if only part of a base partition needs to be put into an error state which isn't already in a block of the size you -need, you can set a set of ionodes into an error state with scontrol, +need, you can set a collection of IO nodes into an error state using scontrol (i.e. "scontrol update subbpname=bg000[0-3] state=error"). This will end any job on the nodes listed, create a block there, and set the state of the block to ERROR making it so no job will run on the -block. To set it back to a useable state set the state to free (i.e. +block. To set it back to a usable state set the state to free (i.e. "scontrol update BlockName=RMP0 state=free" or "scontrol update subbpname=bg000[0-3] state=free"). This is helpful to allow other jobs to run on the unaffected nodes in @@ -411,14 +435,19 @@

Note that the Numpsets values defined in bluegene.conf is used only when SLURM creates bgblocks this -determines if the system is IO rich or not. For most bluegene/L +determines if the system is IO rich or not. For most BlueGene/L systems this value is either 8 (for IO poor systems) or 64 (for IO rich -systems). -

The Images can change during job start based on input from -the user. +systems).

+ +

The Images file specifications identify which images are used when +booting a bgblock and the valid images are different for each BlueGene system +type (e.g. L, P and Q). Their values can change during job allocation based on +input from the user. If you change the bgblock layout, then slurmctld and slurmd should -both be cold-started (e.g. /etc/init.d/slurm startclean). -If you wish to modify the Numpsets values +both be cold-started (without preserving any state information, +"/etc/init.d/slurm startclean").

+ +

If you wish to modify the Numpsets values for existing bgblocks, either modify them manually or destroy the bgblocks and let SLURM recreate them. Note that in addition to the bgblocks defined in bluegene.conf, an @@ -429,7 +458,7 @@ A sample bluegene.conf file is shown below.

 ###############################################################################
-# Global specifications for BlueGene system
+# Global specifications for a BlueGene/L system
 #
 # BlrtsImage:           BlrtsImage used for creation of all bgblocks.
 # LinuxImage:           LinuxImage used for creation of all bgblocks.
@@ -531,7 +560,7 @@
 # volume = 1x1x1 = 1
 BPs=[000x000] Type=TORUS                            # 1x1x1 =  1 midplane
 BPs=[001x001] Type=SMALL 32CNBlocks=4 128CNBlocks=3 # 1x1x1 = 4-Nodecard sized
-                                                    # cnode blocks 3-Base
+                                                    # c-node blocks 3-Base
                                                     # Partition Quarter sized
                                                     # c-node blocks
 
@@ -539,8 +568,8 @@
 
 

The above bluegene.conf file defines multiple bgblocks to be created in a single midplane (see the "SMALL" option). -Using this mechanism, up to 32 independent jobs each consisting of 1 - 32 cnodes can be executed +Using this mechanism, up to 32 independent jobs each consisting of +32 c-nodes can be executed simultaneously on a one-rack BlueGene system. If defining bgblocks of Type=SMALL, the SLURM partition containing them as defined in slurm.conf must have the @@ -552,9 +581,10 @@ As in all SLURM configuration files, parameters and values are case insensitive.

-

With a BlueGene/P system the image names are different. The - correct image names are CnloadImage, MloaderImage, and IoloadImage. - You can also use alternate images just the same as discribed above. +

The valid image names on a BlueGene/P system are CnloadImage, MloaderImage, +and IoloadImage. The only image name on BlueGene/Q systems is MloaderImage. +Alternate images may be specified as described above for all BlueGene system +types.

One more thing is required to support SLURM interactions with the DB2 database (at least as of the time this was written). @@ -601,9 +631,9 @@ A system administrator should address the problem before returning the base partitions to service.

-

If you cold-start slurmctld (/etc/init.d/slurm startclean -or slurmctld -c) it is recommended that you also cold-start -the slurmd at the same time. +

If the slurmctld daemon is cold-started (/etc/init.d/slurm startclean +or slurmctld -c) it is recommended that the slurmd daemon(s) be +cold-started at the same time. Failure to do so may result in errors being reported by both slurmd and slurmctld due to bgblocks that previously existed being deleted.

@@ -614,20 +644,32 @@

Resource Reservations

-

This reservation mechanism for less than an entire midplane is still -under development.

+

SLURM's advance reservation mechanism can accept a node count specification +as input rather than identification of specific nodes/midplanes. In that case, +SLURM may reserve nodes/midplanes which may not be formed into an appropriate +bgblock. Work is planned for SLURM version 2.4 to remedy this problem. Until +that time, identifying the specific nodes/midplanes to be included in an +advanced reservation may be necessary.

SLURM's advance reservation mechanism is designed to reserve resources at the level of whole nodes, which on a BlueGene systems would represent whole midplanes. In order to support advanced reservations with a finer grained resolution, you can configure one license per c-node on the system -and reserve c-nodes instead of entire midplanes. For example, in slurm.conf -specify something of this sort: "Licenses=cnode*512". Then create an -advanced reservation with a command like this:
-"scontrol create reservation licenses="cnode*32" starttime=now duration=30:00 users=joe".

+and reserve c-nodes instead of entire midplanes. Note that reserved licenses +are treated somewhat differently than reserved nodes. When nodes are reserved +then jobs using that reservation can use only those nodes. Reserved licenses +can only be used by jobs associated with that reservation, but licenses not +explicitly reserved are available to any job.

+ +

For example, in slurm.conf specify something of this sort: +"Licenses=cnode*512". Then create an advanced reservation with a +command like this:
+"scontrol create reservation licenses="cnode*32" starttime=now duration=30:00 users=joe".
+Jobs run in this reservation will then have at least 32 c-nodes +available for their use, but could use more given an appropriate workload.

There is also a job_submit/cnode plugin available for use that will -automatically set a job's license specification to match his c-node request +automatically set a job's license specification to match its c-node request (i.e. a command like
"sbatch -N32 my.sh" would automatically be translated to
"sbatch -N32 --licenses=cnode*32 my.sh" by the slurmctld daemon. @@ -639,7 +681,7 @@

All of the testing and debugging guidance provided in Quick Start Administrator Guide apply to BlueGene systems. -One can start the slurmctld and slurmd in the foreground +One can start the slurmctld and slurmd daemons in the foreground with extensive debugging to establish basic functionality. Once running in production, the configured SlurmctldLog and SlurmdLog files will provide historical system information. @@ -659,18 +701,22 @@ This will define "HAVE_BG", "HAVE_BGL", and "HAVE_FRONT_END" in the config.h file. You can also emulate a BlueGene/P system with - the --enable-bgp-emulation option. +the --enable-bgp-emulation option. This will define "HAVE_BG", "HAVE_BGP", and "HAVE_FRONT_END" in the config.h file. +You can also emulate a BlueGene/Q system using +the --enable-bgq-emulation option. +This will define "HAVE_BG", "HAVE_BGQ", and "HAVE_FRONT_END" in the +config.h file. Then execute make normally. These variables will build the code as if it were running on an actual BlueGene computer, but avoid making calls to the -Bridge libary (that is controlled by the variable "HAVE_BG_FILES", +Bridge library (that is controlled by the variable "HAVE_BG_FILES", which is left undefined). You can use this to test configurations, scheduling logic, etc.

-

Last modified 17 March 2009

+

Last modified 16 August 2011

Binary files /tmp/jKTrgHjCbo/slurm-llnl-2.2.7/doc/html/bull.jpg and /tmp/eIE_aeUSMX/slurm-llnl-2.3.2/doc/html/bull.jpg differ diff -Nru slurm-llnl-2.2.7/doc/html/checkpoint_plugins.shtml slurm-llnl-2.3.2/doc/html/checkpoint_plugins.shtml --- slurm-llnl-2.2.7/doc/html/checkpoint_plugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/checkpoint_plugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -22,7 +22,6 @@ Berkeley Lab Checkpoint/Restart (BLCR)
  • none—No job checkpoint.
  • ompi—OpenMPI checkpoint (requires OpenMPI version 1.3 or higher).
  • -
  • xlch—XLCH
  • The plugin_name and diff -Nru slurm-llnl-2.2.7/doc/html/configurator.html.in slurm-llnl-2.3.2/doc/html/configurator.html.in --- slurm-llnl-2.2.7/doc/html/configurator.html.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/configurator.html.in 2011-12-05 17:20:08.000000000 +0000 @@ -1,11 +1,11 @@ + +

    CPU Management User and Administrator Guide

    + +

    Overview

    +

    The purpose of this guide is to assist SLURM users and administrators in selecting configuration options +and composing command lines to manage the use of CPU resources by jobs, steps and tasks. The document +is divided into the following sections:

    + + +

    CPU Management through user commands is constrained by the configuration parameters +chosen by the SLURM administrator. The interactions between different CPU management options are complex +and often difficult to predict. Some experimentation may be required to discover the exact combination +of options needed to produce a desired outcome. Users and administrators should refer to the man pages +for slurm.conf, cgroup.conf +salloc, +sbatch and srun for detailed explanations of each +option. The following html documents may also be useful:

    + +

    +Consumable Resources in SLURM
    +Sharing Consumable Resources
    +Support for Multi-core/Multi-thread +Architectures
    +Plane distribution

    + +

    This document describes SLURM CPU management for conventional Linux clusters only. For +information on Cray and IBM BlueGene systems, please refer to the appropriate documents.

    +

    The information and examples in this document have been verified on SLURM version 2.3.0. Some +information may not be valid for previous SLURM versions.


    + +

    CPU Management Steps performed by SLURM

    +

    SLURM uses four basic steps to manage CPU resources for a job/step:

    + + +

    Step 1: Selection of Nodes

    +

    In Step 1, SLURM selects the set of nodes from which CPU resources are to be allocated to a job or +job step. Node selection is therefore influenced by many of the configuration and command line options +that control the allocation of CPUs (Step 2 below). +If +SelectType=select/linear is configured, all resources on the selected nodes will be allocated +to the job/step. If SelectType=select/cons_res is configured, +individual sockets, cores and threads may be allocated from the selected nodes as +consumable resources. The consumable resource type is defined by +SelectTypeParameters. +
    +
    +Step 1 is performed by slurmctld and the select plugin. +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    slurm.conf options that control Step 1
    +

    slurm.conf + parameter

    +
    +

    Possible values

    +
    +

    Description

    +
    +

    + NodeName

    +
    +

    <name of the node>

    + Plus additional parameters. See man page for details.

    +
    +

    Defines + a node. This includes the number and layout of sockets, cores, + threads and processors (logical CPUs) on the node.

    +
    +

    + PartitionName

    +
    +

    <name of the partition>

    + Plus additional parameters. See man page for details.

    +
    +

    Defines + a partition. Several parameters of the partition definition + affect the selection of nodes (e.g., Nodes, + Shared, MaxNodes)

    +
    +

    + FastSchedule

    +
    +

    0 | 1 | 2

    +
    +

    Controls + how the information in a node definition is used.

    +
    +

    + SelectType

    +
    +

    + select/linear | select/cons_res

    +
    +

    Controls + whether CPU resources are allocated to jobs and job steps in + units of whole nodes or as consumable resources (sockets, cores + or threads).

    +
    +

    + SelectTypeParameters

    +
    +

    CR_CPU | CR_CPU_Memory | CR_Core | +CR_Core_Memory | CR_Socket | CR_Socket_Memory

    Plus additional options. See man page for details.

    +
    +

    Defines + the consumable resource type and controls other aspects of CPU + resource allocation by the select plugin.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    srun/salloc/sbatch command line options that control Step 1
    +

    + Command + line option

    +
    +

    + Possible values

    +
    +

    + Description

    +
    +

    + -B, --extra-node-info +

    +
    +

    + <sockets[:cores[:threads]]>

    +
    +

    Restricts + node selection to nodes with a specified layout of sockets, cores + and threads.

    +
    +

    + -C, --constraint

    +
    +

    <list> +

    +
    +

    Restricts + node selection to nodes with specified attributes

    +
    +

    + --contiguous

    +
    +

    N/A

    +
    +

    Restricts + node selection to contiguous nodes

    +
    +

    + --cores-per-socket

    +
    +

    <cores>

    +
    +

    Restricts + node selection to nodes with at least the specified number of cores per socket

    +
    +

    + -c, --cpus-per-task

    +
    +

    <ncpus>

    +
    +

    Controls + the number of CPUs allocated per task

    +
    +

    + --exclusive

    +
    +

    N/A

    +
    +

    Prevents + sharing of allocated nodes with other jobs. Suballocates CPUs to job steps.

    +
    +

    + -F, --nodefile

    +
    +

    <node file>

    +
    +

    File + containing a list of specific nodes to be selected for the job (salloc and sbatch only)

    +
    +

    + --hint

    +
    +

    compute_bound | + memory_bound | [no]multithread

    +
    +

    Additional + controls on allocation of CPU resources

    +
    +

    + --mincpus

    +
    +

    <n>

    +
    +

    Controls + the minimum number of CPUs allocated per node

    +
    +

    + -N, --nodes

    +
    +

    + <minnodes[-maxnodes]>

    +
    +

    Controls + the minimum/maximum number of nodes allocated to the job

    +
    +

    + -n, --ntasks

    +
    +

    <number>

    +
    +

    Controls + the number of tasks to be created for the job

    +
    +

    + --ntasks-per-core

    +
    +

    <number>

    +
    +

    Controls + the maximum number of tasks per allocated core

    +
    +

    + --ntasks-per-socket

    +
    +

    <number>

    +
    +

    Controls + the maximum number of tasks per allocated socket

    +
    +

    + --ntasks-per-node

    +
    +

    <number>

    +
    +

    Controls + the maximum number of tasks per allocated node

    +
    +

    + -O, --overcommit

    +
    +

    N/A

    +
    +

    Allows + fewer CPUs to be allocated than the number of tasks

    +
    +

    + -p, --partition

    +
    +

    + <partition_names>

    +
    +

    Controls + which partition is used for the job

    +
    +

    + -s, --share

    +
    +

    N/A

    +
    +

    Allows + sharing of allocated nodes with other jobs

    +
    +

    + --sockets-per-node

    +
    +

    <sockets>

    +
    +

    Restricts + node selection to nodes with at least the specified number of sockets

    +
    +

    + --threads-per-core

    +
    +

    <threads>

    +
    +

    Restricts + node selection to nodes with at least the specified number of threads per core

    +
    +

    + -w, --nodelist

    +
    +

    + <host1,host2,... or filename>

    +
    +

    List + of specific nodes to be allocated to the job

    +
    +

    + -x, --exclude

    +
    +

    + <host1,host2,... or filename>

    +
    +

    List + of specific nodes to be excluded from allocation to the job

    +
    +

    + -Z, --no-allocate

    +
    +

    N/A

    +
    +

    Bypass + normal allocation (privileged option available to users + “SlurmUser” and “root” only)

    +
    +
    +
    + +

    Step 2: Allocation of CPUs from the selected Nodes

    +

    In Step 2, SLURM allocates CPU resources to a job/step from the set of nodes selected +in Step 1. CPU allocation is therefore influenced by the configuration and command line options +that relate to node selection. +If +SelectType=select/linear is configured, all resources on the selected nodes will be allocated +to the job/step. If SelectType=select/cons_res is configured, +individual sockets, cores and threads may be allocated from the selected nodes as +consumable resources. The consumable resource type is defined by +SelectTypeParameters. +
    +

    When using SelectType=select/cons_res, +the default allocation method across nodes is block allocation (allocate all available CPUs in +a node before using another node). The default allocation method within a node is cyclic +allocation (allocate available CPUs in a round-robin fashion across the sockets within a node). +Users may override the default behavior using the appropriate command +line options described below. The choice of allocation methods may influence which specific +CPUs are allocated to the job/step. +

    +Step 2 is performed by slurmctld and the select plugin. +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    slurm.conf options that control Step 2
    +

    slurm.conf + parameter

    +
    +

    Possible values

    +
    +

    Description

    +
    +

    + NodeName

    +
    +

    <name of the node>

    + Plus additional parameters. See man page for details.

    +
    +

    Defines + a node. This includes the number and layout of sockets, cores, + threads and processors (logical CPUs) on the node.

    +
    +

    + PartitionName

    +
    +

    <name of the partition>

    + Plus additional parameters. See man page for details.

    +
    +

    Defines + a partition. Several parameters of the partition definition + affect the allocation of CPU resources to jobs (e.g., Nodes, + Shared, MaxNodes)

    +
    +

    + FastSchedule

    +
    +

    0 | 1 | 2

    +
    +

    Controls + how the information in a node definition is used.

    +
    +

    + SelectType

    +
    +

    + select/linear | select/cons_res

    +
    +

    Controls + whether CPU resources are allocated to jobs and job steps in + units of whole nodes or as consumable resources (sockets, cores + or threads).

    +
    +

    + SelectTypeParameters

    +
    +

    CR_CPU | CR_CPU_Memory | CR_Core | +CR_Core_Memory | CR_Socket | CR_Socket_Memory

    Plus additional options. See man page for details.

    +
    +

    Defines + the consumable resource type and controls other aspects of CPU + resource allocation by the select plugin.

    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    srun/salloc/sbatch command line options that control Step 2
    +

    + Command + line option

    +
    +

    + Possible values

    +
    +

    + Description

    +
    +

    + -B, --extra-node-info +

    +
    +

    + <sockets[:cores[:threads]]>

    +
    +

    Restricts + node selection to nodes with a specified layout of sockets, cores + and threads.

    +
    +

    + -C, --constraint

    +
    +

    <list> +

    +
    +

    Restricts + node selection to nodes with specified attributes

    +
    +

    + --contiguous

    +
    +

    N/A

    +
    +

    Restricts + node selection to contiguous nodes

    +
    +

    + --cores-per-socket

    +
    +

    <cores>

    +
    +

    Restricts + node selection to nodes with at least the specified number of cores per socket

    +
    +

    + -c, --cpus-per-task

    +
    +

    <ncpus>

    +
    +

    Controls + the number of CPUs allocated per task

    +
    +

    + --distribution, -m

    +
    +

    + block|cyclic
    |arbitrary|plane=<options>[:block|cyclic]

    +
    +

    The second specified distribution (after the ":") + can be used to override the default allocation method within nodes

    +
    +

    + --exclusive

    +
    +

    N/A

    +
    +

    Prevents + sharing of allocated nodes with other jobs

    +
    +

    + -F, --nodefile

    +
    +

    <node file>

    +
    +

    File + containing a list of specific nodes to be selected for the job (salloc and sbatch only)

    +
    +

    + --hint

    +
    +

    compute_bound | + memory_bound | [no]multithread

    +
    +

    Additional + controls on allocation of CPU resources

    +
    +

    + --mincpus

    +
    +

    <n>

    +
    +

    Controls + the minimum number of CPUs allocated per node

    +
    +

    + -N, --nodes

    +
    +

    + <minnodes[-maxnodes]>

    +
    +

    Controls + the minimum/maximum number of nodes allocated to the job

    +
    +

    + -n, --ntasks

    +
    +

    <number>

    +
    +

    Controls + the number of tasks to be created for the job

    +
    +

    + --ntasks-per-core

    +
    +

    <number>

    +
    +

    Controls + the maximum number of tasks per allocated core

    +
    +

    + --ntasks-per-socket

    +
    +

    <number>

    +
    +

    Controls + the maximum number of tasks per allocated socket

    +
    +

    + --ntasks-per-node

    +
    +

    <number>

    +
    +

    Controls + the maximum number of tasks per allocated node

    +
    +

    + -O, --overcommit

    +
    +

    N/A

    +
    +

    Allows + fewer CPUs to be allocated than the number of tasks

    +
    +

    + -p, --partition

    +
    +

    + <partition_names>

    +
    +

    Controls + which partition is used for the job

    +
    +

    + -s, --share

    +
    +

    N/A

    +
    +

    Allows + sharing of allocated nodes with other jobs

    +
    +

    + --sockets-per-node

    +
    +

    <sockets>

    +
    +

    Restricts + node selection to nodes with at least the specified number of sockets

    +
    +

    + --threads-per-core

    +
    +

    <threads>

    +
    +

    Restricts + node selection to nodes with at least the specified number of threads per core

    +
    +

    + -w, --nodelist

    +
    +

    + <host1,host2,... or filename>

    +
    +

    List + of specific nodes to be allocated to the job

    +
    +

    + -x, --exclude

    +
    +

    + <host1,host2,... or filename>

    +
    +

    List + of specific nodes to be excluded from allocation to the job

    +
    +

    + -Z, --no-allocate

    +
    +

    N/A

    +
    +

    Bypass + normal allocation (privileged option available to users + “SlurmUser” and “root” only)

    +
    +
    +
    + +

    Step 3: Distribution of Tasks to the selected Nodes

    +

    In Step 3, SLURM distributes tasks to the nodes that were selected for +the job/step in Step 1. Each task is distributed to only one node, but more than one +task may be distributed to each node. Unless overcommitment of CPUs to tasks is +specified for the job, the number of tasks distributed to a node is +constrained by the number of CPUs allocated on the node and the number of CPUs per +task. If consumable resources is configured, or resource sharing is allowed, tasks from +more than one job/step may run on the same node concurrently. +

    +Step 3 is performed by slurmctld. +
    +

    + + + + + + + + + + + + + + + +
    slurm.conf options that control Step 3
    +

    slurm.conf + parameter

    +
    +

    Possible values

    +
    +

    Description

    +
    +

    + MaxTasksPerNode

    +
    +

    <number>

    +
    +

    + Controls the maximum number of tasks that a job step can spawn on a single node +

    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    srun/salloc/sbatch command line options that control Step 3
    +

    + Command + line option

    +
    +

    + Possible values

    +
    +

    + Description

    +
    +

    + --distribution, -m

    +
    +

    + block|cyclic
    |arbitrary|plane=<options>[:block|cyclic]

    +
    +

    The first specified distribution (before the ":") + controls the sequence in which tasks are distributed to each of the selected nodes. Note that + this option does not affect the number of tasks distributed to each node, but only the sequence of + distribution.

    +
    +

    + --ntasks-per-core

    +
    +

    <number> +

    +
    +

    + Controls the maximum number of tasks per allocated core

    +
    +

    + --ntasks-per-socket

    +
    +

    <number>

    +
    +

    + Controls the maximum number of tasks per allocated socket

    +
    +

    + --ntasks-per-node

    +
    +

    <number>

    +
    +

    + Controls the maximum number of tasks per allocated node

    +
    +

    + -r, --relative

    +
    +

    N/A

    +
    +

    Controls + which node is used for a job step

    +
    +
    +
    + +

    Step 4: Optional Distribution and Binding of Tasks to CPUs within a Node

    +

    In optional Step 4, SLURM distributes and binds each task to a specified subset of +the allocated CPUs on the node to which the task was distributed in Step 3. Different +tasks distributed to the same node may be bound to the same subset of CPUs or to +different subsets. This step is known as task affinity or task/CPU binding. +

    +Step 4 is performed by slurmd and the task plugin. +
    +

    + + + + + + + + + + + + + + + + + + + + +
    slurm.conf options that control Step 4
    +

    slurm.conf + parameter

    +
    +

    Possible values

    +
    +

    Description

    +
    +

    + TaskPlugin

    +
    +

    + task/none | task/affinity | task/cgroup

    +
    +

    + Controls whether this step is enabled and which task plugin to use +

    +
    +

    + TaskPluginParam

    +
    +

    See man page

    +
    +

    + For task/affinity, controls the binding unit (sockets, cores or threads) and the + binding method (sched or cpusets)

    +
    +
    +

    + + + + + + + + + + + + + + + + + + + + +
    cgroup.conf options that control Step 4 (task/cgroup plugin only)
    +

    cgroup.conf + parameter

    +
    +

    Possible values

    +
    +

    Description

    +
    +

    + ConstrainCores

    +
    +

    + yes|no

    +
    +

    + Controls whether jobs are constrained to their allocated CPUs +

    +
    +

    + TaskAffinity

    +
    +

    + yes|no

    +
    +

    + Controls whether task-to-CPU binding is enabled

    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    srun/salloc/sbatch command line options that control Step 4
    +

    + Command + line option

    +
    +

    + Possible values

    +
    +

    + Description

    +
    +

    + --cpu_bind

    +
    +

    + See man page

    +
    +

    Controls binding of tasks to CPUs

    +
    +

    + --ntasks-per-core

    +
    +

    <number> +

    +
    +

    + Controls the maximum number of tasks per allocated core

    +
    +

    + --distribution, -m

    +
    +

    + block|cyclic
    |arbitrary|plane=<options>[:block|cyclic]

    +
    +

    + The second specified distribution (after the ":") controls the sequence in which tasks are + distributed to allocated CPUs within a node for binding of tasks to CPUs

    +
    +
    +

    +

    Additional Notes on CPU Management Steps

    +

    For consumable resources, it is important for users to understand the difference between +cpu allocation (Step 2) and task affinity/binding (Step 4). Exclusive (unshared) allocation +of CPUs as consumable resources limits the number of jobs/steps/tasks that +can use a node concurrently. But it does not limit the set of CPUs on the node that each +task distributed to the node can use. Unless some form of CPU/task binding is used +(e.g., a task or spank plugin), all tasks distributed to a node can use all of +the CPUs on the node, including CPUs not allocated to their job/step. This may have +unexpected adverse effects on performance, since it allows one job to use CPUs allocated +exclusively to another job. For this reason, it may not be advisable to configure +consumable resources without also configuring task affinity. Note that task affinity +can also be useful when select/linear (whole node allocation) is configured, to improve +performance by restricting each task to a particular socket or other subset of CPU +resources on a node.

    +

    + +

    Getting Information about CPU usage by Jobs/Steps/Tasks

    +

    There is no easy way to generate a comprehensive set of CPU management information +for a job/step (allocation, distribution and binding). However, several +commands/options provide limited information about CPU usage. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Command/Option

    +
    +

    Information

    +
    +

    +scontrol show job option: +--details

    +
    +

    +This option provides a list of the nodes selected for the job and the CPU ids allocated to the job on each +node. Note that the CPU ids reported by this command are SLURM abstract CPU ids, not Linux/hardware CPU ids +(as reported by, for example, /proc/cpuinfo). +

    +
    +

    +Linux command: env

    +
    +

    +Many SLURM environment variables provide information related to node and CPU usage: +

    + +SLURM_JOB_CPUS_PER_NODE
    +SLURM_CPUS_PER_TASK
    +SLURM_CPU_BIND
    +SLURM_DISTRIBUTION
    +SLURM_NODELIST
    +SLURM_TASKS_PER_NODE
    +SLURM_STEP_NODELIST
    +SLURM_STEP_NUM_NODES
    +SLURM_STEP_NUM_TASKS
    +SLURM_STEP_TASKS_PER_NODE
    +SLURM_NNODES
    +SLURM_NTASKS
    +SLURM_NPROCS
    +SLURM_CPUS_ON_NODE
    +SLURM_NODEID
    +SLURMD_NODENAME
    +
    +

    +
    +

    +srun/salloc/sbatch option: +--cpu_bind=verbose

    +
    +

    +This option provides a list of the CPU masks used by task affinity to bind tasks to CPUs. +Note that the CPU ids represented by these masks are Linux/hardware CPU ids, not SLURM +abstract CPU ids as reported by scontrol, etc. +

    +
    +

    +srun/salloc/sbatch option: +-l

    +
    +

    +This option adds the task id as a prefix to each line of output from a task sent to stdout/stderr. +This can be useful for distinguishing node-related and CPU-related information by task id +for multi-task jobs/steps. +

    +
    +

    +Linux command:
    +cat /proc/<pid>/status | grep Cpus_allowed_list

    +
    +

    +Given a task's pid (or "self" if the command is executed by the task itself), this command +produces a list of the CPU ids bound to the task. This is the same information that is +provided by --cpu_bind=verbose, but in a more readable format. +

    +
    +
    +

    A Note on CPU Numbering

    +

    The number and layout of logical CPUs known to SLURM is described in the node definitions in slurm.conf. This may +differ from the physical CPU layout on the actual hardware. For this reason, SLURM generates its own internal, or +"abstract", CPU numbers. These numbers may not match the physical, or "machine", CPU numbers known to Linux. +A utility to convert between SLURM abstract CPU numbers and physical machine CPU numbers is provided by SLURM. See +module src/slurmd/slurmd/get_mach_stat.c for details.

    +
    + +

    CPU Management and SLURM Accounting

    +

    CPU management by SLURM users is subject to limits imposed by SLURM Accounting. Accounting limits may be applied on CPU +usage at the level of users, groups and clusters. For details, see the sacctmgr man page.

    +
    + +

    CPU Management Examples

    +

    The following examples illustrate some scenarios for managing CPU +resources using SLURM. Many additional scenarios are possible. In +each example, it is assumed that all CPUs on each node are available +for allocation.

    +
    + +

    Example Node and Partition Configuration

    +

    For these examples, the SLURM cluster contains the following nodes:

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    n3

    +
    +

    Number + of Sockets

    +
    +

    2

    +
    +

    2

    +
    +

    2

    +
    +

    2

    +
    +

    Number + of Cores per Socket

    +
    +

    4

    +
    +

    4

    +
    +

    4

    +
    +

    4

    +
    +

    Total + Number of Cores

    +
    +

    8

    +
    +

    8

    +
    +

    8

    +
    +

    8

    +
    +

    Number + of Threads (CPUs) per Core

    +
    +

    1

    +
    +

    1

    +
    +

    1

    +
    +

    2

    +
    +

    Total + Number of CPUs

    +
    +

    8

    +
    +

    8

    +
    +

    8

    +
    +

    16

    +
    +
    +

    And the following partitions:

    +
    + + + + + + + + + + + + + + + + + + + +
    +

    PartitionName

    +
    +

    regnodes

    +
    +

    hypernode

    +
    +

    Nodes

    +
    +

    n0 + n1 n2

    +
    +

    n3

    +
    +

    Default

    +
    +

    YES

    +
    +

    -

    +
    +
    +

    These entities are defined in slurm.conf as follows:

    +
    Nodename=n0 NodeAddr=node0 Sockets=2 CoresPerSocket=4 ThreadsPerCore=1 Procs=8
    +Nodename=n1 NodeAddr=node1 Sockets=2 CoresPerSocket=4 ThreadsPerCore=1 Procs=8 State=IDLE
    +Nodename=n2 NodeAddr=node2 Sockets=2 CoresPerSocket=4 ThreadsPerCore=1 Procs=8 State=IDLE
    +Nodename=n3 NodeAddr=node3 Sockets=2 CoresPerSocket=4 ThreadsPerCore=2 Procs=16 State=IDLE
    +PartitionName=regnodes Nodes=n0,n1,n2 Shared=YES Default=YES State=UP 
    +PartitionName=hypernode Nodes=n3 State=UP
    +
    +
    + +

    Example 1: Allocation of whole nodes

    +

    Allocate a minimum of two whole nodes to a job.

    +

    slurm.conf options:

    +
    SelectType=select/linear
    +
    +

    Command line:

    +
    srun --nodes=2 ...
    +
    +

    Comments:

    +The SelectType=select/linear +configuration option specifies allocation in units of whole nodes. +The --nodes=2 srun option causes +SLURM to allocate at least 2 nodes to the job.

    +
    + +

    Example 2: Simple allocation of cores as consumable resources

    +

    A job requires 6 CPUs (2 tasks and 3 CPUs per task with no overcommitment). Allocate the 6 CPUs as consumable resources +from a single node in the default partition.

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=2 --cpus-per-task=3 ...
    +
    +

    Comments:

    +

    The SelectType configuration options define cores as consumable resources. +The --nodes=1-1 srun option + restricts the job to a single node. The following table shows a possible pattern of allocation + for this job. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Number + of Allocated CPUs

    +
    +

    6

    +
    +

    0

    +
    +

    0

    +
    +

    Number + of Tasks

    +
    +

    2

    +
    +

    0

    +
    +

    0

    +
    +
    +
    + +

    Example 3: Consumable resources with balanced allocation across nodes

    +

    A job requires 9 CPUs (3 tasks and 3 CPUs per task with no overcommitment). +Allocate 3 CPUs from each of the 3 nodes in the default partition. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +
    +

    Command line:

    +
    srun --nodes=3-3 --ntasks=3 --cpus-per-task=3 ...
    +
    +

    Comments:

    +

    The options specify the following conditions for the job: 3 tasks, 3 unique CPUs + per task, using exactly 3 nodes. To satisfy these conditions, SLURM must + allocate 3 CPUs from each node. The following table shows the allocation + for this job. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Number + of Allocated CPUs

    +
    +

    3

    +
    +

    3

    +
    +

    3

    +
    +

    Number + of Tasks

    +
    +

    1

    +
    +

    1

    +
    +

    1

    +
    +
    +
    + +

    Example 4: Consumable resources with minimization of resource fragmentation

    +

    A job requires 12 CPUs (12 tasks and 1 CPU per task with no overcommitment). Allocate +CPUs using the minimum number of nodes and the minimum number of sockets required for +the job in order to minimize fragmentation of allocated/unallocated CPUs in the cluster. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK
    +
    +

    Command line:

    +
    srun --ntasks=12 ...
    +
    +

    Comments:

    +

    The default allocation method across nodes is block. This minimizes the number of nodes + used for the job. The configuration option + CR_CORE_DEFAULT_DIST_BLOCK sets the default allocation method within a + node to block. This minimizes the number of sockets used for the job within a node. + The combination of these two methods causes SLURM to allocate the 12 CPUs using the + minimum required number of nodes (2 nodes) and sockets (3 sockets).The following + table shows a possible pattern of allocation for this job. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    0

    +
    +

    1

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    4

    +
    +

    4

    +
    +

    4

    +
    +

    0

    +
    +

    0

    +
    +

    0

    +
    +

    Number of + Tasks

    +
    +

    8

    +
    +

    4

    +
    +

    0

    +
    +
    +
    + +

    Example 5: Consumable resources with cyclic distribution of tasks to nodes

    +

    A job requires 12 CPUs (6 tasks and 2 CPUs per task with no overcommitment). Allocate +6 CPUs from each of 2 nodes in the default partition. Distribute tasks to nodes cyclically. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +
    +

    Command line:

    +
    srun --nodes=2-2 --ntasks-per-node=3 --distribution=cyclic 
    +--ntasks=6 --cpus-per-task=2 ... +
    +

    Comments:

    +

    The options specify the following conditions for the job: 6 tasks, 2 unique CPUs per task, +using exactly 2 nodes, and with 3 tasks per node. To satisfy these conditions, SLURM +must allocate 6 CPUs from each of 2 nodes. The +--distribution=cyclic option causes the tasks to be distributed to the nodes in a +round-robin fashion. The following table shows a possible pattern of allocation and +distribution for this job. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Number of + Allocated CPUs

    +
    +

    6

    +
    +

    6

    +
    +

    0

    +
    +

    Number of + Tasks

    +
    +

    3

    +
    +

    3

    +
    +

    0

    +
    +

    Distribution + of Tasks to Nodes, by Task id

    +
    +

    + 0
    2
    4

    +

    + 1
    3
    5

    +

    -

    +
    +
    +
    + +

    Example 6: Consumable resources with default allocation and plane distribution of tasks to nodes

    +

    A job requires 16 CPUs (8 tasks and 2 CPUs per task with no overcommitment). +Use all 3 nodes in the default partition. Distribute tasks to each node in blocks of two in a round-robin fashion. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +
    +

    Command line:

    +
    srun --nodes=3-3 --distribution=plane=2 --ntasks=8 --cpus-per-task=2 ...
    +
    +

    Comments:

    +

    The options specify the following conditions for the job: 8 tasks, 2 unique CPUs +per task, using all 3 nodes in the partition. To satisfy these conditions using +the default allocation method across nodes (block), SLURM allocates 8 CPUs from +the first node, 6 CPUs from the second node and 2 CPUs from the third node. +The --distribution=plane=2 option causes SLURM +to distribute tasks in blocks of two to each of the nodes in a round-robin fashion, +subject to the number of CPUs allocated on each node. So, for example, only 1 task +is distributed to the third node because only 2 CPUs were allocated on that node and +each task requires 2 CPUs. The following table shows a possible pattern of allocation +and distribution for this job. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Number of + Allocated CPUs

    +
    +

    8

    +
    +

    6

    +
    +

    2

    +
    +

    Number of + Tasks

    +
    +

    4

    +
    +

    3

    +
    +

    1

    +
    +

    Distribution + of Tasks to Nodes, by Task id

    +
    +

    0 + 1
    5 6

    +
    +

    2 + 3
    7

    +
    +

    4
    +

    +
    +
    +
    + +

    Example 7: Consumable resources with overcommitment of CPUs to tasks

    +

    A job has 20 tasks. Run the job in a single node. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=20 --overcommit ...
    +
    +

    Comments:

    +

    The +--overcommit option allows the job to +run in only one node by overcommitting CPUs to tasks.The following table shows + a possible pattern of allocation and distribution for this job. +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Number of + Allocated CPUs

    +
    +

    8

    +
    +

    0

    +
    +

    0

    +
    +

    Number of + Tasks

    +
    +

    20

    +
    +

    0

    +
    +

    0

    +
    +

    Distribution + of Tasks to Nodes, by Task id

    +
    +

    0 + - 19

    +
    +

    -

    +
    +

    -

    +
    +
    +
    + +

    Example 8: Consumable resources with resource sharing between jobs

    +

    2 jobs each require 6 CPUs (6 tasks per job with no overcommitment). +Run both jobs simultaneously in a single node. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +
    +

    Command line:

    +
    srun --nodes=1-1 --nodelist=n0 --ntasks=6 --share ...
    +srun --nodes=1-1 --nodelist=n0 --ntasks=6 --share ...
    +
    +

    Comments:

    +

    The --nodes=1-1 and -w n0 +srun options together restrict both jobs to node n0. The +Shared=YES option in the partition definition plus +the --share srun option allows the two +jobs to share CPUs on the node. +


    + +

    Example 9: Consumable resources on multithreaded node, allocating only one thread per core

    +

    A job requires 8 CPUs (8 tasks with no overcommitment). Run the job on node n3, +allocating only one thread per core. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_CPU
    +
    +

    Command line:

    +
    srun --partition=hypernode --ntasks=8 --hint=nomultithread ...
    +
    +

    Comments:

    +

    The CR_CPU configuration +option enables the allocation of only one thread per core. +The --hint=nomultithread +srun option causes SLURM to allocate only one thread from each core to +this job. The following table shows a possible pattern of allocation +for this job. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n3

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    Core id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    8

    +
    +

    9

    +
    +

    10

    +
    +

    11

    +
    +

    12

    +
    +

    13

    +
    +

    14

    +
    +

    15

    +
    +

    Number of + Allocated CPUs

    +
    +

    4

    +
    +

    4

    +
    +

    Allocated + CPU ids

    +
    +

    0 + 2 4 6

    +
    +

    8 + 10 12 14

    +
    +
    +
    + +

    Example 10: Consumable resources with task affinity and core binding

    +

    A job requires 6 CPUs (6 tasks with no overcommitment). Run the job in a +single node in the default partition. Apply core binding to each task. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +TaskPlugin=task/affinity
    +TaskPluginParam=sched
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=6 --cpu_bind=cores ...
    +
    +

    Comments:

    +

    Using the default allocation method within nodes (cyclic), SLURM allocates +3 CPUs on each socket of 1 node. Using the default distribution method +within nodes (cyclic), SLURM distributes and binds each task to an allocated +core in a round-robin fashion across the sockets. The following table shows +a possible pattern of allocation, distribution and binding for this job. +For example, task id 2 is bound to CPU id 1. +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    3

    +
    +

    3

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2

    +
    +

    4 5 6

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task id

    +
    +

    0

    +
    +

    2

    +
    +

    4

    +
    +

    -

    +
    +

    1

    +
    +

    3

    +
    +

    5

    +
    +

    -

    +
    +
    +
    + +

    Example 11: Consumable resources with task affinity and socket binding, Case 1

    +

    A job requires 6 CPUs (6 tasks with no overcommitment). Run the job in +a single node in the default partition. Apply socket binding to each task. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +TaskPlugin=task/affinity
    +TaskPluginParam=sched
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=6 --cpu_bind=sockets ...
    +
    +

    Comments:

    +

    Using the default allocation method within nodes (cyclic), SLURM allocates 3 +CPUs on each socket of 1 node. Using the default distribution method within nodes +(cyclic), SLURM distributes and binds each task to all of the allocated CPUs in +one socket in a round-robin fashion across the sockets. The following table shows +a possible pattern of allocation, distribution and binding for this job. For +example, task ids 1, 3 and 5 are all bound to CPU ids 4, 5 and 6. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    3

    +
    +

    3

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2

    +
    +

    4 5 6

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task ids

    +
    +

    0 + 2 4

    +
    +

    -

    +
    +

    1 + 3 5

    +
    +

    -

    +
    +
    +
    + +

    Example 12: Consumable resources with task affinity and socket binding, Case 2

    +

    A job requires 6 CPUs (2 tasks with 3 cpus per task and no overcommitment). Run the job in +a single node in the default partition. Allocate cores using the block allocation method. +Distribute cores using the block distribution method. Apply socket binding to each task. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK
    +TaskPlugin=task/affinity
    +TaskPluginParam=sched
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=2 --cpus-per-task=3 --cpu_bind=sockets 
    +--distribution=block:block ... +
    +

    Comments:

    +

    Using the block allocation method, SLURM allocates 4 +CPUs on one socket and 2 CPUs on the other socket of one node. Using the block distribution method within +nodes, SLURM distributes 3 CPUs to each task. Applying socket binding, SLURM binds each task to all +allocated CPUs in all sockets in which the task has a distributed CPU. The following table shows +a possible pattern of allocation, distribution and binding for this job. In this example, using the +block allocation method CPU ids 0-3 are allocated on socket id 0 and CPU ids 4-5 are allocated on +socket id 1. Using the block distribution method, CPU ids 0-2 were distributed to task id 0, and CPU ids +3-5 were distributed to task id 1. Applying socket binding, task id 0 is therefore bound to the allocated +CPUs on socket 0, and task id 1 is bound to the allocated CPUs on both sockets. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    4

    +
    +

    2

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2 3

    +
    +

    4 5

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task ids

    +
    +

    0 1

    +
    +

    1

    +
    +

    -

    +
    +
    +
    + +

    Example 13: Consumable resources with task affinity and socket binding, Case 3

    +

    A job requires 6 CPUs (2 tasks with 3 cpus per task and no overcommitment). Run the job in +a single node in the default partition. Allocate cores using the block allocation method. +Distribute cores using the cyclic distribution method. Apply socket binding to each task. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK
    +TaskPlugin=task/affinity
    +TaskPluginParam=sched
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=2 --cpus-per-task=3 --cpu_bind=sockets 
    +--distribution=block:cyclic ... +
    +

    Comments:

    +

    Using the block allocation method, SLURM allocates 4 +CPUs on one socket and 2 CPUs on the other socket of one node. Using the cyclic distribution method within +nodes, SLURM distributes 3 CPUs to each task. Applying socket binding, SLURM binds each task to all +allocated CPUs in all sockets in which the task has a distributed CPU. The following table shows +a possible pattern of allocation, distribution and binding for this job. In this example, using the +block allocation method CPU ids 0-3 are allocated on socket id 0 and CPU ids 4-5 are allocated on +socket id 1. Using the cyclic distribution method, CPU ids 0, 1 and 4 were distributed to task id 0, and CPU ids +2, 3 and 5 were distributed to task id 1. Applying socket binding, both tasks are therefore bound to the +allocated CPUs on both sockets. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    4

    +
    +

    2

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2 3

    +
    +

    4 5

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task ids

    +
    +

    0 1

    +
    +

    0 1

    +
    +

    -

    +
    +
    +
    + +

    Example 14: Consumable resources with task affinity and customized allocation and distribution

    +

    A job requires 18 CPUs (18 tasks with no overcommitment). Run the job in the +default partition. Allocate 6 CPUs on each node using block allocation within +nodes. Use cyclic distribution of tasks to nodes and block distribution of +tasks for CPU binding. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK
    +TaskPlugin=task/affinity
    +TaskPluginParam=sched
    +
    +

    Command line:

    +
    srun --nodes=3-3 --ntasks=18 --ntasks-per-node=6 
    +--distribution=cyclic:block --cpu_bind=cores ... +
    +

    Comments:

    +

    This example shows the use of task affinity with customized allocation of CPUs and +distribution of tasks across nodes and within nodes for binding. The srun options +specify the following conditions for the job: 18 tasks, 1 unique CPU per task, using +all 3 nodes in the partition, with 6 tasks per node. +The CR_CORE_DEFAULT_DIST_BLOCK +configuration option specifies block allocation within nodes. To satisfy these +conditions, SLURM allocates 6 CPUs on each node, with 4 CPUs allocated on one socket +and 2 CPUs on the other socket. The +--distribution=cyclic:block option specifies cyclic distribution of +tasks to nodes and block distribution of tasks to CPUs within nodes for binding. +The following table shows a possible pattern of allocation, distribution and binding +for this job. For example, task id 10 is bound to CPU id 3 on node n1. +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    0

    +
    +

    1

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    4

    +
    +

    2

    +
    +

    4

    +
    +

    2

    +
    +

    4

    +
    +

    2

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2 3 4 5

    +
    +

    0 1 2 3 4 5

    +
    +

    0 1 2 3 4 5

    +
    +

    Number of + Tasks

    +
    +

    6

    +
    +

    6

    +
    +

    6

    +
    +

    Distribution + of Tasks to Nodes, by Task id

    +
    +

    0
    + 3
    + 6
    + 9
    + 12
    + 15 +

    +
    +

    1
    + 4
    + 7
    + 10
    + 13
    + 16 +

    +
    +

    2
    + 5
    + 8
    + 11
    + 14
    + 17 +

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task id

    +
    +

    0

    +
    +

    3

    +
    +

    6

    +
    +

    9

    +
    +

    12

    +
    +

    15

    +
    +

    -

    +
    +

    -

    +
    +

    1

    +
    +

    4

    +
    +

    7

    +
    +

    10

    +
    +

    13

    +
    +

    16

    +
    +

    -

    +
    +

    -

    +
    +

    2

    +
    +

    5

    +
    +

    8

    +
    +

    11

    +
    +

    14

    +
    +

    17

    +
    +

    -

    +
    +

    -

    +
    +
    +
    + +

    Example 15: Consumable resources with task affinity to optimize the performance of a multi-task, +multi-thread job

    +

    A job requires 9 CPUs (3 tasks and 3 CPUs per task with no overcommitment). Run +the job in the default partition, managing the CPUs to optimize the performance +of the job.

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core,CR_CORE_DEFAULT_DIST_BLOCK
    +TaskPlugin=task/affinity
    +TaskPluginParam=sched
    +
    +

    Command line:

    +
    srun --ntasks=3 --cpus-per-task=3 --ntasks-per-node=1 --cpu_bind=cores ...
    +
    +

    Comments:

    +

    To optimize the performance of this job, the user wishes to allocate 3 CPUs from each of +3 sockets and bind each task to the 3 CPUs in a single socket. The +SelectTypeParameters configuration option specifies +a consumable resource type of cores and block allocation within nodes. The +TaskPlugin +and TaskPluginParam +configuration options enable task affinity. The srun options specify the following +conditions for the job: 3 tasks, with 3 unique CPUs per task, with 1 task per node. To satisfy +these conditions, SLURM allocates 3 CPUs from one socket in each of the 3 nodes in the default partition. The +--cpu_bind=cores option causes SLURM to bind +each task to the 3 allocated CPUs on the node to which it is distributed. The +following table shows a possible pattern of allocation, distribution and binding +for this job. For example, task id 2 is bound to CPU ids 0, 1 and 2 on socket id 0 of node n2. +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    n1

    +
    +

    n2

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    0

    +
    +

    1

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    3

    +
    +

    0

    +
    +

    3

    +
    +

    0

    +
    +

    3

    +
    +

    0

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2

    +
    +

    0 1 2

    +
    +

    0 1 2

    +
    +

    Number of + Tasks

    +
    +

    1

    +
    +

    1

    +
    +

    1

    +
    +

    Distribution + of Tasks to Nodes, by Task id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task id

    +
    +

    0

    +
    +

    -

    +
    +

    1

    +
    +

    -

    +
    +

    2

    +
    +

    --

    +
    +
    +
    + +

    Example 16: Consumable resources with task cgroup and core binding

    +

    A job requires 6 CPUs (6 tasks with no overcommitment). Run the job in a +single node in the default partition. Apply core binding to each task using the task/cgroup plugin. +

    +

    slurm.conf options:

    +
    SelectType=select/cons_res
    +SelectTypeParameters=CR_Core
    +TaskPlugin=task/cgroup
    +
    +

    cgroup.conf options:

    +
    ConstrainCores=yes
    +TaskAffinity=yes
    +
    +

    Command line:

    +
    srun --nodes=1-1 --ntasks=6 --cpu_bind=cores ...
    +
    +

    Comments:

    +

    The task/cgroup plugin currently supports only the block method for +allocating cores within nodes and distributing tasks to CPUs for binding. +The following table shows a possible pattern of allocation, distribution +and binding for this job. For example, task id 2 is bound to CPU id 2. +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Nodename

    +
    +

    n0

    +
    +

    Socket id

    +
    +

    0

    +
    +

    1

    +
    +

    Number of + Allocated CPUs

    +
    +

    4

    +
    +

    2

    +
    +

    Allocated + CPU ids

    +
    +

    0 1 2 3

    +
    +

    4 5

    +
    +

    Binding of + Tasks to CPUs

    +
    +

    CPU id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    6

    +
    +

    7

    +
    +

    Task id

    +
    +

    0

    +
    +

    1

    +
    +

    2

    +
    +

    3

    +
    +

    4

    +
    +

    5

    +
    +

    -

    +
    +

    -

    +
    +
    + + + +

    Last modified 26 September 2011

    + + diff -Nru slurm-llnl-2.2.7/doc/html/cray.shtml slurm-llnl-2.3.2/doc/html/cray.shtml --- slurm-llnl-2.2.7/doc/html/cray.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/cray.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -2,144 +2,637 @@

    SLURM User and Administrator Guide for Cray systems

    -NOTE: As of January 2009, the SLURM interface to Cray systems is incomplete. -

    User Guide

    -

    This document describes the unique features of SLURM on -Cray computers. +

    This document describes the unique features of SLURM on Cray computers. You should be familiar with the SLURM's mode of operation on Linux clusters -before studying the relatively few differences in Cray system -operation described in this document.

    +before studying the differences in Cray system operation described in this +document.

    + +

    SLURM version 2.3 is designed to operate as a job scheduler over Cray's +Application Level Placement Scheduler (ALPS). +Use SLURM's sbatch or salloc commands to create a resource +allocation in ALPS. +Then use ALPS' aprun command to launch parallel jobs within the resource +allocation. +The resource allocation is terminated once the the batch script or the +salloc command terminates. +Alternately there is an aprun wrapper distributed with SLURM in +contribs/cray/srun which will translate srun options +into the equivalent aprun options. This wrapper will also execute +salloc as needed to create a job allocation in which to run the +aprun command. The srun script contains two new options: +--man will print a summary of the options including notes about which +srun options are not supported and --alps=" which can be used +to specify aprun options which lack an equivalent within srun. +For example, srun --alps="-a xt" -n 4 a.out. +Since aprun is used to launch tasks (the equivalent of a SLURM +job step), the job steps will not be visible using SLURM commands. +Other than SLURM's srun command being replaced by aprun +and the job steps not being visible, all other SLURM commands will operate +as expected. Note that in order to build and install the aprun wrapper +described above, execute "configure" with the --with-srun2aprun +option or add %_with_srun2aprun 1 to your ~/.rpmmacros file.

    + +

    Node naming and node geometry on Cray XT/XE systems

    +

    SLURM node names will be of the form "nid#####" where "#####" is a five-digit sequence number. + Other information available about the node are it's XYZ coordinate in the node's NodeAddr + field and it's component label in the HostNodeName field. + The format of the component label is "c#-#c#s#n#" where the "#" fields represent in order: + cabinet, row, cage, blade or slot, and node. + For example "c0-1c2s5n3" is cabinet 0, row 1, cage 3, slot 5 and node 3.

    + +

    Cray XT/XE systems come with a 3D torus by default. On smaller systems the cabling in X dimension is + omitted, resulting in a two-dimensional torus (1 x Y x Z). On Gemini/XE systems, pairs of adjacent nodes + (nodes 0/1 and 2/3 on each blade) share one network interface each. This causes the same Y coordinate to + be assigned to those nodes, so that the number of distinct torus coordinates is half the number of total + nodes.

    +

    The SLURM smap and sview tools can visualize node torus positions. Clicking on a particular + node shows its NodeAddr field, which is its (X,Y,Z) torus coordinate base-36 encoded as a 3-character + string. For example, a NodeAddr of '07A' corresponds to the coordinates X = 0, Y = 7, Z = 10. + The NodeAddr of a node can also be shown using 'scontrol show node nid#####'.

    + +

    Please note that the sbatch/salloc options "--geometry" and "--no-rotate" are BlueGene-specific + and have no impact on Cray systems. Topological node placement depends on what Cray makes available via the + ALPS_NIDORDER configuration option (see below).

    + +

    Specifying thread depth

    +

    For threaded applications, use the --cpus-per-task/-c parameter of sbatch/salloc to set + the thread depth per node. This corresponds to mppdepth in PBS and to the aprun -d parameter. Please + note that SLURM does not set the OMP_NUM_THREADS environment variable. Hence, if an application spawns + 4 threads, an example script would look like

    +
    + #SBATCH --comment="illustrate the use of thread depth and OMP_NUM_THREADS"
    + #SBATCH --ntasks=3
    + #SBATCH -c 4
    + export OMP_NUM_THREADS=4
    + aprun -n 3 -d $OMP_NUM_THREADS ./my_exe
    +
    + +

    Specifying number of tasks per node

    +

    SLURM uses the same default as ALPS, assigning each task to a single core/CPU. In order to + make more resources available per task, you can reduce the number of processing elements + per node (aprun -N parameter, mppnppn in PBS) with the + --ntasks-per-node option of sbatch/salloc. + This is in particular necessary when tasks require more memory than the per-CPU default.

    + +

    Specifying per-task memory

    +

    In Cray terminology, a task is also called a "processing element" (PE), hence below we + refer to the per-task memory and "per-PE" memory interchangeably. The per-PE memory + requested through the batch system corresponds to the aprun -m parameter.

    + +

    Due to the implicit default assumption that 1 task runs per core/CPU, the default memory + available per task is the per-CPU share of node_memory / number_of_cores. For + example, on a XT5 system with 16000MB per 12-core node, the per-CPU share is 1333MB.

    + +

    If nothing else is specified, the --mem option to sbatch/salloc can only be used to + reduce the per-PE memory below the per-CPU share. This is also the only way that + the --mem-per-cpu option can be applied (besides, the --mem-per-cpu option + is ignored if the user forgets to set --ntasks/-n). + Thus, the preferred way of specifying memory is the more general --mem option.

    + +

    To increase the per-PE memory settable via the --mem option requires making + more per-task resources available using the --ntasks-per-node option to sbatch/salloc. + This allows --mem to request up to node_memory / ntasks_per_node MegaBytes.

    + +

    When --ntasks-per-node is 1, the entire node memory may be requested by the application. + Setting --ntasks-per-node to the number of cores per node yields the default per-CPU share + minimum value.

    + +

    For all cases in between these extremes, set --mem=per_task_memory and

    +
    +   --ntasks-per-node=floor(node_memory / per_task_memory)
    +
    +

    whenever per_task_memory needs to be larger than the per-CPU share.

    + +

    Example: An application with 64 tasks needs 7500MB per task on a cluster with 32000MB and 24 cores + per node. Hence ntasks_per_node = floor(32000/7500) = 4.

    +
    +    #SBATCH --comment="requesting 7500MB per task on 32000MB/24-core nodes"
    +    #SBATCH --ntasks=64
    +    #SBATCH --ntasks-per-node=4
    +    #SBATCH --mem=7500
    +
    +

    If you would like to fine-tune the memory limit of your application, you can set the same parameters in + a salloc session and then check directly, using

    +
    +    apstat -rvv -R $BASIL_RESERVATION_ID
    +
    +

    to see how much memory has been requested.

    -

    SLURM's primary mode of operation is designed for use on clusters with -nodes configured in a one-dimensional space. -Minor changes were required for the smap and sview tools -to map nodes in a three-dimensional space. -Some changes are also desirable to optimize job placement in three-dimensional -space.

    - -

    SLURM has added an interface to Cray's Application Level Placement Scheduler -(ALPS). The ALPS aprun command must used for task launch rather than SLURM's -srun command. You should create a resource reservation using SLURM's -salloc or sbatch command and execute aprun from within -that allocation. +

    Using aprun -B

    +

    CLE 3.x allows a nice aprun shortcut via the -B option, which + reuses all the batch system parameters (--ntasks, --ntasks-per-node, + --cpus-per-task, --mem) at application launch, as if the corresponding + (-n, -N, -d, -m) parameters had been set; see the aprun(1) manpage + on CLE 3.x systems for details.

    + +

    Node ordering options

    +

    SLURM honours the node ordering policy set for Cray's Application Level Placement Scheduler (ALPS). Node + ordering is a configurable system option (ALPS_NIDORDER in /etc/sysconfig/alps). The current + setting is reported by 'apstat -svv' (look for the line starting with "nid ordering option") and + can not be changed at runtime. The resulting, effective node ordering is revealed by 'apstat -no' + (if no special node ordering has been configured, 'apstat -no' shows the + same order as 'apstat -n').

    + +

    SLURM uses exactly the same order as 'apstat -no' when selecting + nodes for a job. With the --contiguous option to sbatch/salloc + you can request a contiguous (relative to the current ALPS nid ordering) set + of nodes. Note that on a busy system there is typically more fragmentation, + hence it may take longer (or even prove impossible) to allocate contiguous + sets of a larger size.

    + +

    Cray/ALPS node ordering is a topic of ongoing work, some information can be found in the CUG-2010 paper + "ALPS, Topology, and Performance" by Carl Albing and Mark Baker.

    Administrator Guide

    -

    Cray/ALPS configuration

    +

    Install supporting rpms

    + +

    The build requires a few -devel RPMs listed below. You can obtain these from +SuSe/Novell. +

      +
    • CLE 2.x uses SuSe SLES 10 packages (rpms may be on the normal isos)
    • +
    • CLE 3.x uses Suse SLES 11 packages (rpms are on the SDK isos, there +are two SDK iso files for SDK)
    • +

    + +

    You can check by logging onto the boot node and running

    +
    +boot: # xtopview
    +default: # rpm -qa
    +
    + +

    The list of packages that should be installed is:

    +
      +
    • expat-2.0.xxx
    • +
    • libexpat-devel-2.0.xxx
    • +
    • cray-MySQL-devel-enterprise-5.0.64 (this should be on the Cray iso)
    • +
    + +

    For example, loading MySQL can be done like this:

    +
    +smw: # mkdir mnt
    +smw: # mount -o loop, ro xe-sles11sp1-trunk.201107070231a03.iso mnt
    +smw: # find mnt -name cray-MySQL-devel-enterprise\*
    +mnt/craydist/xt-packages/cray-MySQL-devel-enterprise-5.0.64.1.0000.2899.19.2.x86_64.rpm
    +smw: # scp mnt/craydist/xt-packages/cray-MySQL-devel-enterprise-5.0.64.1.0000.2899.19.2.x86_64
    +
    + +

    Then switch to boot node and run:

    +
    +boot: # xtopview
    +default: # rpm -ivh /software/cray-MySQL-devel-enterprise-5.0.64.1.0000.2899.19.2.x86_64.rpm
    +default: # exit
    +
    + +

    All Cray-specific PrgEnv and compiler modules should be removed and root +privileges will be required to install these files.

    + +

    Create a build root

    + +

    The build is done on a normal service node, where you like +(e.g. /ufs/slurm/build would work). +Most scripts check for the environment variable LIBROOT. +You can either edit the scripts or export this variable. Easiest way:

    + +
    +login: # export LIBROOT=/ufs/slurm/build
    +login: # mkdir -vp $LIBROOT
    +login: # cd $LIBROOT
    +
    + +

    Install SLURM modulefile

    + +

    This file is distributed as part the SLURM tar-ball in +contribs/cray/opt_modulefiles_slurm. Install it as +/opt/modulefiles/slurm (or anywhere else in your module path). +It means that you can use Munge as soon as it is built.

    +
    +login: # scp ~/slurm/contribs/cray/opt_modulefiles_slurm root@boot:/rr/current/software/
    +
    + +

    Build and install Munge

    + +

    Note the Munge installation process on Cray systems differs +somewhat from that described in the + +MUNGE Installation Guide.

    + +

    Munge is the authentication daemon and needed by SLURM. Download +munge-0.5.10.tar.bz2 or newer from + +http://code.google.com/p/munge/downloads/list. This is how one +can build on a login node and install it.

    +
    +login: # cd $LIBROOT
    +login: # cp ~/slurm/contribs/cray/munge_build_script.sh $LIBROOT
    +login: # mkdir -p ${LIBROOT}/munge/zip
    +login: # curl -O http://munge.googlecode.com/files/munge-0.5.10.tar.bz2
    +login: # cp munge-0.5.10.tar.bz2 ${LIBROOT}/munge/zip
    +login: # chmod u+x ${LIBROOT}/munge/zip/munge_build_script.sh
    +login: # ${LIBROOT}/munge/zip/munge_build_script.sh
    +(generates lots of output and enerates a tar-ball called
    +$LIBROOT/munge_build-.*YYYY-MM-DD.tar.gz)
    +login: # scp munge_build-2011-07-12.tar.gz root@boot:/rr/current/software
    +
    + +

    Install the tar-ball by on the boot node and build an encryption +key file executing: +

    +boot: # xtopview
    +default: # tar -zxvf $LIBROOT/munge_build-*.tar.gz -C /rr/current /
    +default: # dd if=/dev/urandom bs=1 count=1024 >/opt/slurm/munge/etc/munge.key
    +default: # chmod go-rxw /opt/slurm/munge/etc/munge.key
    +default: # exit
    +
    + +

    Configure Munge

    + +

    The following steps apply to each login node and the sdb, where +

      +
    • The slurmd or slurmctld daemon will run and/or
    • +
    • Users will be submitting jobs
    • +

    + +
    +login: # mkdir --mode=0711 -vp /var/lib/munge
    +login: # mkdir --mode=0700 -vp /var/log/munge
    +login: # mkdir --mode=0755 -vp /var/run/munge
    +login: # module load slurm
    +
    +
    +sdb: # mkdir --mode=0711 -vp /var/lib/munge
    +sdb: # mkdir --mode=0700 -vp /var/log/munge
    +sdb: # mkdir --mode=0755 -vp /var/run/munge
    +
    + +

    Start the munge daemon and test it.

    +
    +login: # munged --key-file /opt/slurm/munge/etc/munge.key
    +login: # munge -n
    +MUNGE:AwQDAAAEy341MRViY+LacxYlz+mchKk5NUAGrYLqKRUvYkrR+MJzHTgzSm1JALqJcunWGDU6k3vpveoDFLD7fLctee5+OoQ4dCeqyK8slfAFvF9DT5pccPg=:
    +
    + +

    When done, verify network connectivity by executing: +

      +
    • munge -n | ssh other-login-host /opt/slurm/munge/bin/unmunge
    • +
    + + +

    If you decide to keep the installation, you may be interested in automating +the process using an init.d script distributed with the Munge. This +should be installed on all nodes running munge, e.g., 'xtopview -c login' and +'xtopview -n sdbNodeID' +

    +
    +boot: # xtopview -c login
    +login: # cp /software/etc_init_d_munge /etc/init.d/munge
    +login: # chmod u+x /etc/init.d/munge
    +login: # chkconfig munge on
    +login: # exit
    +boot: # xtopview -n 31
    +node/31: # cp /software/etc_init_d_munge /etc/init.d/munge
    +node/31: # chmod u+x /etc/init.d/munge
    +node/31: # chkconfig munge on
    +node/31: # exit
    +
    + +

    Enable the Cray job service

    + +

    This is a common dependency on Cray systems. ALPS relies on the Cray job service to + generate cluster-unique job container IDs (PAGG IDs). These identifiers are used by + ALPS to track running (aprun) job steps. The default (session IDs) is not unique + across multiple login nodes. This standard procedure is described in chapter 9 of + S-2393 and takes only two + steps, both to be done on all 'login' class nodes (xtopview -c login):

    +
      +
    • make sure that the /etc/init.d/job service is enabled (chkconfig) and started
    • +
    • enable the pam_job.so module from /opt/cray/job/default in /etc/pam.d/common-session
      + (NB: the default pam_job.so is very verbose, a simpler and quieter variant is provided + in contribs/cray.)
    • +
    +

    The latter step is required only if you would like to run interactive + salloc sessions.

    +
    +boot: # xtopview -c login
    +login: # chkconfig job on
    +login: # emacs -nw /etc/pam.d/common-session
    +(uncomment the pam_job.so line)
    +session optional /opt/cray/job/default/lib64/security/pam_job.so
    +login: # exit
    +boot: # xtopview -n 31
    +node/31:# chkconfig job on
    +node/31:# emacs -nw /etc/pam.d/common-session
    +(uncomment the pam_job.so line as shown above)
    +
    + +

    Build and Configure SLURM

    -

    Node names must have a three-digit suffix describing their -zero-origin position in the X-, Y- and Z-dimension respectively (e.g. -"tux000" for X=0, Y=0, Z=0; "tux123" for X=1, Y=2, Z=3). -Rectangular prisms of nodes can be specified in SLURM commands and -configuration files using the system name prefix with the end-points -enclosed in square brackets and separated by an "x". -For example "tux[620x731]" is used to represent the eight nodes in a -block with endpoints at "tux620" and "tux731" (tux620, tux621, tux630, -tux631, tux720, tux721, tux730, tux731). -NOTE: We anticipate that Cray will provide node coordinate -information via the ALPS interface in the future, which may result -in a more flexible node naming convention.

    - -

    In ALPS, configure each node to be scheduled using SLURM as type -BATCH.

    - -

    SLURM configuration

    - -

    Four variables must be defined in the config.h file: -APBASIL_LOC (location of the apbasil command), -HAVE_FRONT_END, HAVE_CRAY and HAVE_3D. -The apbasil command should automatically be found. -If that is not the case, please notify us of its location on your system -and we will add that to the search paths tested at configure time. -The other variable definitions can be initiated in several different -ways depending upon how SLURM is being built. -

      -
    1. Execute the configure command with the option ---enable-cray-xt OR
    2. -
    3. Execute the rpmbuild command with the option ---with cray_xt OR
    4. -
    5. Add %with_cray_xt 1 to your ~/.rpmmacros file.
    6. -

    - -

    One slurmd will be used to run all of the batch jobs on -the system. It is from here that users will execute aprun -commands to launch tasks. +

    SLURM can be built and installed as on any other computer as described +Quick Start Administrator Guide. +An example of building and installing SLURM version 2.3.0 is shown below.

    + +
    +login: # mkdir build && cd build
    +login: # slurm/configure \
    +  --prefix=/opt/slurm/2.3.0 \
    +  --with-munge=/opt/slurm/munge/ \
    +  --with-mysql_config=/opt/cray/MySQL/5.0.64-1.0000.2899.20.2.gem/bin \
    +  --with-srun2aprun
    +login: # make -j
    +login: # mkdir install
    +login: # make DESTDIR=/tmp/slurm/build/install install
    +login: # make DESTDIR=/tmp/slurm/build/install install-contrib
    +login: # cd install
    +login: # tar czf slurm_opt.tar.gz opt
    +login: # scp slurm_opt.tar.gz boot:/rr/current/software
    +
    + +
    +boot: # xtopview
    +default: # tar xzf /software/slurm_opt.tar.gz -C /
    +default: # cd /opt/slurm/
    +default: # ln -s 2.3.0 default
    +
    + +

    When building SLURM's slurm.conf configuration file, use the +NodeName parameter to specify all batch nodes to be scheduled. +If nodes are defined in ALPS, but not defined in the slurm.conf file, a +complete list of all batch nodes configured in ALPS will be logged by +the slurmctld daemon when it starts. +One would typically use this information to modify the slurm.conf file +and restart the slurmctld daemon. +Note that the NodeAddr and NodeHostName fields should not be +configured, but will be set by SLURM using data from ALPS. +NodeAddr be set to the node's XYZ coordinate and be used by SLURM's +smap and sview commands. +NodeHostName will be set to the node's component label. +The format of the component label is "c#-#c#s#n#" where the "#" fields +represent in order: cabinet, row, cate, blade or slot, and node. +For example "c0-1c2s5n3" is cabinet 0, row 1, cage 3, slot 5 and node 3.

    + +

    The slurmd daemons will not execute on the compute nodes, but will +execute on one or more front end nodes. +It is from here that batch scripts will execute aprun commands to +launch tasks. This is specified in the slurm.conf file by using the -NodeName field to identify the compute nodes and both the -NodeAddr and NodeHostname fields to identify the -computer when slurmd runs (normally some sort of front-end node) +FrontendName and optionally the FrontEndAddr fields as seen in the examples below.

    -

    Next you need to select from two options for the resource selection -plugin (the SelectType option in SLURM's slurm.conf configuration -file): -

      -
    1. select/cons_res - Performs a best-fit algorithm based upon a -one-dimensional space to allocate whole nodes, sockets, or cores to jobs -based upon other configuration parameters.
    2. -
    3. select/linear - Performs a best-fit algorithm based upon a -one-dimensional space to allocate whole nodes to jobs.
    4. -
    - -

    In order for select/cons_res or select/linear to -allocate resources physically nearby in three-dimensional space, the -nodes be specified in SLURM's slurm.conf configuration file in -such a fashion that those nearby in slurm.conf (one-dimensional -space) are also nearby in the physical three-dimensional space. -If the definition of the nodes in SLURM's slurm.conf configuration -file are listed on one line (e.g. NodeName=tux[000x333]), -SLURM will automatically perform that conversion using a -Hilbert curve. -Otherwise you may construct your own node name ordering and list them -one node per line in slurm.conf. -Note that each node must be listed exactly once and consecutive -nodes should be nearby in three-dimensional space. -Also note that each node must be defined individually rather than using -a hostlist expression in order to preserve the ordering (there is no -problem using a hostlist expression in the partition specification after -the nodes have already been defined). -The open source code used by SLURM to generate the Hilbert curve is -included in the distribution at contribs/skilling.c in the event -that you wish to experiment with it to generate your own node ordering. -Two examples of SLURM configuration files are shown below:

    - -
    -# slurm.conf for Cray XT system of size 4x4x4
    -# Parameters removed here
    -SelectType=select/linear
    -NodeName=DEFAULT Procs=8 RealMemory=2048 State=Unknown
    -NodeName=tux[000x333] NodeAddr=front_end NodeHostname=front_end
    -PartitionName=debug Nodes=tux[000x333] Default=Yes State=UP
    -
    - -
    -# slurm.conf for Cray XT system of size 4x4x4
    -# Parameters removed here
    -SelectType=select/linear
    -NodeName=DEFAULT Procs=8 RealMemory=2048 State=Unknown
    -NodeName=tux000 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux100 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux110 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux010 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux011 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux111 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux101 NodeAddr=front_end NodeHostname=front_end
    -NodeName=tux001 NodeAddr=front_end NodeHostname=front_end
    -PartitionName=debug Nodes=tux[000x111] Default=Yes State=UP
    -
    - -

    In both of the examples above, the node names output by the -scontrol show nodes will be ordered as defined (sequentially -along the Hilbert curve or per the ordering in the slurm.conf file) -rather than in numeric order (e.g. "tux001" follows "tux101" rather -than "tux000"). -SLURM partitions should contain nodes which are defined sequentially -by that ordering for optimal performance.

    +

    Note that SLURM will by default kill running jobs when a node goes DOWN, +while a DOWN node in ALPS only prevents new jobs from being scheduled on the +node. To help avoid confusion, we recommend that SlurmdTimeout in the +slurm.conf file be set to the same value as the suspectend +parameter in ALPS' nodehealth.conf file.

    + +

    You need to specify the appropriate resource selection plugin (the +SelectType option in SLURM's slurm.conf configuration file). +Configure SelectType to select/cray The select/cray +plugin provides an interface to ALPS plus issues calls to the +select/linear, which selects resources for jobs using a best-fit +algorithm to allocate whole nodes to jobs (rather than individual sockets, +cores or threads).

    + +

    Note that the system topology is based upon information gathered from +the ALPS database and is based upon the ALPS_NIDORDER configuration in +/etc/sysconfig/alps. Excerpts of a slurm.conf file for +use on a Cray systems follow:

    + +
    +#---------------------------------------------------------------------
    +# SLURM USER
    +#---------------------------------------------------------------------
    +# SLURM user on cray systems must be root
    +# This requirement derives from Cray ALPS:
    +# - ALPS reservations can only be created by the job owner or root
    +#   (confirmation may be done by other non-privileged users)
    +# - Freeing a reservation always requires root privileges
    +SlurmUser=root
    +
    +#---------------------------------------------------------------------
    +# PLUGINS
    +#---------------------------------------------------------------------
    +# Network topology (handled internally by ALPS)
    +TopologyPlugin=topology/none
    +
    +# Scheduling
    +SchedulerType=sched/backfill
    +
    +# Node selection: use the special-purpose "select/cray" plugin.
    +# Internally this uses select/linar, i.e. nodes are always allocated
    +# in units of nodes (other allocation is currently not possible, since
    +# ALPS does not yet allow to run more than 1 executable on the same
    +# node, see aprun(1), section LIMITATIONS).
    +#
    +# Add CR_memory as parameter to support --mem/--mem-per-cpu.
    +SelectType=select/cray
    +SelectTypeParameters=CR_Memory
    +
    +# Proctrack plugin: only/default option is proctrack/sgi_job
    +# ALPS requires cluster-unique job container IDs and thus the /etc/init.d/job
    +# service needs to be started on all slurmd and login nodes, as described in
    +# S-2393, chapter 9. Due to this requirement, ProctrackType=proctrack/sgi_job
    +# is the default on Cray and need not be specified explicitly.
    +
    +#---------------------------------------------------------------------
    +# PATHS
    +#---------------------------------------------------------------------
    +SlurmdSpoolDir=/ufs/slurm/spool
    +StateSaveLocation=/ufs/slurm/spool/state
    +
    +# main logfile
    +SlurmctldLogFile=/ufs/slurm/log/slurmctld.log
    +# slurmd logfiles (using %h for hostname)
    +SlurmdLogFile=/ufs/slurm/log/%h.log
    +
    +# PIDs
    +SlurmctldPidFile=/var/run/slurmctld.pid
    +SlurmdPidFile=/var/run/slurmd.pid
    +
    +#---------------------------------------------------------------------
    +# COMPUTE NODES
    +#---------------------------------------------------------------------
    +# Return DOWN nodes to service when e.g. slurmd has been unresponsive
    +ReturnToService=1
    +
    +# Configure the suspectend parameter in ALPS' nodehealth.conf file to the same
    +# value as SlurmdTimeout for consistent behavior (e.g. "suspectend: 600")
    +SlurmdTimeout=600
    +
    +# Controls how a node's configuration specifications in slurm.conf are
    +# used.
    +# 0 - use hardware configuration (must agree with slurm.conf)
    +# 1 - use slurm.conf, nodes with fewer resources are marked DOWN
    +# 2 - use slurm.conf, but do not mark nodes down as in (1)
    +FastSchedule=2
    +
    +# Per-node configuration for PALU AMD G34 dual-socket "Magny Cours"
    +# Compute Nodes. We deviate from slurm's idea of a physical socket
    +# here, since the Magny Cours hosts two NUMA nodes each, which is
    +# also visible in the ALPS inventory (4 Segments per node, each
    +# containing 6 'Processors'/Cores).
    +NodeName=DEFAULT Sockets=4 CoresPerSocket=6 ThreadsPerCore=1
    +NodeName=DEFAULT RealMemory=32000 State=UNKNOWN
    +
    +# List the nodes of the compute partition below (service nodes are not
    +# allowed to appear)
    +NodeName=nid00[002-013,018-159,162-173,178-189]
    +
    +# Frontend nodes: these should not be available to user logins, but
    +#                 have all filesystems mounted that are also 
    +#                 available on a login node (/scratch, /home, ...).
    +FrontendName=palu[7-9]
    +
    +#---------------------------------------------------------------------
    +# ENFORCING LIMITS
    +#---------------------------------------------------------------------
    +# Enforce the use of associations: {associations, limits, wckeys}
    +AccountingStorageEnforce=limits
    +
    +# Do not propagate any resource limits from the user's environment to
    +# the slurmd
    +PropagateResourceLimits=NONE
    +
    +#---------------------------------------------------------------------
    +# Resource limits for memory allocation:
    +# * the Def/Max 'PerCPU' and 'PerNode' variants are mutually exclusive;
    +# * use the 'PerNode' variant for both default and maximum value, since
    +#   - slurm will automatically adjust this value depending on
    +#     --ntasks-per-node
    +#   - if using a higher per-cpu value than possible, salloc will just
    +#     block.
    +#--------------------------------------------------------------------
    +# XXX replace both values below with your values from 'xtprocadmin -A'
    +DefMemPerNode=32000
    +MaxMemPerNode=32000
    +
    +#---------------------------------------------------------------------
    +# PARTITIONS
    +#---------------------------------------------------------------------
    +# defaults common to all partitions
    +PartitionName=DEFAULT Nodes=nid00[002-013,018-159,162-173,178-189]
    +PartitionName=DEFAULT MaxNodes=178
    +PartitionName=DEFAULT Shared=EXCLUSIVE State=UP DefaultTime=60
    +
    +# "User Support" partition with a higher priority
    +PartitionName=usup Hidden=YES Priority=10 MaxTime=720 AllowGroups=staff
    +
    +# normal partition available to all users
    +PartitionName=day Default=YES Priority=1 MaxTime=01:00:00
    +
    + +

    SLURM supports an optional cray.conf file containing Cray-specific +configuration parameters. This file is NOT needed for production systems, +but is provided for advanced configurations. If used, cray.conf must be +located in the same directory as the slurm.conf file. Configuration +parameters supported by cray.conf are listed below.

    + +

    +
    apbasil
    +
    Fully qualified pathname to the apbasil command. +The default value is /usr/bin/apbasil.
    +
    apkill
    +
    Fully qualified pathname to the apkill command. +The default value is /usr/bin/apkill.
    +
    SDBdb
    +
    Name of the ALPS database. +The default value is XTAdmin.
    +
    SDBhost
    +
    Hostname of the database server. +The default value is based upon the contents of the 'my.cnf' file used to +store default database access information and that defaults to user 'sdb'.
    +
    SDBpass
    +
    Password used to access the ALPS database. +The default value is based upon the contents of the 'my.cnf' file used to +store default database access information and that defaults to user 'basic'.
    +
    SDBport
    +
    Port used to access the ALPS database. +The default value is 0.
    +
    SDBuser
    +
    Name of user used to access the ALPS database. +The default value is based upon the contents of the 'my.cnf' file used to +store default database access information and that defaults to user 'basic'.
    +

    + +
    +# Example cray.conf file
    +apbasil=/opt/alps_simulator_40_r6768/apbasil.sh
    +SDBhost=localhost
    +SDBuser=alps_user
    +SDBdb=XT5istanbul
    +
    + +

    One additional configuration script can be used to insure that the slurmd +daemons execute with the highest resource limits possible, overriding default +limits on Suse systems. Depending upon what resource limits are propagated +from the user's environment, lower limits may apply to user jobs, but this +script will insure that higher limits are possible. Copy the file +contribs/cray/etc_sysconfig_slurm into /etc/sysconfig/slurm +for these limits to take effect. This script is executed from +/etc/init.d/slurm, which is typically executed to start the SLURM +daemons. An excerpt of contribs/cray/etc_sysconfig_slurmis shown +below.

    + +
    +#
    +# /etc/sysconfig/slurm for Cray XT/XE systems
    +#
    +# Cray is SuSe-based, which means that ulimits from
    +# /etc/security/limits.conf will get picked up any time SLURM is
    +# restarted e.g. via pdsh/ssh. Since SLURM respects configured limits,
    +# this can mean that for instance batch jobs get killed as a result
    +# of configuring CPU time limits. Set sane start limits here.
    +#
    +# Values were taken from pam-1.1.2 Debian package
    +ulimit -t unlimited	# max amount of CPU time in seconds
    +ulimit -d unlimited	# max size of a process's data segment in KB
    +
    + +

    SLURM's init.d script should also be installed to automatically +start SLURM daemons when nodes boot as shown below. Be sure to edit the script +as appropriate to reference the proper file location (modify the variable +PREFIX). + +

    +login: # scp /home/crayadm/ben/slurm/etc/init.d.slurm boot:/rr/current/software/
    +
    + +

    Now create the needed directories for logs and state files then start the +daemons on the sdb and login nodes as shown below.

    + +
    +sdb: # mkdir -p /ufs/slurm/log
    +sdb: # mkdir -p /ufs/slurm/spool
    +sdb: # /etc/init.d/slurm start
    +
    + +
    +login: # /etc/init.d/slurm start
    +
    + +

    Srun wrapper configuration

    + +

    The srun wrapper to aprun might require modification to run +as desired. Specifically the $aprun variable could be set to the +absolute pathname of that executable file. Without that modification, the +aprun command executed will depend upon the user's search path.

    + +

    In order to debug the srun wrapper, uncomment the line

    +
    +print "comment=$command\n"
    +
    +

    If the srun wrapper is executed from +within an existing SLURM job allocation (i.e. within salloc or an +sbatch script), then it just executes the aprun command with +appropriate options. If executed without an allocation, the wrapper executes +salloc, which then executes the srun wrapper again. This second +execution of the srun wrapper is required in order to process environment +variables that are set by the salloc command based upon the resource +allocation.

    -

    Last modified 9 January 2009

    +

    Last modified 1 August 2011

    diff -Nru slurm-llnl-2.2.7/doc/html/disclaimer.shtml slurm-llnl-2.3.2/doc/html/disclaimer.shtml --- slurm-llnl-2.2.7/doc/html/disclaimer.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/disclaimer.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,90 @@ + + +

    Legal Notices

    + +

    SLURM is free software; you can redistribute it and/or modify it under +the terms of the GNU General +Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) +any later version.

    + +

    SLURM is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details.

    + +

    NO WARRANTY

    +

    The following is an excerpt from the GNU General Public License.

    + +

    BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION.

    + +

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES.

    + +

    Copyrights

    + +

    SLURM represents the collaborative efforts of roughly 100 people representing +roughtly 40 different organizations world-wide. A current list of contributors +can be found at the SLURM Team web page.

    + +

    While many organizations contributed code and/or documentation without +including a copyright notice, the following copyright notices are found in +SLURM's code and documenation files:
    +Copyright (C) 2011 Trinity Centre for High Performance Computing
    +Copyright (C) 2010-2011 SchedMD LLC
    +Copyright (C) 2009 CEA/DAM/DIF
    +Copyright (C) 2009-2011 Centro Svizzero di Calcolo Scientifico (CSCS)
    +Copyright (C) 2008-2011 Lawrence Livermore National Security
    +Copyright (C) 2008 Vijay Ramasubramanian
    +Copyright (C) 2007-2008 Red Hat, Inc.
    +Copyright (C) 2007-2009 National University of Defense Technology, China
    +Copyright (C) 2007-2011 Bull
    +Copyright (C) 2005-2008 Hewlett-Packard Development Company, L.P.
    +Copyright (C) 2004-2009, Marcus Holland-Moritz
    +Copyright (C) 2002-2007 The Regents of the University of California
    +Copyright (C) 2002-2003 Linux NetworX
    +Copyright (C) 2002 University of Chicago
    +Copyright (C) 2001 Paul Marquess
    +Copyright (C) 2000 Markus Friedl
    +Copyright (C) 1999 Kenneth Albanowski
    +Copyright (C) 1998 Todd C. Miller
    +Copyright (C) 1996-2003 Maximum Entropy Data Consultants Ltd,
    +Copyright (C) 1995 Tatu Ylonen , Espoo, Finland
    +Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.

    + +

    Much of the work was performed under the auspices of the U.S. Department of +Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344. +This work was sponsored by an agency of the United States government. +Neither the United States Government nor Lawrence Livermore National +Security, LLC, nor any of their employees, makes any warranty, express +or implied, or assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe privately +owned rights. References herein to any specific commercial products, process, +or services by trade names, trademark, manufacturer or otherwise does not +necessarily constitute or imply its endorsement, recommendation, or +favoring by the United States Government or the Lawrence Livermore National +Security, LLC. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States government or +Lawrence Livermore National Security, LLC, and shall not be used for +advertising or product endorsement purposes.

    + +

    Last modified 27 June 2010

    + + + diff -Nru slurm-llnl-2.2.7/doc/html/dist_plane.shtml slurm-llnl-2.3.2/doc/html/dist_plane.shtml --- slurm-llnl-2.2.7/doc/html/dist_plane.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/dist_plane.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -17,7 +17,7 @@

    On One (1) node: srun -N 1-1 -n 21 -m plane=4 <...>.

    The distribution results in a plane distribution with plane_size 21. -Even thought the user specified a plane_size of 4 the final plane +Even though the user specified a plane_size of 4 the final plane distribution results in a plane_size of 21.

    @@ -114,7 +114,7 @@

    On One (1) node: srun -N 1-1 -n 21 -m plane=4 --cpu_bind=core <...>. -Even thought the user specified a plane_size of 4 the final plane +Even though the user specified a plane_size of 4 the final plane distribution results in a plane distribution with plane_size=8.

    diff -Nru slurm-llnl-2.2.7/doc/html/documentation.shtml slurm-llnl-2.3.2/doc/html/documentation.shtml --- slurm-llnl-2.2.7/doc/html/documentation.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/documentation.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -7,6 +7,8 @@

    SLURM Users

    • Quick Start User Guide
    • +
    • Man Pages
    • +
    • CPU Management User and Administrator Guide
    • MPI Use Guide
    • Support for Multi-core/Multi-threaded Architectures
    • Multi-Cluster Operation
    • @@ -23,6 +25,7 @@

      SLURM Administrators

      If the partitions specifications differ from those listed above, no jobs in that partition will be scheduled by the backfills scheduler. @@ -646,9 +648,22 @@

      24. Can I change my job's size after it has started running?
      -Beginning with Slurm version 2.2 it is possible to decrease a job's size after -it has started, but it is not currently possible to increase a job's size. -Use the scontrol command to change a job's size either by specifying +Support to decrease the size of a running job was added to SLURM version 2.2. +The ability to increase the size of a running job was added to SLURM version 2.3. +While the size of a pending job may be changed with few restrictions, several +significant restrictions apply to changing the size of a running job as noted +below: +

        +
      1. Support is not available on BlueGene or Cray system due to limitations +in the software underlying SLURM.
      2. +
      3. Job(s) changing size must not be in a suspended state, including jobs +suspended for gang scheduling. The jobs must be in a state of pending or +running. We plan to modify the gang scheduling logic in the future to +concurrently schedule a job to be used for expanding another job and the +job to be expanded.
      4. +

      + +

      Use the scontrol command to change a job's size either by specifying a new node count (NumNodes=) for the job or identify the specific nodes (NodeList=) that you want the job to retain. Any job steps running on the nodes which are reliquished by the job will be @@ -658,11 +673,13 @@ should either be removed or altered (e.g. SLURM_NNODES, SLURM_NODELIST and SLURM_NPROCS). The scontrol command will generate a script that can be executed to -reset local environment variables +reset local environment variables. You must retain the SLURM_JOBID environment variable in order for the srun command to gather information about the job's current state and -specify the desired node and/or task count in subsequent srun invocations. -An example is shown below. +specify the desired node and/or task count in subsequent srun invocations. +A new accounting record is generated when a job is resized showing the to have +been resubmitted and restarted at the new size. +An example is shown below.

       #!/bin/bash
       srun my_big_job
      @@ -672,6 +689,114 @@
       rm slurm_job_${SLURM_JOBID}_resize.*
       
      +

      Increasing a job's size
      +Directly increasing the size of a running job would adversely effect the +scheduling of pending jobs. +For the sake of fairness in job scheduling, expanding a running job requires +the user to submit a new job, but specify the option +--dependency=expand:<jobid>. +This option tells SLURM that the job, when scheduled, can be used to expand +the specified jobid. +Other job options would be used to identify the required resources +(e.g. task count, node count, node features, etc.). +This new job's time limit will be automatically set to reflect the end time of +the job being expanded. +This new job's generic resources specification will be automatically set +equal to that of the job being merged to. This is due to the current SLURM +restriction of all nodes associated with a job needing to have the same +generic resource specification (i.e. a job can not have one GPU on one +node and two GPUs on another node), although this restriction may be removed +in the future. This restriction can pose some problems when both jobs can be +allocated resources on the same node, in which case the generic resources +allocated to the new job will be released. If the jobs are allocated resources +on different nodes, the generic resources associated with the resulting job +allocation after the merge will be consistent as expected. +Any licenses associated with the new job will be added to those available in +the job being merged to. +Note that partition and Quality Of Service (QOS) limits will be applied +independently to the new job allocation so the expanded job may exceed size +limits configured for an individual job.

      + +

      After the new job is allocated resources, merge that job's allocation +into that of the original job by executing:
      +scontrol update jobid=<jobid> NumNodes=0
      +The jobid above is that of the job to relinquish it's resources. +To provides more control over when the job expansion occurs, the resources are +not merged into the original job until explicitly requested. +These resources will be transfered to the original job and the scontrol +command will generate a script to reset variables in the second +job's environment to reflect it's modified resource allocation (which would +be no resources). +One would normally exit this second job at this point, since it has no +associated resources. +In order to generate a script to modify the environment variables for the +expanded job, execute:
      +scontrol update jobid=<jobid> NumNodes=ALL
      +Then execute the script generated. +Note that this command does not change the original job's size, but only +generates the script to change its environment variables. +Until the environment variables are modified (e.g. the job's node count, +CPU count, hostlist, etc.), any srun command will only consider the resources +in the original resource allocation. +Note that the original job may have active job steps at the time of it's +expansion, but they will not be effected by the change. +An example of the proceedure is shown below in which the original job +allocation waits until the second resource allocation request can be +satisfied. The job requesting additional resources could also use the sbatch +command and permit the original job to continue execution at its initial size. +Note that the development of additional user tools to manage SLURM resource +allocations is planned in the future to make this process both simpler and +more flexible.

      + +
      +$ salloc -N4 bash
      +salloc: Granted job allocation 65542
      +$ srun hostname
      +icrm1
      +icrm2
      +icrm3
      +icrm4
      +
      +$ salloc -N4 --dependency=expand:$SLURM_JOBID bash
      +salloc: Granted job allocation 65543
      +$ scontrol update jobid=$SLURM_JOBID NumNodes=0
      +To reset SLURM environment variables, execute
      +  For bash or sh shells:  . ./slurm_job_65543_resize.sh
      +  For csh shells:         source ./slurm_job_65543_resize.csh
      +$ exit
      +exit
      +salloc: Relinquishing job allocation 65543
      +
      +$ scontrol update jobid=$SLURM_JOBID NumNodes=ALL
      +To reset SLURM environment variables, execute
      +  For bash or sh shells:  . ./slurm_job_65542_resize.sh
      +  For csh shells:         source ./slurm_job_65542_resize.csh
      +$ . ./slurm_job_$SLURM_JOBID_resize.sh
      +
      +$ srun hostname
      +icrm1
      +icrm2
      +icrm3
      +icrm4
      +icrm5
      +icrm6
      +icrm7
      +icrm8
      +$ exit
      +exit
      +salloc: Relinquishing job allocation 65542
      +
      + +

      25. Why is my MPIHCH2 or MVAPICH2 job not running with +SLURM? Why does the DAKOTA program not run with SLURM?
      +The SLURM library used to support MPIHCH2 or MVAPICH2 references a variety of +symbols. If those symbols resolve to functions or variables in your program +rather than the appropriate library, the application will fail. In the case of +DAKOTA, it contains a function named +regcomp, which will get used rather than the POSIX regex functions. +Rename DAKOTA's function and references from regcomp to something else to make +it work properly.

      + @@ -953,7 +1078,7 @@ resources than physically exist on the node?
      Yes in SLURM version 1.2 or higher. In the slurm.conf file, set FastSchedule=2 and specify -any desired node resource specifications (Procs, Sockets, +any desired node resource specifications (CPUs, Sockets, CoresPerSocket, ThreadsPerCore, and/or TmpDisk). SLURM will use the resource specification for each node that is given in slurm.conf and will not check these specifications @@ -1269,7 +1394,7 @@ communication doesn't work. Solution is to either remove this line or set a different nodeaddr that is known by your other nodes.

      -

      38. How can I stop SLURM from scheduling jobs?
      +

      39. How can I stop SLURM from scheduling jobs?
      You can stop SLURM from scheduling jobs on a per partition basis by setting that partition's state to DOWN. Set its state UP to resume scheduling. For example: @@ -1278,7 +1403,7 @@ $ scontrol update PartitionName=bar State=UP

    -

    39. Can I update multiple jobs with a +

    40. Can I update multiple jobs with a single scontrol command?
    No, but you can probably use squeue to build the script taking advantage of its filtering and formatting options. For example: @@ -1286,7 +1411,7 @@ $ squeue -tpd -h -o "scontrol update jobid=%i priority=1000" >my.script

    -

    40. Can SLURM be used to run jobs on +

    41. Can SLURM be used to run jobs on Amazon's EC2?

    Yes, here is a description of use SLURM use with Amazon's EC2 courtesy of @@ -1310,7 +1435,7 @@ all other instances. This way I have persistent home directories and a very simple first-login script that configures the virtual cluster for me.

    -

    41. If a SLURM daemon core dumps, where can I find the +

    42. If a SLURM daemon core dumps, where can I find the core file?

    For slurmctld the core file will be in the same directory as its log files (SlurmctldLogFile) iif configured using an fully qualified @@ -1326,7 +1451,7 @@ occurs. It will either be in spawned job's working directory on the same location as that described above for the slurmd daemon.

    -

    42. How can TotalView be configured to operate with +

    43. How can TotalView be configured to operate with SLURM?

    The following lines should also be added to the global .tvdrc file for TotalView to operate with SLURM: @@ -1344,6 +1469,6 @@

    -

    Last modified 6 January 2011

    +

    Last modified 4 September 2011

    diff -Nru slurm-llnl-2.2.7/doc/html/footer.txt slurm-llnl-2.3.2/doc/html/footer.txt --- slurm-llnl-2.2.7/doc/html/footer.txt 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/footer.txt 2011-12-05 17:20:08.000000000 +0000 @@ -1,32 +1,15 @@
    -
    -
    Lawrence Livermore National Laboratory
    -7000 East Avenue • Livermore, CA 94550
    -
    Operated by -Lawrence Livermore National Security, LLC, for the - -Department of Energy's
    - -National Nuclear Security Administration
    - - - - -NNSA logo links to the NNSA Web site -Department of Energy logo links to the DOE Web site - - diff -Nru slurm-llnl-2.2.7/doc/html/gang_scheduling.shtml slurm-llnl-2.3.2/doc/html/gang_scheduling.shtml --- slurm-llnl-2.2.7/doc/html/gang_scheduling.shtml 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/gang_scheduling.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -98,6 +98,9 @@ max_share value is 4. To allow up to 6 jobs from this partition to be allocated to a common resource, set Shared=FORCE:6. To only let 2 jobs timeslice on the same resources, set Shared=FORCE:2. +NOTE: Gang scheduling is performed independently for each partition, so +configuring partitions with overlapping nodes and gang scheduling is generally +not recommended.

    @@ -522,6 +525,6 @@ the selector and submitting appropriately sized jobs.

    -

    Last modified 11 August 2009

    +

    Last modified 24 June 2011

    diff -Nru slurm-llnl-2.2.7/doc/html/gres_design.shtml slurm-llnl-2.3.2/doc/html/gres_design.shtml --- slurm-llnl-2.2.7/doc/html/gres_design.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/gres_design.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,126 @@ + + +

    Generic Resource (GRES) Design Guide

    + +

    Overview

    + +

    Generic Resources (GRES) are resources associated with a specific node +that can be allocated to jobs and steps. The most obvious example of +GRES use would be GPUs. GRES are identified by a specific name and use an +optional plugin to provide device-specific support. This document is meant +to provide details about SLURM's implementation of GRES support including the +relevant data structures. For an overview of GRES configuration and use, see +Generic Resource (GRES) Scheduling. For details about +the APIs provided by GRES plugins, see +SLURM Generic Resource (GRES) Plugin API.

    + +

    Data Structures

    + +

    GRES are associated with SLURM nodes, jobs and job steps. You will find +a string variable named gres in those data structures which +is used to store the GRES configured on a node or required by a job or step +(e.g. "gpu:2,nic:1"). This string is also visible to various SLURM commands +viewing information about those data structures (e.g. "scontrol show job"). +There is a second variable associated with each of those data structures on +the slurmctld daemon +named gres_list that is intended for program use only. Each element +in the list gres_list provides information about a specific GRES type +(e.g. one data structure for "gpu" and a second structure with information +about "nic"). The structures on gres_list contain an ID number +(which is faster to compare than a string) plus a pointer to another structure. +This second structure differs somewhat for nodes, jobs, and steps (see +gres_node_state_t, gres_job_state_t, and gres_step_state_t in +src/common/gres.h for details), but contains various counters and bitmaps. +Since these data structures differ for various entity types, the functions +used to work with them are also different. If no GRES are associated with a +node, job or step, then both gres and gres_list will be NULL.

    + +
    +------------------------
    +|   Job Information    |
    +|----------------------|
    +| gres = "gpu:2,nic:1" |
    +|      gres_list       |
    +------------------------
    +           |
    +           +---------------------------------
    +           |                                |
    +   ------------------               ------------------
    +   | List Struct    |               | List Struct    |
    +   |----------------|               |----------------|
    +   | id = 123 (gpu) |               | id = 124 (nic) |
    +   |   gres_data    |               |   gres_data    |
    +   ------------------               ------------------
    +           |                                |
    +           |                              ....
    +           |
    +           |
    +------------------------------------------------
    +| gres_job_state_t                             |
    +|----------------------------------------------|
    +| gres_count = 2                               |
    +| node_count = 3                               |
    +| gres_bitmap(by node) = 0,1;                  |
    +|                        2,3;                  |
    +|                        0,2                   |
    +| gres_count_allocated_to_steps(by node) = 1;  |
    +|                                          1;  |
    +|                                          1   |
    +| gres_bitmap_allocated_to_steps(by node) = 0; |
    +|                                           2; |
    +|                                           0  |
    +------------------------------------------------
    +
    + +

    Mode of Operation

    + +

    After the slurmd daemon reads the configuration files, it calls the function +node_config_load() for each configured plugin. This can be used to +validate the configuration, for example validate that the appropriate devices +actually exist. If no GRES plugin exists for that resource type, the information +in the configuration file is assumed correct. Each node's GRES information is +reported by slurmd to the slurmctld daemon at node registration time.

    + +

    The slurmctld daemon maintains GRES information in the data structures +described above for each node, including the number of configured and allocated +resources. If those resources are identified with a specific device file +rather than just a count, bitmaps are used record which specific resources have +been allocated to jobs.

    + +

    The slurmctld daemon's GRES information about jobs includes several arrays +equal in length to the number of allocated nodes. The index into each of the +arrays is the sequence number of the node in that's job's allocation (e.g. +the first element is node zero of the job allocation). The job step's +GRES information is similar to that of a job including the design where the +index into arrays is based upon the job's allocation. This means when a job +step is allocated or terminates, the required bitmap operations are very +easy to perform without computing different index values for job and step +data structures.

    + +

    The most complex operation on the GRES data structures happens when a job +changes size (has nodes added or removed). In that case, the array indexed by +node index must be rebuilt, with records shifting as appropriate. Note that +the current software is not compatible with having different GRES counts by +node (a job can not have 2 GPUs on one node and 1 GPU on a second node), +although that might be addressed at a later time.

    + +

    When a job or step is initiated, it's credential includes allocated GRES information. +This can be used by the slurmd daemon to associate those resources with that +job. Our plan is to use the Linux cgroups logic to bind a job and/or its +tasks with specific GRES devices, however that logic does not currently exist. +What does exist today is a pair of plugin APIs, job_set_env() and +step_set_env() which can be used to set environment variables for the +program directing it to GRES which have been allocated for its use (the CUDA +libraries base their GPU selection upon environment variables, so this logic +should work for CUDA today if users do not attempt to manipulate the +environment variables reserved for CUDA use).

    + +

    If you want to see how GRES logic is allocating resources, configure +DebugFlags=GRES to log GRES state changes. Note the resulting output can +be quite verbose, especially for larger clusters.

    + + + +

    Last modified 18 May 2011

    + + diff -Nru slurm-llnl-2.2.7/doc/html/gres.shtml slurm-llnl-2.3.2/doc/html/gres.shtml --- slurm-llnl-2.2.7/doc/html/gres.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/gres.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -1,6 +1,6 @@ -

    Generic Resource (Gres) Scheduling

    +

    Generic Resource (GRES) Scheduling

    Beginning in SLURM version 2.2 generic resource (Gres) scheduling is supported through a flexible plugin mechanism. Support is initially provided @@ -100,11 +100,14 @@

    Job steps can be allocated generic resources from those allocated to the job using the --gres option with the srun command as described -above. By default a job step will have access to all generic resources -allocated to the job, but lower values may be specified if running more than -one job step concurrently. The job step will be allocated specific generic -resources and those resources will not be available to other job steps. A -simple example is shown below.

    +above. By default, a job step will be allocated none of the generic resources +allocated to the job, but must explicitly request desired generic resources. +This design choice was based upon a scenario where each job executes many +job steps. If job steps were granted access to all generic resources by +default, some job steps would need to explicitly specify zero generic resource +counts, which we considered more confusing. The job step can be allocated +specific generic resources and those resources will not be available to other +job steps. A simple example is shown below.

     #!/bin/bash
    @@ -123,8 +126,13 @@
     

    GPU Management

    In the case of SLURM's GRES plugin for GPUs, the environment variable -CUDA_VISIBLE_DEVICES is set for each job steps to determine which GPUs are -available for its use. CUDA version 3.1 (or higher) uses this environment +CUDA_VISIBLE_DEVICES is set for each job step to determine which GPUs are +available for its use on each node. This environment variable is only set +when tasks are launched on a specific compute node (no global environment +variable is set for the salloc command and the environment variable set +for the sbatch command only reflects the GPUs allocated to that job +on that node, node zero of the allocation). +CUDA version 3.1 (or higher) uses this environment variable in order to run multiple jobs or job steps on a node with GPUs and insure that the resources assigned to each are unique. In the example above, the allocated node may have four or more graphics devices. In that @@ -140,13 +148,7 @@

    NOTE: Be sure to specify the File parameters in the gres.conf file and insure they are in the increasing numeric order.

    -

    Future

    -

    Our plans for the near future call for integrating SLURM GRES support with -Linux cgroups in order to remove access to devices not allocated to -a job or job step.

    - - -

    Last modified 16 September 2010

    +

    Last modified 1 August 2011

    diff -Nru slurm-llnl-2.2.7/doc/html/header.txt slurm-llnl-2.3.2/doc/html/header.txt --- slurm-llnl-2.2.7/doc/html/header.txt 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/header.txt 2011-12-05 17:20:08.000000000 +0000 @@ -8,18 +8,7 @@ - - - - - - - Simple Linux Utility for Resource Management @@ -38,6 +27,7 @@

    About

    • Overview
    • +
    • Meetings
    • What's New
    • Publications
    • Testimonials
    • diff -Nru slurm-llnl-2.2.7/doc/html/help.shtml slurm-llnl-2.3.2/doc/html/help.shtml --- slurm-llnl-2.2.7/doc/html/help.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/help.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -17,12 +17,9 @@

      Commercial Support

      -

      The following companies are known to provide commercial support for SLURM:

      - -

      Last modified 10 May 2010

      +

      Several companies provide commercial support for SLURM including +SchedMD.

      + +

      Last modified 30 June 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/jobacct_gatherplugins.shtml slurm-llnl-2.3.2/doc/html/jobacct_gatherplugins.shtml --- slurm-llnl-2.2.7/doc/html/jobacct_gatherplugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/jobacct_gatherplugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -163,7 +163,7 @@ SLURM_SUCCESS on success, or
      SLURM_ERROR on failure. -

      void jobacct_gather_p_suspend_poll() +

      void jobacct_gather_p_suspend_poll(void)

      Description:
      jobacct_gather_p_suspend_poll() is called when the process is suspended. This causes the polling thread to halt until the process is resumed. @@ -172,7 +172,7 @@

      Returns:
      none -

      void jobacct_gather_p_resume_poll() +

      void jobacct_gather_p_resume_poll(void)

      Description:
      jobacct_gather_p_resume_poll() is called when the process is resumed. This causes the polling thread to resume operation. @@ -181,14 +181,14 @@

      Returns:
      none -

      int jobacct_gather_p_set_proctrack_container_id(uint32_t id) +

      int jobacct_gather_p_set_proctrack_container_id(uint64_t cont_id)

      Description:
      jobacct_gather_p_set_proctrack_container_id() is called after the proctrack container id is known at the start of the slurmstepd, if using a proctrack plugin to track processes this will set the head of the process tree in the plugin.

      Arguments:
      -id (input) procktrack container id. +cont_id (input) procktrack container id.

      Returns:
      SLURM_SUCCESS on success, or
      SLURM_ERROR on failure. @@ -257,6 +257,6 @@ for SLURM plugins.

      Last modified 11 September 2007

      +

      Last modified 15 April 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/job_exit_code.shtml slurm-llnl-2.3.2/doc/html/job_exit_code.shtml --- slurm-llnl-2.2.7/doc/html/job_exit_code.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/job_exit_code.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -49,7 +49,7 @@ sview described above.

      -

      Derived Exit Code and String

      +

      Derived Exit Code and Comment String

      After reading the above description of a job's exit code, one can imagine a scenario where a central task of a batch job fails but the @@ -65,14 +65,16 @@ enabled.

      In addition to the derived exit code, the job record in the SLURM -db contains an additional field known as the "derived exit string". -This is initialized to NULL and can only be changed by the user. A -new option has been added to the sacctmgr command to provide -the user the means to modify these two new fields of the job record. -No other modification to the job record is allowed. For those who -prefer a simpler command specifically designed to view and modify the -derived exit code/string, the sjobexitmod wrapper has been -created (see below).

      +database contains a comment string. This is initialized to the job's +comment string (when AccountingStoreJobComment parameter in the +slurm.conf is set) and can only be changed by the user.

      + +

      A new option has been added to the sacctmgr command to +provide the user the means to modify these two fields of the job +record. No other modification to the job record is allowed. For +those who prefer a simpler command specifically designed to view and +modify the derived exit code and comment string, the +sjobexitmod wrapper has been created (see below).

      The user now has the means to annotate a job's exit code after it completes and provide a description of what failed. This includes the @@ -88,7 +90,7 @@

       > sjobexitmod -l 123
      -       JobID    Account   NNodes        NodeList      State ExitCode DerivedExitCode DerivedExitStr
      +       JobID    Account   NNodes        NodeList      State ExitCode DerivedExitCode        Comment
       ------------ ---------- -------- --------------- ---------- -------- --------------- --------------
       123                  lc        1            tux0  COMPLETED      0:0             0:0
       
      @@ -101,7 +103,7 @@ Modification of job 123 was successful. > sjobexitmod -l 123 - JobID Account NNodes NodeList State ExitCode DerivedExitCode DerivedExitStr + JobID Account NNodes NodeList State ExitCode DerivedExitCode Comment ------------ ---------- -------- --------------- ---------- -------- --------------- -------------- 123 lc 1 tux0 COMPLETED 0:0 49:0 out of memory
    @@ -110,8 +112,8 @@ exit fields:

    -> sacct -X -j 123 -o JobID,NNodes,State,ExitCode,DerivedExitcode,DerivedExitStr
    -       JobID   NNodes      State ExitCode DerivedExitCode DerivedExitStr
    +> sacct -X -j 123 -o JobID,NNodes,State,ExitCode,DerivedExitcode,Comment
    +       JobID   NNodes      State ExitCode DerivedExitCode        Comment
     ------------ -------- ---------- -------- --------------- --------------
     123                 1  COMPLETED      0:0            49:0  out of memory
     
    diff -Nru slurm-llnl-2.2.7/doc/html/job_launch.shtml slurm-llnl-2.3.2/doc/html/job_launch.shtml --- slurm-llnl-2.2.7/doc/html/job_launch.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/job_launch.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,140 @@ + + +

    Job Launch Design Guide

    + +

    Overview

    + +

    This guide describes at a high level the processes which occur in order +to initiate a job including the daemons and plugins involved in the process. +It describes the process of job allocation, step allocation, task launch and +job termination. The functionality of tens of thousands of lines of code +has been distilled here to a couple of pages of text, so much detail is +missing.

    + +

    Job Allocation

    + +

    The first step of the process is to create a job allocation, which is +a claim on compute resources. A job allocation can be created using the +salloc, sbatch or srun command. The salloc and +sbatch commands create resource allocations while the srun +command will create a resource allocation (if not already running within one) +plus launch tasks. Each of these commands will fill in a data structure +identifying the specifications of the job allocation requirement (e.g. node +count, task count, etc.) based upon command line options and environment +variables and send the RPC to the slurmctld daemon. If the new job +request is the highest priority, the slurmctld daemon will attempt +to select resources for it immediately, otherwise it will validate that the job +request can be satisfied at some time and queue the request. In either case +the request will receive a response almost immediately containing one of the +following:

    +
      +
    • A job ID and the resource allocation specification (nodes, cpus, etc.)
    • +
    • A job ID and notification of the job being in a queued state OR
    • +
    • An error code
    • +
    + +

    The process of selecting resources for a job request involves multiple steps, +some of which involve plugins. The process is as follows:

    +
      +
    1. Call job_submit plugins to modify the request as appropriate
    2. +
    3. Validate the the options are valid for this user (e.g. valid partition +name, valid limits, etc.)
    4. +
    5. Determine if this job is the highest priority runnable job, if so then +really try to allocate resources for it now, otherwise only validate that it +could run if no other jobs existed
    6. +
    7. Determine which nodes could be used for the job. This if the feature +specification uses an exclusive OR option, then multiple iterations of the +selection process below will be required with disjoint sets of nodes
    8. +
    9. Call the select plugin to select the best resources for the request
    10. +
    11. The select plugin will consider network topology and the topology within +a node (e.g. sockets, cores, and threads) to select the best resources for the +job
    12. +
    13. If the job can not be initiated using available resources and preemption +support is configured, the select plugin will also determine if the job +can be initiated after preempting lower priority jobs. If so then initiate +preemption as needed to start the job
    14. +
    + +

    Step Allocation

    + +

    The srun command is always used for job step creation. It fills in +a job step request RPC using information from the command line and environment +variables then sends that request to the slurmctld daemon. It is +important to note that many of the srun options are intended for job +allocation and are not supported by the job step request RPC (for example the +socket, core and thread information is not supported). If a job step uses +all of the resources allocated to the job then the lack of support for some +options is not important. If one wants to execute multiple job steps using +various subsets of resources allocated to the job, this shortcoming could +prove problematic. It is also worth noting that the logic used to select +resources for a job step is relatively simple and entirely contained within +the slurmctld daemon code (the select plugin is not used for job +steps). If the request can not be immediately satisfied due to a request for +exclusive access to resources, the appropriate error message will be sent and +the srun command will retry the request on a periodic basis. +(NOTE: It would be desirable to queue the job step requests to support job step +dependencies and better performance in the initiation of job steps, but that +is not currently supported.) +If the request can be satisfied, the response contains a digitally signed +credential (by the crypto plugin) identifying the resources to be used.

    + +

    Task Launch

    + +

    The srun command builds a task launch request data structure +including the credential, executable name, file names, etc. and sends it to +the slurmd daemon on node zero of the job step allocation. The +slurmd daemon validates the signature and forwards the request to the +slurmd daemons on other nodes to launch tasks for that job step. The +degree of fanout in this message forwarding is configurable using the +TreeWidth parameter. Each slurmd daemon tests that the job has +not been cancelled since the credential was issued (due to a possible race +condition) and spawns a slurmstepd program to manage the job step. +Note that the slurmctld daemon is not directly involved in task +launch in order to minimize the overhead on this critical resource.

    + +

    Each slurmstepd program executes a single job step. +Besides the functions listed below, the slurmstepd program also +executes several SPANK plugin functions at various times.

    +
      +
    1. Performs MPI setup (using the appropriate plugin)
    2. +
    3. Calls the switch plugin to perform any needed network configuration
    4. +
    5. Creates a container for the job step using a proctrack plugin
    6. +
    7. Change user ID to that of the user
    8. +
    9. Configures I/O for the tasks (either using files or a socket connection back +to the srun command
    10. +
    11. Sets up environment variables for the tasks including many task-specific +environment variables
    12. +
    13. Fork/exec the tasks
    14. +
    + +

    Job Step Termination

    + +

    There are several ways in which a job step or job can terminate, each with +slight variation in the logic executed. The simplest case is if the tasks run +to completion. The srun will note the termination of output from the +tasks and notify the slurmctld daemon that the job step has completed. +slurmctld will simply log the job step termination. The job step can +also be explicitly cancelled by a user, reach the end of its time limit, etc. +and those follow a sequence of steps very similar to that for job termination, +which is described below.

    + +

    Job Termination

    + +

    Job termination can either be user initiated (e.g. scancel command) or system +initiated (e.g. time limit reached). The termination ultimately requires +the slurmctld daemon to notify the slurmd daemons on allocated +nodes that the job is to be ended. The slurmd daemon does the following: +

      +
    1. Send a SIGCONT and SIGTERM signal to any user tasks
    2. +
    3. Wait KilLWait seconds if there are any user tasks
    4. +
    5. Send a SIGKILL signal to any user tasks
    6. +
    7. Wait for all tasks to complete
    8. +
    9. Execute any Epilog program
    10. +
    11. Send an epilog_complete RPC to the slurmctld daemon
    12. +
    + + + +

    Last modified 18 May 2011

    + + diff -Nru slurm-llnl-2.2.7/doc/html/job_submit_plugins.shtml slurm-llnl-2.3.2/doc/html/job_submit_plugins.shtml --- slurm-llnl-2.2.7/doc/html/job_submit_plugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/job_submit_plugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -23,12 +23,17 @@ for the type of accounting package. We include samples in the SLURM distribution for
      -
    • defaults—Set default values for job submission or modify requests. -
    • logging—Log select job submission and modification parameters. +
    • defaults—Set default values for job submission or modify +requests.
    • +
    • logging—Log select job submission and modification +parameters.
    • lua—Interface to Lua scripts -implementing these functions (actually a slight variation of them). +implementing these functions (actually a slight variation of them). Sample Lua +scripts can be found with the SLURM distribution in the directory +contribs/lua. The default installation location of the Lua scripts is +the same location as the SLURM configuration file, slurm.conf.
    • partition—Sets a job's default partition based upon job -submission parameters and available partitions. +submission parameters and available partitions.

    SLURM can be configured to use multiple job_submit plugins if desired. @@ -79,7 +84,9 @@

    Lua Functions

    The Lua functions differ slightly from those implemented in C for better ease of use. Sample Lua scripts can be found with the SLURM distribution -in the directory contribs/lua.

    +in the directory contribs/lua. The default installation location of +the Lua scripts is the same location as the SLURM configuration file, +slurm.conf.

    int job_submit(struct job_descriptor *job_desc, List part_list) @@ -128,6 +135,6 @@ releases of SLURM may revise this API.

    Last modified 3 December 2010

    +

    Last modified 29 April 2011

    diff -Nru slurm-llnl-2.2.7/doc/html/Makefile.am slurm-llnl-2.3.2/doc/html/Makefile.am --- slurm-llnl-2.2.7/doc/html/Makefile.am 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -1,7 +1,45 @@ htmldir = ${prefix}/share/doc/@PACKAGE@-@VERSION@/html +if HAVE_MAN2HTML +man_html = \ + ../man/man1/sacct.html \ + ../man/man1/sacctmgr.html \ + ../man/man1/salloc.html \ + ../man/man1/sattach.html \ + ../man/man1/sbatch.html \ + ../man/man1/sbcast.html \ + ../man/man1/scancel.html \ + ../man/man1/scontrol.html \ + ../man/man1/sinfo.html \ + ../man/man1/smap.html \ + ../man/man1/sprio.html \ + ../man/man1/squeue.html \ + ../man/man1/sreport.html \ + ../man/man1/srun.html \ + ../man/man1/srun_cr.html \ + ../man/man1/sshare.html \ + ../man/man1/sstat.html \ + ../man/man1/strigger.html \ + ../man/man1/sview.html \ + ../man/man5/bluegene.conf.html \ + ../man/man5/cgroup.conf.html \ + ../man/man5/gres.conf.html \ + ../man/man5/slurm.conf.html \ + ../man/man5/slurmdbd.conf.html \ + ../man/man5/topology.conf.html \ + ../man/man5/wiki.conf.html \ + ../man/man8/slurmctld.html \ + ../man/man8/slurmd.html \ + ../man/man8/slurmdbd.html \ + ../man/man8/slurmstepd.html \ + ../man/man8/spank.html +else + man_html = +endif + generated_html = \ + ${man_html} \ accounting.html \ accounting_storageplugins.html \ api.html \ @@ -12,25 +50,31 @@ checkpoint_plugins.html \ cons_res.html \ cons_res_share.html \ + cpu_management.html \ cray.html \ crypto_plugins.html \ + disclaimer.html \ dist_plane.html \ documentation.html \ download.html \ faq.html \ gang_scheduling.html \ gres.html \ + gres_design.html \ gres_plugins.html \ help.html \ high_throughput.html \ ibm.html \ jobacct_gatherplugins.html \ job_exit_code.html \ + job_launch.html \ job_submit_plugins.html \ jobcompplugins.html \ mail.html \ + man_index.html \ maui.html \ mc_support.html \ + meetings.html \ moab.html \ mpi_guide.html \ mpiplugins.html \ @@ -53,8 +97,12 @@ reservations.html \ resource_limits.html \ schedplugins.html \ + select_design.html \ selectplugins.html \ slurm.html \ + slurm_ug_agenda.html \ + slurm_ug_cfp.html \ + slurm_ug_registration.html \ sun_const.html \ switchplugins.html \ taskplugins.html \ @@ -68,10 +116,11 @@ ${generated_html} \ allocation_pies.gif \ arch.gif \ - configurator.html \ coding_style.pdf \ + configurator.html \ entities.gif \ example_usage.gif \ + linuxstyles.css \ lll.gif \ mc_support.gif \ plane_ex1.gif \ @@ -87,7 +136,6 @@ sponsors.gif \ topo_ex1.gif \ topo_ex2.gif \ - linuxstyles.css \ usage_pies.gif MOSTLYCLEANFILES = ${generated_html} @@ -98,3 +146,12 @@ .shtml.html: `dirname $<`/shtml2html.py $< + +if HAVE_MAN2HTML +.1.html: + `dirname $<`/../man2html.py $(srcdir)/header.txt $(srcdir)/footer.txt $< +.5.html: + `dirname $<`/../man2html.py $(srcdir)/header.txt $(srcdir)/footer.txt $< +.8.html: + `dirname $<`/../man2html.py $(srcdir)/header.txt $(srcdir)/footer.txt $< +endif diff -Nru slurm-llnl-2.2.7/doc/html/Makefile.in slurm-llnl-2.3.2/doc/html/Makefile.in --- slurm-llnl-2.2.7/doc/html/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -62,6 +62,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -72,6 +73,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -116,7 +118,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -153,6 +158,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -210,6 +216,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -245,6 +252,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -297,7 +305,41 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +@HAVE_MAN2HTML_TRUE@man_html = \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sacct.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sacctmgr.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/salloc.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sattach.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sbatch.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sbcast.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/scancel.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/scontrol.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sinfo.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/smap.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sprio.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/squeue.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sreport.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/srun.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/srun_cr.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sshare.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sstat.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/strigger.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man1/sview.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/bluegene.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/cgroup.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/gres.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/slurm.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/slurmdbd.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/topology.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man5/wiki.conf.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man8/slurmctld.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man8/slurmd.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man8/slurmdbd.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man8/slurmstepd.html \ +@HAVE_MAN2HTML_TRUE@ ../man/man8/spank.html + generated_html = \ + ${man_html} \ accounting.html \ accounting_storageplugins.html \ api.html \ @@ -308,25 +350,31 @@ checkpoint_plugins.html \ cons_res.html \ cons_res_share.html \ + cpu_management.html \ cray.html \ crypto_plugins.html \ + disclaimer.html \ dist_plane.html \ documentation.html \ download.html \ faq.html \ gang_scheduling.html \ gres.html \ + gres_design.html \ gres_plugins.html \ help.html \ high_throughput.html \ ibm.html \ jobacct_gatherplugins.html \ job_exit_code.html \ + job_launch.html \ job_submit_plugins.html \ jobcompplugins.html \ mail.html \ + man_index.html \ maui.html \ mc_support.html \ + meetings.html \ moab.html \ mpi_guide.html \ mpiplugins.html \ @@ -349,8 +397,12 @@ reservations.html \ resource_limits.html \ schedplugins.html \ + select_design.html \ selectplugins.html \ slurm.html \ + slurm_ug_agenda.html \ + slurm_ug_cfp.html \ + slurm_ug_registration.html \ sun_const.html \ switchplugins.html \ taskplugins.html \ @@ -364,10 +416,11 @@ ${generated_html} \ allocation_pies.gif \ arch.gif \ - configurator.html \ coding_style.pdf \ + configurator.html \ entities.gif \ example_usage.gif \ + linuxstyles.css \ lll.gif \ mc_support.gif \ plane_ex1.gif \ @@ -383,7 +436,6 @@ sponsors.gif \ topo_ex1.gif \ topo_ex2.gif \ - linuxstyles.css \ usage_pies.gif MOSTLYCLEANFILES = ${generated_html} @@ -392,7 +444,7 @@ all: all-am .SUFFIXES: -.SUFFIXES: .html .shtml +.SUFFIXES: .html .1 .5 .8 .shtml $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -601,10 +653,18 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-htmlDATA +@HAVE_MAN2HTML_FALSE@ man_html = .shtml.html: `dirname $<`/shtml2html.py $< +@HAVE_MAN2HTML_TRUE@.1.html: +@HAVE_MAN2HTML_TRUE@ `dirname $<`/../man2html.py $(srcdir)/header.txt $(srcdir)/footer.txt $< +@HAVE_MAN2HTML_TRUE@.5.html: +@HAVE_MAN2HTML_TRUE@ `dirname $<`/../man2html.py $(srcdir)/header.txt $(srcdir)/footer.txt $< +@HAVE_MAN2HTML_TRUE@.8.html: +@HAVE_MAN2HTML_TRUE@ `dirname $<`/../man2html.py $(srcdir)/header.txt $(srcdir)/footer.txt $< + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -Nru slurm-llnl-2.2.7/doc/html/man_index.shtml slurm-llnl-2.3.2/doc/html/man_index.shtml --- slurm-llnl-2.2.7/doc/html/man_index.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/man_index.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,43 @@ + + +

    Man Pages

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sacctdisplays accounting data for all jobs and job steps in the SLURM job accounting log or SLURM database
    sacctmgrUsed to view and modify Slurm account information.
    sallocObtain a SLURM job allocation (a set of nodes), execute a command, and then release the allocation when the command is finished.
    sattachAttach to a SLURM job step.
    sbatchSubmit a batch script to SLURM.
    sbcasttransmit a file to the nodes allocated to a SLURM job.
    scancelUsed to signal jobs or job steps that are under the control of Slurm.
    scontrolUsed view and modify Slurm configuration and state.
    sinfoview information about SLURM nodes and partitions.
    slurmSLURM system overview.
    smapgraphically view information about SLURM jobs, partitions, and set configurations parameters.
    sprioview the factors that comprise a job's scheduling priority
    squeueview information about jobs located in the SLURM scheduling queue.
    sreportGenerate reports from the slurm accounting data.
    srun_crrun parallel jobs with checkpoint/restart support
    srunRun parallel jobs
    sshareTool for listing the shares of associations to a cluster.
    sstatDisplay various status information of a running job/step.
    striggerUsed set, get or clear Slurm trigger information.
    sviewgraphical user interface to view and modify SLURM state.
    bluegene.confSlurm configuration file for BlueGene systems
    cgroup.confSlurm configuration file for the cgroup support
    gres.confSlurm configuration file for generic resource management.
    slurm.confSlurm configuration file
    slurmdbd.confSlurm Database Daemon (SlurmDBD) configuration file
    topology.confSlurm configuration file for defining the network topology
    wiki.confSlurm configuration file for wiki and wiki2 scheduler plugins
    slurmctldThe central management daemon of Slurm.
    slurmdThe compute node daemon for SLURM.
    slurmdbdSlurm Database Daemon.
    slurmstepdThe job step manager for SLURM.
    SPANKSLURM Plug-in Architecture for Node and job (K)control
    + + +

    Last modified 15 October 2010

    + + diff -Nru slurm-llnl-2.2.7/doc/html/mc_support.shtml slurm-llnl-2.3.2/doc/html/mc_support.shtml --- slurm-llnl-2.2.7/doc/html/mc_support.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/mc_support.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -2,8 +2,6 @@

    Support for Multi-core/Multi-thread Architectures

    -Note: This document describes features added to SLURM version 1.2. -

    Contents

    -

    Definitions

    @@ -43,7 +40,6 @@ allowing a process to run on more than one logical processor. -

    Overview of new srun flags

    @@ -845,9 +841,9 @@ JobState=RUNNING StartTime=09/25-17:17:30 EndTime=NONE NodeList=hydra[12-14] NodeListIndices=0,2,-1 AllocCPUs=1,2,1 - ReqProcs=4 ReqNodes=2 ReqS:C:T=2:1:* + NumCPUs=4 ReqNodes=2 ReqS:C:T=2:1:* Shared=0 Contiguous=0 CPUs/task=0 - MinProcs=0 MinMemory=0 MinTmpDisk=0 Features=(null) + MinCPUs=0 MinMemory=0 MinTmpDisk=0 Features=(null) Dependency=0 Account=(null) Reason=None Network=(null) ReqNodeList=(null) ReqNodeListIndices=-1 ExcNodeList=(null) ExcNodeListIndices=-1 @@ -903,7 +899,7 @@
     FastSchedule=1
    -NodeName=dualcore[01-16] Procs=4 CoresPerSocket=2 ThreadsPerCore=1
    +NodeName=dualcore[01-16] CPUs=4 CoresPerSocket=2 ThreadsPerCore=1
     

    Below is a more complete description of the configuration possible @@ -941,13 +937,13 @@ # # "RealMemory" : Amount of real memory (in Megabytes) # -# "Procs" : Number of logical processors on the node. -# If Procs is omitted, it will be inferred from: +# "CPUs" : Number of logical processors on the node. +# If CPUs is omitted, it will be inferred from: # Sockets, CoresPerSocket, and ThreadsPerCore. # # "Sockets" : Number of physical processor sockets/chips on the node. # If Sockets is omitted, it will be inferred from: -# Procs, CoresPerSocket, and ThreadsPerCore. +# CPUs, CoresPerSocket, and ThreadsPerCore. # # "CoresPerSocket" # : Number of cores in a single physical processor socket @@ -972,12 +968,12 @@ # # Example Node configuration: # -# NodeName=DEFAULT Procs=2 TmpDisk=64000 State=UNKNOWN +# NodeName=DEFAULT CPUs=2 TmpDisk=64000 State=UNKNOWN # NodeName=host[0-25] NodeAddr=ehost[0-25] Weight=16 # NodeName=host26 NodeAddr=ehost26 Weight=32 Feature=graphics_card -# NodeName=dualcore01 Procs=4 CoresPerSocket=2 ThreadsPerCore=1 -# NodeName=dualcore02 Procs=4 Sockets=2 CoresPerSocket=2 ThreadsPerCore=1 -# NodeName=multicore03 Procs=64 Sockets=8 CoresPerSocket=4 ThreadsPerCore=2 +# NodeName=dualcore01 CPUs=4 CoresPerSocket=2 ThreadsPerCore=1 +# NodeName=dualcore02 CPUs=4o Sockets=2 CoresPerSocket=2 ThreadsPerCore=1 +# NodeName=multicore03 CPUs=64 Sockets=8 CoresPerSocket=4 ThreadsPerCore=2 diff -Nru slurm-llnl-2.2.7/doc/html/meetings.shtml slurm-llnl-2.3.2/doc/html/meetings.shtml --- slurm-llnl-2.2.7/doc/html/meetings.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/meetings.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,20 @@ + + +

    Meetings

    + +

    SLURM User Group Meeting 2011
    +September 22-23, 2011
    +Phoenix, Arizona, USA

    + +

    Call for submissions
    +Registration
    +Agenda
    +

    + + + +

    Last modified 23 May 2011

    + + diff -Nru slurm-llnl-2.2.7/doc/html/mpi_guide.shtml slurm-llnl-2.3.2/doc/html/mpi_guide.shtml --- slurm-llnl-2.2.7/doc/html/mpi_guide.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/mpi_guide.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -4,7 +4,7 @@

    MPI use depends upon the type of MPI being used. There are three fundamentally different modes of operation used -by these various MPI implementation. +by these various MPI implementations.

    1. SLURM directly launches the tasks and performs initialization of communications (Quadrics MPI, MPICH2, MPICH-GM, MPICH-MX, diff -Nru slurm-llnl-2.2.7/doc/html/news.shtml slurm-llnl-2.3.2/doc/html/news.shtml --- slurm-llnl-2.2.7/doc/html/news.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/news.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -6,7 +6,7 @@ @@ -54,7 +54,7 @@

      Major Updates in SLURM Version 2.3

      -

      SLURM Version 2.3 release is planned in May 2011. +

      SLURM Version 2.3 release is planned for Summer 2011. Major enhancements currently planned include:

      • Support for Cray XT and XE computers (integration with ALPS/BASIL).
      • @@ -63,6 +63,10 @@ BlueGene architectures, improves performance and fault tolerance).
      • Support for Linux cgroup job containers including integration with generic resources.
      • +
      • Resource reservations with a node count specification will select +those nodes optimized for the system topology.
      • +
      • Support for growing job allocations (support for shrinking jobs was added +in version 2.2).

      Major Updates in SLURM Version 2.4 and beyond

      @@ -71,10 +75,15 @@ notify slurm-dev@lists.llnl.gov to coordinate activities. Future development plans includes:
        +
      • Faster and more powerful job step management support (e.g. step +dependencies).
      • +
      • Improved user support for fault-tolerance (e.g. "hot spare" resources).
      • Integration with FlexLM license management.
      • -
      • Numerous enhancements to advanced resource reservations.
      • +
      • Numerous enhancements to advanced resource reservations (e.g. start or +end the reservation early depending upon the workload).
      • Add Kerberos credential support including credential forwarding and refresh.
      • +
      • Improved support for provisioning and virtualization.
      • Provide a web-based SLURM administration tool.
      @@ -102,6 +111,6 @@ unpredictable results. This was fixed in SLURM version 2.1.14.
    2. -

      Last modified 3 January 2011

      +

      Last modified 17 March 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/overview.shtml slurm-llnl-2.3.2/doc/html/overview.shtml --- slurm-llnl-2.2.7/doc/html/overview.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/overview.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -22,13 +22,6 @@ and sophisticated multifactor job prioritization algorithms. -

      SLURM has been developed through the collaborative efforts of -Lawrence Livermore National Laboratory (LLNL), -Hewlett-Packard, -SchedMD, -Bull, -Linux NetworX and many other contributors.

      -

      Architecture

      SLURM has a centralized manager, slurmctld, to monitor resources and work. There may also be a backup manager to assume those responsibilities in the @@ -69,7 +62,7 @@ authd, munge, or none (default). -

    3. Checkpoint: AIX, OpenMPI, XLCH, or none.
    4. +
    5. Checkpoint: AIX, BLCR, OpenMPI, or none.
    6. Cryptography (Digital Signature Generation): munge (default) or @@ -194,7 +187,7 @@ # # Node Configurations # -NodeName=DEFAULT Procs=4 TmpDisk=16384 State=IDLE +NodeName=DEFAULT CPUs=4 TmpDisk=16384 State=IDLE NodeName=lx[0001-0002] State=DRAINED NodeName=lx[0003-8000] RealMemory=2048 Weight=2 NodeName=lx[8001-9999] RealMemory=4096 Weight=6 Feature=video @@ -209,6 +202,6 @@ PartitionName=batch Nodes=lx[0041-9999] -

      Last modified 31 March 2009

      +

      Last modified 5 May 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/platforms.shtml slurm-llnl-2.3.2/doc/html/platforms.shtml --- slurm-llnl-2.2.7/doc/html/platforms.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/platforms.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -13,11 +13,10 @@

      Interconnects

        -
      • BlueGene—SLURM support for IBM's BlueGene/L and BlueGene/P -systems has been thoroughly tested.
      • -
      • Cray XT—Much of the infrastructure to support a Cray XT -system is current in SLURM. The interface to ALPS/BASIL remains to be done. -Please contact us if you would be interested in this work.
      • +
      • BlueGene—SLURM support for IBM's BlueGene/L, BlueGene/P and +BlueGene/Q systems has been thoroughly tested.
      • +
      • Cray XT and XE—Operates as a scheduler on top of Cray's +ALPS/BASIL software. Supported added in SLURM version 2.3.
      • Ethernet—Ethernet requires no special support from SLURM and has been thoroughly tested.
      • IBM Federation—SLURM support for IBM's Federation Switch @@ -31,6 +30,6 @@
      • Other—SLURM ports to other systems will be gratefully accepted.
      -

      Last modified 23 July 2009

      +

      Last modified 8 April 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/power_save.shtml slurm-llnl-2.3.2/doc/html/power_save.shtml --- slurm-llnl-2.2.7/doc/html/power_save.shtml 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/power_save.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -130,7 +130,7 @@ # Example SuspendProgram echo "`date` Suspend invoked $0 $*" >>/var/log/power_save.log hosts=`scontrol show hostnames $1` -for host in "$hosts" +for host in $hosts do sudo node_shutdown $host done @@ -139,7 +139,7 @@ # Example ResumeProgram echo "`date` Resume invoked $0 $*" >>/var/log/power_save.log hosts=`scontrol show hostnames $1` -for host in "$hosts" +for host in $hosts do sudo node_startup $host done diff -Nru slurm-llnl-2.2.7/doc/html/preempt.shtml slurm-llnl-2.3.2/doc/html/preempt.shtml --- slurm-llnl-2.2.7/doc/html/preempt.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/preempt.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -76,6 +76,16 @@ parameters are not critical.
    7. +GraceTime: Specifies a time period for a job to execute after +it is selected to be preempted. This option can be specified by partition or +QOS using the slurm.conf file or database respectively. This option is +only honored if PreemptMode=CANCEL. The GraceTime is specified in +seconds and the default value is zero, which results in no preemption delay. +Once a job has been selected for preemption, it's end time is set to the +current time plus GraceTime and the mechanism used to terminate jobs +upon reaching their time limit is used to cancel the job. +
    8. +
    9. JobAcctGatherType and JobAcctGatherFrequency: The "maximum data segment size" and "maximum virtual memory size" system limits will be configured for each job to ensure that the job does not exceed its requested amount of memory. @@ -92,7 +102,7 @@ The PreemptMode can be specified on a system-wide basis or on a per-partition basis when PreemptType=preempt/partition_prio. Note that when specified on a partition, a compatible mode must also be specified system-wide; -specifically if a PreemptMode is set to SUSPEND for any partition or QOS, then +specifically if a PreemptMode is set to SUSPEND for any partition, then the system-wide PreemptMode must include the GANG parameter so the module responsible for resuming jobs executes. Configure to CANCEL, CHECKPOINT, @@ -109,7 +119,9 @@ jobs. Requeued jobs are permitted to be restarted on different resources.
    10. A value of SUSPEND will suspend and automatically resume the low priority jobs. The SUSPEND option must be used with the GANG -option (e.g. "PreemptMode=SUSPEND,GANG").
    11. +option (e.g. "PreemptMode=SUSPEND,GANG") and with +BPreemptType=preempt/partition_prio (the logic to suspend and resume +jobs currently only has the data structures to support partitions).
    12. A value of GANG may be used with any of the above values and will execute a module responsible for resuming jobs previously suspended for either gang scheduling or job preemption with suspension.
    13. @@ -126,8 +138,10 @@
    14. preempt/qos indicates that jobs from one Quality Of Service (QOS) can preempt jobs from a lower QOS. These jobs can be in the same partition or different partitions. PreemptMode must be set to CANCEL, CHECKPOINT, -SUSPEND or REQUEUE. This option requires the use of a database identifying -available QOS and their preemption rules.
    15. +or REQUEUE. This option requires the use of a database identifying +available QOS and their preemption rules. This option is not compatible with +PreemptMode=OFF or PreemptMode=SUSPEND (i.e. preempted jobs must be removed +from the resources).
    16. @@ -377,6 +391,6 @@ the design. Any and all help is welcome here!

      -

      Last modified 6 December 2010

      +

      Last modified 16 May 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/priority_multifactor.shtml slurm-llnl-2.3.2/doc/html/priority_multifactor.shtml --- slurm-llnl-2.2.7/doc/html/priority_multifactor.shtml 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/priority_multifactor.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -465,9 +465,17 @@ use the PriorityDecayHalfLife option to avoid not having anything running on your cluster, but if your schema is set up to only allow certain amounts of time on your system this is the way to do it. - The unit is a time string (i.e. min, hr:min:00, days-hr:min:00, or - days-hr). The default value is not set (turned off). - + Applicable only if PriorityType=priority/multifactor. The unit is a + time string (i.e. NONE, NOW, DAILY, WEEKLY). The default is NONE. +
        +
      • NONE: Never clear historic usage. The default value.
      • +
      • NOW: Clear the historic usage now. Executed at startup and reconfiguration time.
      • +
      • DAILY: Cleared every day at midnight.
      • +
      • WEEKLY: Cleared every week on Sunday at time 00:00.
      • +
      • MONTHLY: Cleared on the first day of each month at time 00:00.
      • +
      • QUARTERLY: Cleared on the first day of each quarter at time 00:00.
      • +
      • YEARLY: Cleared on the first day of each year at time 00:00.
      • +
      PriorityFavorSmall
      A boolean that sets the polarity of the job size factor. The default setting is NO which results in larger node sizes having a @@ -535,8 +543,8 @@ # apply no decay PriorityDecayHalfLife=0 -# reset usage after 28 days -PriorityUsageResetPeriod=28-0 +# reset usage after 1 month +PriorityUsageResetPeriod=MONTHLY # The larger the job, the greater its job size priority. PriorityFavorSmall=NO @@ -559,4 +567,3 @@

      Last modified 2 November 2010

      - diff -Nru slurm-llnl-2.2.7/doc/html/proctrack_plugins.shtml slurm-llnl-2.3.2/doc/html/proctrack_plugins.shtml --- slurm-llnl-2.2.7/doc/html/proctrack_plugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/proctrack_plugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -22,10 +22,16 @@
    17. aix—Perform process tracking on an AIX platform. NOTE: This requires a kernel extension that records ever process creation and termination.
    18. +
    19. cgroup—Use Linux cgroups for process tracking.
    20. linuxproc—Perform process tracking based upon a scan of the Linux process table and use the parent process ID to determine what processes are members of a SLURM job. NOTE: This mechanism is not entirely reliable for process tracking.
    21. +
    22. lua—Use site-defined Lua +script for process tracking. Sample Lua scripts can be found with the +SLURM distribution in the directory contribs/lua. The default +installation location of the Lua scripts is the same location as the SLURM +configuration file, slurm.conf.
    23. pgid—Use process group ID to determine what processes are members of a SLURM job. NOTE: This mechanism is not entirely reliable for process tracking.
    24. @@ -50,7 +56,7 @@

      Data Objects

      -

      The implementation must support a container id of type uint32_t. +

      The implementation must support a container id of type uint64_t. This container ID is maintained by the plugin directly in the slurmd job structure using the field named cont_id.

      @@ -70,10 +76,10 @@

      The following functions must appear. Functions which are not implemented should be stubbed.

      -

      int slurm_container_create (slurmd_job_t *job);

      +

      int slurm_container_plugin_create (slurmd_job_t *job);

      Description: Create a container. The container should be valid -slurm_container_destroy() is called. +slurm_container_plugin_destroy() is called. This function must put the container ID directory in the job structure's variable cont_id.

      Argument: @@ -83,7 +89,7 @@ the plugin should return SLURM_ERROR and set the errno to an appropriate value to indicate the reason for failure.

      -

      int slurm_container_add (slurmd_job_t *job, pid_t pid);

      +

      int slurm_container_plugin_add (slurmd_job_t *job, pid_t pid);

      Description: Add a specific process ID to a given job's container.

      Arguments:
      @@ -95,7 +101,7 @@ the plugin should return SLURM_ERROR and set the errno to an appropriate value to indicate the reason for failure.

      -

      int slurm_container_signal (uint32_t id, int signal);

      +

      int slurm_container_plugin_signal (uint64_t id, int signal);

      Description: Signal all processes in a given job's container.

      Arguments:
      @@ -111,7 +117,7 @@

      -

      int slurm_container_destroy (uint32_t id);

      +

      int slurm_container_plugin_destroy (uint64_t id);

      Description: Destroy or otherwise invalidate a job container. This does not imply the container is empty, just that it is no longer @@ -123,7 +129,7 @@ the plugin should return SLURM_ERROR and set the errno to an appropriate value to indicate the reason for failure.

      -

      uint32_t slurm_container_find (pid_t pid);

      +

      uint64_t slurm_container_plugin_find (pid_t pid);

      Description: Given a process ID, return its job container ID.

      Arguments: @@ -132,14 +138,27 @@

      Returns: The job container ID with this process or zero if none is found.

      +

      uint32_t slurm_container_plugin_get_pids (uint64_t cont_id, pid_t **pids, int *npids);

      +

      Description: +Given a process container ID, fill in all the process IDs in the container.

      +

      Arguments: + cont_id    (input) +A container ID.

      + pids    (output) +Array of process IDs in the container.

      + npids    (output) +Count of process IDs in the container.

      +

      Returns: SLURM_SUCCESS if + successful, SLURM_ERROR else.

      +

      Versioning

      -

      This document describes version 0 of the SLURM Process Tracking API. +

      This document describes version 91 of the SLURM Process Tracking API. Future releases of SLURM may revise this API. A process tracking plugin conveys its ability to implement a particular API version using the mechanism outlined for SLURM plugins.

      -

      Last modified 6 June 2006

      +

      Last modified 29 April 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/publications.shtml slurm-llnl-2.3.2/doc/html/publications.shtml --- slurm-llnl-2.2.7/doc/html/publications.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/publications.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -7,8 +7,84 @@

      Presentations

      -
    25. SLURM Community Meeting, +
    26. SLURM Community Meeting, Morris Jette, Danny Auble and Don Lipari, Lawrence Livermore National Laboratory (Supercomputing 2009, November 2009)
    27. -
    28. High Scalability Resource Management with +
    29. High Scalability Resource Management with SLURM, Morris Jette, Lawrence Livermore National Laboratory (Supercomputing 2008, November 2008)
    30. -
    31. SLURM Status Report, +
    32. SLURM Status Report, Morris Jette and Danny Auble, Lawrence Livermore National Laboratory (Supercomputing 2008, November 2008)
    33. -
    34. SLURM Version 1.3, +
    35. SLURM Version 1.3, Morris Jette and Danny Auble, Lawrence Livermore National Laboratory (May 2008)
    36. -
    37. Managing Clusters with Moab and SLURM, +
    38. Managing Clusters with Moab and SLURM, Morris Jette and Donald Lipari, Lawrence Livermore National Laboratory (May 2008)
    39. -
    40. Resource Management at LLNL, SLURM Version 1.2, +
    41. Resource Management at LLNL, SLURM Version 1.2, Morris Jette, Danny Auble and Chris Morrone, Lawrence Livermore National Laboratory (April 2007)
    42. -
    43. Resource Management Using SLURM, +
    44. Resource Management Using SLURM, Morris Jette, Lawrence Livermore National Laboratory (Tutorial, The 7th International Conference on Linux Clusters, May 2006)
    45. @@ -130,6 +206,6 @@ Brock Palen and Jeff Squyres speak with Morris Jette and Danny Auble of LLNL about SLURM.

      -

      Last modified 27 December 2010

      +

      Last modified 12 April 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/qos.shtml slurm-llnl-2.3.2/doc/html/qos.shtml --- slurm-llnl-2.2.7/doc/html/qos.shtml 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/qos.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -78,10 +78,12 @@
    46. MaxCPUMinsPerJob Maximum number of CPU*minutes any job with this QOS can run.
    47. GrpCpus Maximum number of CPU's all jobs with this QOS can be allocated.
    48. MaxCpusPerJob Maximum number of CPU's any job with this QOS can be allocated. +
    49. MaxCpusPerUser Maximum number of CPU's any user with this QOS can be allocated.
    50. GrpJobs Maximum number of jobs that can run with this QOS.
    51. MaxJobsPerUser Maximum number of jobs a user can run with this QOS.
    52. GrpNodes Maximum number of nodes that can be allocated to all jobs with this QOS.
    53. MaxNodesPerJob Maximum number of nodes that can be allocated to any job with this QOS. +
    54. MaxNodesPerUser Maximum number of nodes that can be allocated to any user with this QOS.
    55. GrpSubmitJobs Maximum number of jobs with this QOS that can be in the system (no matter what state).
    56. MaxSubmitJobsPerUser Maximum number of jobs with this QOS that can be in the system.
    57. GrpWall Wall clock limit for all jobs running with this QOS. diff -Nru slurm-llnl-2.2.7/doc/html/quickstart_admin.shtml slurm-llnl-2.3.2/doc/html/quickstart_admin.shtml --- slurm-llnl-2.2.7/doc/html/quickstart_admin.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/quickstart_admin.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -409,7 +409,7 @@ Partition and node specifications use node range expressions to identify nodes in a concise fashion. This configuration file defines a 1154-node cluster for SLURM, but it might be used for a much larger cluster by just changing a few -node range expressions. Specify the minimum processor count (Procs), real memory +node range expressions. Specify the minimum processor count (CPUs), real memory space (RealMemory, megabytes), and temporary disk space (TmpDisk, megabytes) that a node should have to be considered available for use. Any node lacking these minimum configuration values will be considered DOWN and not scheduled. @@ -450,7 +450,7 @@ # # Node Configurations # -NodeName=DEFAULT Procs=2 RealMemory=2000 TmpDisk=64000 State=UNKNOWN +NodeName=DEFAULT CPUs=2 RealMemory=2000 TmpDisk=64000 State=UNKNOWN NodeName=mcr[0-1151] NodeAddr=emcr[0-1151] # # Partition Configurations @@ -563,8 +563,8 @@ AllocNode:Sid=adevi:21432 TimeLimit=UNLIMITED StartTime=03/19-12:53:41 EndTime=03/19-12:53:59 NodeList=adev8 NodeListIndecies=-1 - ReqProcs=0 MinNodes=0 Shared=0 Contiguous=0 - MinProcs=0 MinMemory=0 Features=(null) MinTmpDisk=0 + NumCPUs=0 MinNodes=0 Shared=0 Contiguous=0 + MinCPUs=0 MinMemory=0 Features=(null) MinTmpDisk=0 ReqNodeList=(null) ReqNodeListIndecies=-1 JobId=476 UserId=bob(6885) Name=sleep JobState=RUNNING @@ -572,8 +572,8 @@ AllocNode:Sid=adevi:21432 TimeLimit=UNLIMITED StartTime=03/19-12:54:01 EndTime=NONE NodeList=adev8 NodeListIndecies=8,8,-1 - ReqProcs=0 MinNodes=0 Shared=0 Contiguous=0 - MinProcs=0 MinMemory=0 Features=(null) MinTmpDisk=0 + NumCPUs=0 MinNodes=0 Shared=0 Contiguous=0 + MinCPUs=0 MinMemory=0 Features=(null) MinTmpDisk=0 ReqNodeList=(null) ReqNodeListIndecies=-1

      Print the detailed state of job 477 and change its priority to zero. A priority of zero prevents a job from being initiated (it is held in "pending" diff -Nru slurm-llnl-2.2.7/doc/html/quickstart.shtml slurm-llnl-2.3.2/doc/html/quickstart.shtml --- slurm-llnl-2.2.7/doc/html/quickstart.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/quickstart.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -213,9 +213,9 @@ AllocNode:Sid=adev0:16726 TimeLimit=00:10:00 ExitCode=0:0 StartTime=06/02-15:27:11 EndTime=06/02-15:37:11 JobState=PENDING NodeList=(null) NodeListIndices= - ReqProcs=24 ReqNodes=1 ReqS:C:T=1-65535:1-65535:1-65535 + NumCPUs=24 ReqNodes=1 ReqS:C:T=1-65535:1-65535:1-65535 Shared=1 Contiguous=0 CPUs/task=0 Licenses=(null) - MinProcs=1 MinSockets=1 MinCores=1 MinThreads=1 + MinCPUs=1 MinSockets=1 MinCores=1 MinThreads=1 MinMemory=0 MinTmpDisk=0 Features=(null) Dependency=(null) Account=(null) Requeue=1 Reason=None Network=(null) diff -Nru slurm-llnl-2.2.7/doc/html/registration.shtml slurm-llnl-2.3.2/doc/html/registration.shtml --- slurm-llnl-2.2.7/doc/html/registration.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/registration.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,78 @@ + + +

      Registration

      + +

      Please use with the following form to register for the +Slurm User Group Meeting 2011 to be held September 22-23, 2011 in +Phoenix, Arizona, USA. +Note that a registration fee of $100 per person will be collected at +the meeting to defray expenses.

      + +

      Thursday September 22 will be devoted to tutorials. +One room will be devoted to beginner level SLURM training. +A second room will be devoted to advanced topics of SLURM administration and use. +Please specify which tutorial track you would like to attend in the form below.

      + +

      Friday September 23 will be devoted to a variety of technical presentations. +Please see the agenda for more details.

      + +

      Early registration is recommended as the number of attendees is limited to +50 and speakers will receive priority. +You will receive by email the status of your registration within a +few days of its submission.

      + +

      The meeting will be held at LOCATION/ADDRESS in Phoenix Arizion. +A block of rooms are available for meeting attendees wishing to stay at +THAT HOTEL at a preferred rate of $79. HOTEL CONTACT INFO HERE.

      + +
      +
      +
      +	  
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +
      +	    
      +	  
      First Name
      Last Name
      Email
      Country
      Company
      Title
      TutorialsBeginner
      + Advanced
      + None
      Comments
      +
      +
      + + diff -Nru slurm-llnl-2.2.7/doc/html/reservations.shtml slurm-llnl-2.3.2/doc/html/reservations.shtml --- slurm-llnl-2.2.7/doc/html/reservations.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/reservations.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -11,6 +11,13 @@ gang scheduler plugin since the termination time of running jobs is not possible to accurately predict.

      +

      Note that reserved licenses are treated somewhat differently than reserved +nodes. When nodes are reserved, then jobs using that reservation can use only +those nodes and no other jobs can use those nodes. Reserved licenses can only +be used by jobs associated with that reservation, but licenses not explicitly +reserved are available to any job. This eliminates the need to explicitly +put licenses into every advanced reservation created.

      +

      Reservations can be created, updated, or destroyed only by user root or the configured SlurmUser using the scontrol command. The scontrol, smap and sview commands can be used @@ -99,7 +106,7 @@ Users=root Accounts=(null) -

      Our final example is to reserve ten nodes in the default +

      Our next example is to reserve ten nodes in the default SLURM partition starting at noon and with a duration of 60 minutes occurring daily. The reservation will be available only to users alan and brenda.

      @@ -124,6 +131,28 @@ identify the partition from which to select the nodes or _one_ feature that every selected node must contain.

      +

      On a smaller system, one might want to reserve specific CPUs rather than +whole nodes. While the resolution of SLURM's resource reservation is that of +whole nodes, one might configure each CPU as a license to SLURM and reserve +those instead (we understand this is a kludge, but it does provide a way to +work around this shortcoming in SLURM's code). Proper enforcement then requires +that each job request one "cpu" license for each CPU to be allocated, which +can be accomplished by an appropriate job_submit plugin. In the example below, +we configure the system with one license named "cpu" for each CPU in the +system, 64 in this example, then create a reservation for 32 CPUs. The +user developed job_submit plugin would then explicitly set the job's +licenses field to require one "cpu" for each physical CPU required to satisfy +the request.

      +
      +$ scontrol show configuration | grep Licenses
      +Licenses  = cpu*64
      +
      +$ scontrol create reservation starttime=2009-04-06T16:00:00 \
      +   duration=120 user=bob flags=maint,ignore_jobs \
      +   licenses=cpu*32
      +Reservation created: bob_5
      +
      +

      Reservation Use

      The reservation create response includes the reservation's name. @@ -140,6 +169,12 @@ sbatch: Submitted batch job 65540 +

      Note that use of a reservation does not alter a job's priority, but it +does act as an enhancement to the job's priority. +Any job with a reservation is considered for scheduling to resources +before any other job in the same SLURM partition (queue) not associated +with a reservation.

      +

      Reservation Modification

      Reservations can be modified by user root as desired. @@ -234,18 +269,16 @@

      Several enhancements are anticipated at some point in the future.

        -
      1. The automatic selection of nodes for a reservation create request may be -sub-optimal in terms of locality (for optimized application -communication).
      2. Reservations made within a partition having gang scheduling assumes the highest level rather than the actual level of time-slicing when considering the initiation of jobs. This will prevent the initiation of some jobs which would complete execution before a reservation given fewer jobs to time-slice with.
      3. +
      4. Add support to reserve specific CPU counts rather than require whole +nodes be reserved (work around described above).
      - -

      Last modified 27 December 2010

      +

      Last modified 15 September 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/resource_limits.shtml slurm-llnl-2.3.2/doc/html/resource_limits.shtml --- slurm-llnl-2.2.7/doc/html/resource_limits.shtml 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/resource_limits.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -63,7 +63,8 @@ set to true.
    58. -(NOTE: The association is a combination of cluster, account, + +

      (NOTE: The association is a combination of cluster, account, user names and optional partition name.)
      Without AccountingStorageEnforce being set (the default behavior) @@ -72,7 +73,7 @@
      It is advisable to run without the option 'limits' set when running a scheduler on top of SLURM, like Moab, that does not update in real -time their limits per association.

    59. +time their limits per association.

      Tools

      @@ -108,40 +109,23 @@

      Currently available scheduling policy options:

        -
      • Fairshare= Used for determining priority. Essentially - this is the amount of claim this association and it's children have - to the above system.
      • +
      • Fairshare= Integer value used for determining priority. + Essentially this is the amount of claim this association and it's + children have to the above system. Can also be the string "parent", + this means that the parent association is used for fairshare.
      • - - - - - -
      • GrpJobs= The total number of jobs able to run at any given time from this association and its children. If @@ -149,48 +133,61 @@ run after previous jobs complete from this group.
      • -
      • MaxJobs= The total number of jobs able to run at any given - time from this association. If this limit is reached new jobs will - be queued but only allowed to run after previous jobs complete from - this association. -
      • -
      • GrpNodes= The total count of nodes able to be used at any given time from jobs running from this association and its children. If this limit is reached new jobs will be queued but only allowed to run after resources have been relinquished from this group.
      • -
      • MaxNodesPerJob= The maximum size in nodes any given job can - have from this association. If this limit is reached the job will - be denied at submission. -
      • -
      • GrpSubmitJobs= The total number of jobs able to be submitted to the system at any given time from this association and its children. If this limit is reached new submission requests will be denied until previous jobs complete from this group.
      • +
      • GrpWall= The maximum wall clock time any job submitted to + this group can run for. If this limit is reached submission requests + will be denied. +
      • + +
      • MaxCPUsPerJob= The maximum size in cpus any given job can + have from this association. If this limit is reached the job will + be denied at submission. +
      • + +
      • MaxJobs= The total number of jobs able to run at any given + time from this association. If this limit is reached new jobs will + be queued but only allowed to run after previous jobs complete from + this association. +
      • + +
      • MaxNodesPerJob= The maximum size in nodes any given job can + have from this association. If this limit is reached the job will + be denied at submission. +
      • +
      • MaxSubmitJobs= The maximum number of jobs able to be submitted to the system at any given time from this association. If this limit is reached new submission requests will be denied until previous jobs complete from this association.
      • -
      • GrpWall= The maximum wall clock time any job submitted to - this group can run for. Submitting jobs that specify a wall clock - time limit that exceeds this limit will be denied.
      • -
      • MaxWallDurationPerJob= The maximum wall clock time any job - submitted to this association can run for. Submitting jobs that - specify a wall clock time limit that exceeds this limit will be - denied. + submitted to this association can run for. If this limit is reached + the job will be denied at submission.
      • QOS= comma separated list of QOS's this association is able to run.
      • + + +

      The MaxNodes and MaxWall options already exist in @@ -205,6 +202,6 @@ in the priority/multifactor plugin description.

      -

      Last modified 9 October 2009

      +

      Last modified 10 June 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/review_release.html slurm-llnl-2.3.2/doc/html/review_release.html --- slurm-llnl-2.2.7/doc/html/review_release.html 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/review_release.html 2011-12-05 17:20:08.000000000 +0000 @@ -2,13 +2,16 @@ SLURM Web pages for Review and Release - +

      SLURM Web pages for Review and Release

      NOTE: Do not follow links. diff -Nru slurm-llnl-2.2.7/doc/html/select_design.shtml slurm-llnl-2.3.2/doc/html/select_design.shtml --- slurm-llnl-2.2.7/doc/html/select_design.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/select_design.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,104 @@ + + +

      Select Plugin Design Guide

      + +

      Overview

      + +

      The select plugin is responsible for selecting compute resources to be +allocated to a job, plus allocating and deallocating those resources. +The select plugin is aware of the systems topology, based upon data structures +established by the topology plugn. It can also over-subscribe resources to +support gang scheduling (time slicing of parallel jobs), if so configured. +The select plugin is also capable of communicating with an external entity +to perform these actions (the select/bluegene plugin used on an IBM BlueGene +and the select/cray plugin used with Cray ALPS/BASIL software are two +examples). Other architectures would rely upon either the select/linear or +select/cons_res plugin. The select/linear plugin allocates whole nodes to jobs +and is the simplest implementation. The select/cons_res plugin (cons_res +is an abbreviation for consumable resources) can allocate individual +sockets, cores, threads, or CPUs within a node. The select/cons_res plugin +is slightly slower than select/linear, but contains far more complex logic.

      + +

      Mode of Operation

      + +

      The select/linear and select/cons_res plugins have similar modes of +operation. The obvious difference is that data structures in select/linear +are node-centric, while those in select/cons_res contain information at a +finer resolution (sockets, cores, threads, or CPUs depending upon the +SelectTypeParameters configuration parameter). The description below is +generic and applies to both plugin implementations. Note that both plugins +are able to manage memory allocations. Both plugins are also able to manage +generic resource (GRES) allocations, making use of the GRES plugins.

      + +

      Per node data structures include memory (configured and allocated), +GRES (configured and allocated, in a List data structure), plus a flag +indicating if the node has been allocated using an exclusive option (preventing +other jobs from being allocated resources on that same node). The other key +data structure is used to enforce the per-partition Shared configuration +parameter and tracks how many jobs have been allocated each resource in each +partition. This data structure is different between the plugins based upon +the resolution of the resource allocation (e.g. nodes or CPUs).

      + +

      Most of the logic in the select plugin is dedicated to identifying resources +to be allocated to a new job. Input to that function includes: a pointer to the +new job, a bitmap identifying nodes which could be used, node counts (minimum, +maximum, and desired), a count of how many jobs of that partition the job can +share resources with, and a list of jobs which can be preempted to initiate the +new job. The first phase is to determine of all usable nodes, which nodes +would best satisfy the resource requirement. This consistes of a best-fit +algorithm that groups nodes based upon network topology (if the topology/tree +plugin is configured) or based upon consecutive nodes (by default). Once the +best nodes are identified, resources are accumulated for the new job until its +resource requirements are satisfied.

      + +

      If the job can not be started with currently available resources, the plugin +will attempt to identify jobs which can be preempted in order to initiate the +new job. A copy of the current system state will be created including details +about all resources and active jobs. Preemptable jobs will then be removed +from this simulated system state until the new job can be initiated. When +sufficient resources are available for the new job, the jobs actually needing +to be preempted for its initiation will be preempted (this may be a subset of +the jobs whose preemption is simulated).

      + +

      Other functions exist to support suspending jobs, resuming jobs, terminating +jobs, expanding/shrinking job allocations, un/packing job state information, +un/packing node state information, etc. The operation of those functions is +relatively straightforward and not detailed here.

      + +

      Operation on IBM BlueGene Systems

      + +

      On IBM BlueGene systems, SLURM's slurmd daemon executes on the +front-end nodes rather than the compute nodes and IBM provides a Bridge API +to manage compute nodes and jobs. The IBM BlueGene systems also have very +specific topology rules for what resources can be allocated to a job. SLURM's +interface to IBM's Bridge API and the topology rules are found within the +select/bluegene plugin and very little BlueGene-specific logic in SLURM is +found outside of that plugin. Note that the select/bluegene plugin is used for +BlueGene/L, BlueGene/P and BlueGene/Q systems with select portions of the +code conditionally compiled depending upon the system type.

      + +

      Operation on Cray Systems

      + +

      The operation of the select/cray plugin is unique in that it does not +directly select resources for a job, but uses the select/linear plugin for +that purpose. It also interfaces with Cray's ALPS software using the BASIL +interface or directly using the database. On Cray systems, SLURM's slurmd +daemon executes on the front-end nodes rather than the compute nodes and +ALPS is the mechanism available for SLURM to manage compute nodes and their +jobs.

      + +
      +           -------------------
      +           |   select/cray   |
      +           -------------------
      +              |           |
      +-----------------   --------------
      +| select/linear |   | BASIL/ALPS |
      +-----------------   --------------
      +
      + + + +

      Last modified 31 May 2011

      + + diff -Nru slurm-llnl-2.2.7/doc/html/selectplugins.shtml slurm-llnl-2.3.2/doc/html/selectplugins.shtml --- slurm-llnl-2.2.7/doc/html/selectplugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/selectplugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -16,18 +16,24 @@ The major type must be "select." The minor type can be any recognizable abbreviation for the type of node selection algorithm. We recommend, for example:

        +
      • bluegeneIBM Blue Gene +node selector. Note that this plugin not only selects the nodes for a job, but performs +some initialization and termination functions for the job. Use this plugin for +BlueGene/L, BlueGene/P and BlueGene/Q systems.
      • +
      • cons_res—A plugin that can allocate individual processors, +memory, etc. within nodes. This plugin is recommended for systems with +many non-parallel programs sharing nodes. For more information see +Consumable Resources in SLURM.
      • +
      • cray—Cray XE and XT system node selector. Note that this +plugin not only selects the nodes for a job, but performs some initialization +and termination functions for the job. This plugin also serves as a wrapper +for the select/linear plugin which enforces various limits and +provides support for resource selection optimized for the system topology.
      • linear—A plugin that selects nodes assuming a one-dimensional array of nodes. The nodes are selected so as to minimize the number of consecutive sets of nodes utilizing a best-fit algorithm. While supporting shared nodes, this plugin does not allocate individual processors, but can allocate memory to jobs. This plugin is recommended for systems without shared nodes.
      • -
      • cons_res—A plugin that can allocate individual processors, -memory, etc. within nodes. This plugin is recommended for systems with -many non-parallel programs sharing nodes. For more information see -Consumable Resources in SLURM.
      • -
      • bluegeneIBM Blue Gene -node selector. Note that this plugin not only selects the nodes for a job, but performs -some initialization and termination functions for the job.

      The plugin_name and plugin_version @@ -98,7 +104,7 @@

      Description: Save any global node selection state information to a file within the specified directory. The actual file name used is plugin specific. It is recommended that the global switch state contain a magic number for validation purposes. -This function is called by the slurmctld deamon on shutdown.

      +This function is called by the slurmctld daemon on shutdown.

      Arguments: dir_name    (input) fully-qualified pathname of a directory into which user SlurmUser (as defined in slurm.conf) can create a file and write state information into that file. Cannot be NULL.

      @@ -109,7 +115,7 @@

      Description: Restore any global node selection state information from a file within the specified directory. The actual file name used is plugin specific. It is recommended that any magic number associated with the global switch state be verified. -This function is called by the slurmctld deamon on startup.

      +This function is called by the slurmctld daemon on startup.

      Arguments: dir_name    (input) fully-qualified pathname of a directory containing a state information file from which user SlurmUser (as defined in slurm.conf) can read. Cannot be NULL.

      @@ -121,9 +127,10 @@

      State Initialization Functions

      int select_p_node_init (struct node_record *node_ptr, int node_cnt);

      -

      Description: Note the initialization of the node record data -structure. This function is called when the node records are initially established and again -when any nodes are added to or removed from the data structure.

      +

      Description: Note the initialization of the +node record data structure. This function is called by the slurmctld daemon +when the node records are initially established and again when any nodes are +added to or removed from the data structure.

      Arguments:
      node_ptr   (input) pointer to the node data records. Data in these records can read. Nodes deleted after initialization @@ -134,9 +141,10 @@

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR, causing slurmctld to exit.

      -

      int select_p_block_init (List block_list);

      -

      Description: Note the initialization of the partition record data -structure. This function is called when the partition records are initially established and again +

      int select_p_block_init (List part_list);

      +

      Description: Note the initialization of the +partition record data structure. This function is called by the slurmctld +daemon when the partition records are initially established and again when any partition configurations change.

      Arguments: part_list   (input) list of partition @@ -146,32 +154,100 @@ the plugin should return SLURM_ERROR, causing slurmctld to exit.

      int select_p_job_init(List job_list);

      -

      Description: Used at slurm startup to -synchronize plugin (and node) state with that of currently active jobs.

      +

      Description: Used at slurmctld daemon +startup to synchronize plugin (and node) state with that of currently active +jobs.

      Arguments: job_list    (input) list of slurm jobs from slurmctld job records.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR.

      + +

      int select_p_reconfigure (void);

      +

      Description: Used to notify plugin +of change in partition configuration or general configuration change. +The plugin will test global variables for changes as appropriate.

      +

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      + -

      State Synchronization Functions

      -

      int select_p_update_block (update_part_msg_t *part_desc_ptr);

      -

      Description: This function is called when the admin needs -to manually update the state of a block.

      -

      Arguments: - part_desc_ptr   (input) partition -description variable. Containing the block name and the state to set the block.

      +

      Node-Specific Functions

      + +

      select_nodeinfo_t *select_p_select_nodeinfo_alloc(void);

      +

      Description: Allocate a buffer for select +plugin specific information about a node. Use select_p_select_nodeinfo_free() +to free the returned data structure.

      +

      Returns: A buffer for select plugin specific +information about a node or NULL on failure. Use select_p_select_nodeinfo_free() +to free this data structure.

      + +

      int select_p_select_nodeinfo_pack(select_nodeinfo_t *nodeinfo, +Buf buffer, uint16_t protocol_version);

      +

      Description: Pack select plugin specific +information about a node into a buffer for node queries.

      +

      Argument:
      + nodeinfo    (input) Node information to be packed.
      + buffer    (input/output) pointer +to buffer into which the node information is packed.
      + protocol_version    (input) +Version number of the data packing mechanism (needed for backward compatibility).

      +

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      + +

      int select_p_select_nodeinfo_unpack(select_nodeinfo_t **nodeinfo, +Buf buffer, uint16_t protocol_version);

      +

      Description: Unpack select plugin specific +information about a node from a buffer for node queries. Use +select_p_select_nodeinfo_free() to free the returned data structure.

      +

      Argument:
      + nodeinfo    (output) Node +information unpacked from the buffer. Use select_p_select_nodeinfo_free() +to free the returned data structure.
      + buffer    (input/output) pointer +to buffer from which the node information is to be unpacked.
      + protocol_version    (input) +Version number of the data packing mechanism (needed for backward compatibility).

      +

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      + +

      int select_p_select_nodeinfo_free(select_nodeinfo_t *nodeinfo);

      +

      Description: Free a buffer which was +previously allocated for select plugin specific information about a node.

      +

      Argument: + nodeinfo    (input/output) The buffer to be freed.

      +

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      + +

      int int select_p_select_nodeinfo_set(struct job_record *job_ptr);

      +

      Description: Reset select plugin specific +information about a job. Called by slurmctld daemon after that job's state has +been restored (at startup) or job has been scheduled.

      +

      Argument: + job_ptr    (input) Pointer +to the updated job.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR.

      -

      int select_p_update_nodeinfo(struct node_record *node_ptr);

      -

      Description: Update plugin-specific information -related to the specified node. This is called after changes in a node's configuration.

      +

      int select_p_select_nodeinfo_set_all(time_t last_query_time);

      +

      Description: Update select plugin specific +information about every node as needed.

      Argument: - node_ptr    (input) pointer -to the node for which information is requested.

      + last_query_time    (input) Time +of previous node state query. Only update the information if data has changed +since this time.

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      int select_p_select_nodeinfo_get(select_nodeinfo_t *nodeinfo, +enum select_nodedata_type dinfo, enum node_states state, void *data);

      +

      Description: Get information from a +select plugin's node specific data structure.

      +

      Argument:
      + nodeinfo    (input) Node information +data structure from which information is to get retrieved.
      + dinfo    (input) Data type to +be retrieved.
      + state    (input) Node state filter +to be applied (e.g. only get information about ALLOCATED nodes).
      + data    (output) The retrieved data.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR.

      @@ -181,58 +257,189 @@ For example, the node was configured with 1GB of memory in slurm.conf, but actually registered with 2GB of memory.

      Arguments:
      - index   (input) index -of the node in reference to the entire system.

      + index   (input) zero origin index +of the node in reference to the entire system.

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      -

      int select_p_update_node_state (int index, uint16_t state);

      -

      Description: push a change of state -into the plugin the index should be the index from the slurmctld of -the entire system. The state should be the same state the node_record -was set to in the slurmctld.

      -

      Arguments:
      - index   (input) index -of the node in reference to the entire system.

      - state   (input) new -state of the node.

      -

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      - -

      int select_p_update_sub_node (update_part_msg_t *part_desc_ptr);

      -

      Description: update the state of a portion of -a SLURM node. Currently used on BlueGene systems to place node cards within a -midplane into or out of an error state.

      -

      Arguments: - part_desc_ptr   (input) partition -description variable. Containing the sub-block name and its new state.

      +

      bool select_p_node_ranking(struct node_record *node_ptr, int node_cnt)

      +

      Description: This function is called by the slurmctld +daemon at start time to set node rank information for recording the nodes to +optimize application performance.

      +

      Arguments:
      + node_ptr   (input/output) pointer +to the node data structure. Each node's node rank field may be set.
      + node_cnt   (input) number +of nodes configured on the system.

      +

      Returns: true if node rank information has +been set.

      + +

      int select_p_update_node_state (struct node_record *node_ptr);

      +

      Description: push a node state change +into the plugin. The index should be the index from the slurmctld of +the entire system.

      +

      Arguments:
      + node_ptr   (input/output) pointer +to the node data structure. Each node's node rank field may be set.

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      int select_p_alter_node_cnt (enum select_node_cnt type, void *data);

      -

      Description: Used for systems like -a Bluegene system where SLURM sees 1 node where many nodes really -exists, in Bluegene's case 1 node reflects 512 nodes in real live, but -since usually 512 is the smallest allocatable block slurm only handles -it as 1 node. This is a function so the user can issue a 'real' -number and the function will alter it so slurm can understand what the -user really means in slurm terms.

      +

      Description: Used for systems like an IBM +Bluegene system where one SLURM node is mapped to many compute nodes. In +Bluegene's case one SLURM node/midplane represents 512 compute nodes, but +since 512 is typically the smallest allocatable block SLURM treats +it as one node. This is a function so the user can issue a 'real' +number and the function will alter it so SLURM can understand what the +user really means in SLURM terms.

      Arguments:
      type   (input) enum -telling the plug in what the user is really wanting.

      +telling the plugin how to transform the data.
      data   (input/output) -Is a void * so depending on the type sent in argument 1 this should -adjust the variable returning what the user is asking for.

      +Is a void * and the actual data type depends upon the first argument to this +function (type).

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      -

      int select_p_reconfigure (void);

      -

      Description: Used to notify plugin -of change in partition configuration or general configuration change. -The plugin will test global variables for changes as appropriate.

      + + + +

      Block-Specific Functions

      + +

      int select_p_update_sub_node (update_block_msg_t *block_desc_ptr);

      +

      Description: Update the state of a portion of +a SLURM node. Currently used on BlueGene systems to place node cards within a +midplane into or out of an error state.

      +

      Arguments: + block_desc_ptr   (input) pointer +to the modified block containing the sub-block name and its new state.

      Returns: SLURM_SUCCESS if successful, otherwise SLURM_ERROR

      +

      int select_p_update_block (update_block_msg_t *block_desc_ptr);

      +

      Description: This function is called when the admin needs +to manually update the state of a block.

      +

      Arguments: + block_desc_ptr   (input) block +description variable. Containing the block name and the state to set the block.

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      Job-Specific Functions

      +

      select_jobinfo_t *select_p_select_jobinfo_alloc(void);

      +

      Description: Allocate a buffer for select +plugin specific information about a job. Use select_p_select_jobinfo_free() +to free the allocated memory.

      +

      Arguments: + job_ptr    (input) pointer +to the job being initialized. Data in this job record may safely be read or written. +The nodes and node_bitmap fields of this job record identify the +nodes which have already been selected for this job to use.

      +

      Returns: Pointer to a select plugin buffer +for a job or NULL on failure. Use select_p_select_jobinfo_free() to free the +allocated memory.

      + +

      select_jobinfo_t *select_p_select_jobinfo_copy(select_jobinfo_t *jobinfo);

      +

      Description: Copy the buffer containing select +plugin specific information about a job. Use select_p_select_jobinfo_free() +to free the allocated memory.

      +

      Arguments: + jobinfo    (input) pointer +to the select plugin specific information about a job.

      +

      Returns: A copy of jobinfo or NULL on +failure. Use select_p_select_jobinfo_free() to free the allocated memory.

      + +

      int select_p_select_jobinfo_free(select_jobinfo_t *jobinfo);

      +

      Description: Free the buffer containing select +plugin specific information about a job.

      +

      Arguments: + jobinfo    (input) pointer +to the select plugin specific information about a job.

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      int select_p_select_jobinfo_pack(select_jobinfo_t *jobinfo, +Buf buffer, uint16_t protocol_version);

      +

      Description: Pack into a buffer the contents +of the select plugin specific information about a job.

      +

      Arguments:
      + jobinfo    (input) pointer +to the select plugin specific information about a job.
      + buffer    (input/output) pointer +to buffer into which the job information is packed.
      + protocol_version    (input) +Version number of the data packing mechanism (needed for backward compatibility).

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      int select_p_select_jobinfo_unpack(select_jobinfo_t **jobinfo_pptr, +Buf buffer, uint16_t protocol_version);

      +

      Description: Pack from a buffer the contents +of the select plugin specific information about a job. +The returned value must be freed using select_p_select_jobinfo_free().

      +

      Arguments:
      + jobinfo    (output) pointer +to the select plugin specific information about a job. The returned value must +be freed using select_p_select_jobinfo_free().
      + buffer    (input/output) pointer +to buffer from which the job information is unpacked.
      + protocol_version    (input) +Version number of the data packing mechanism (needed for backward compatibility).

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      int select_p_select_jobinfo_get(select_jobinfo_t *jobinfo, +enum select_jobdata_type data_type, void *data);

      +

      Description: Get the contents of a field +from the select plugin specific information about a job.

      +

      Arguments:
      + jobinfo    (input) pointer +to the select plugin specific information about a job to be read.
      + data_type    (input) identification +of the field to be retrieved.
      + data    (output) data read +from the job record.

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      int select_p_select_jobinfo_set(select_jobinfo_t *jobinfo, +enum select_jobdata_type data_type, void *data);

      +

      Description: Set a field in the select +plugin specific information about a job.

      +

      Arguments:
      + jobinfo    (input/output) pointer +to the select plugin specific information about a job to be modified.
      + data_type    (input) identification +of the field to be set.
      + data    (input) data to be written +into the job record.

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + +

      char *select_p_select_jobinfo_sprint(select_jobinfo_t *jobinfo, +char *buf, size_t size, int mode);

      +

      Description: Print the contents of the select +plugin specific information about a job.

      +

      Arguments:
      + jobinfo    (input) pointer +to the select plugin specific information about a job.
      + buf    (input/output) buffer +into which the contents are written.
      + size    (input) size of buf in bytes.
      + mode    (input) print mode, see enum select_print_mode.

      +

      Returns: Pointer to the buf on success or NULL on failure.

      + +

      char *select_p_select_jobinfo_xstrdup(select_jobinfo_t *jobinfo, int mode);

      +

      Description: Print the contents of the select +plugin specific information about a job. The return value must be released using the xfree() function.

      +

      Arguments:
      + jobinfo    (input) pointer +to the select plugin specific information about a job.
      + mode    (input) print mode, see enum select_print_mode.

      +

      Returns: Pointer to a string on success or NULL on failure. +Call xfree() to release the memory allocated for the return value.

      +

      int select_p_job_test (struct job_record *job_ptr, bitstr_t *bitmap, int min_nodes, int max_nodes, int req_nodes, int mode, List preemption_candidates, List *preempted_jobs);

      @@ -250,31 +457,31 @@ to the job being considered for scheduling. Data in this job record may safely be read. Data of particular interest include details->contiguous (set if allocated nodes should be contiguous), num_procs (minimum processors in allocation) and -details->req_node_bitmap (specific required nodes).

      +details->req_node_bitmap (specific required nodes).
      bitmap    (input/output) bits representing nodes which might be allocated to the job are set on input. This function should clear the bits representing nodes not required to satisfy job's scheduling request. Bits left set will represent nodes to be used for this job. Note that the job's required nodes (details->req_node_bitmap) will be a superset -bitmap when the function is called.

      +bitmap when the function is called.
      min_nodes    (input) minimum number of nodes to allocate to this job. Note this reflects both job -and partition specifications.

      +and partition specifications.
      max_nodes    (input) maximum number of nodes to allocate to this job. Note this reflects both job -and partition specifications.

      +and partition specifications.
      req_nodes    (input) the requested (desired) of nodes to allocate to this job. This reflects job's -maximum node specification (if supplied).

      +maximum node specification (if supplied).
      mode    (input) -controls the mode of operation. Valid options are -SELECT_MODE_RUN_NOW: try to schedule job now
      -SELECT_MODE_TEST_ONLY: test if job can ever run
      -SELECT_MODE_WILL_RUN: determine when and where job can run

      +controls the mode of operation. Valid options are:
      +* SELECT_MODE_RUN_NOW: try to schedule job now
      +* SELECT_MODE_TEST_ONLY: test if job can ever run
      +* SELECT_MODE_WILL_RUN: determine when and where job can run
      preemption_candidates    (input) list of pointers to jobs which may be preempted in order to initiate this -pending job. May be NULL if there are no preemption candidates.

      +pending job. May be NULL if there are no preemption candidates.
      preempted_jobs    (input/output) list of jobs which must be preempted in order to initiate the pending job. If the value is NULL, no job list is returned. @@ -283,8 +490,7 @@ Use the list_destroy function to destroy the list when no longer needed.

      Returns: SLURM_SUCCESS if successful. On failure, -the plugin should return SLURM_ERROR and future attempts may be made to schedule -the job.

      +the plugin should return SLURM_ERROR .

      int select_p_job_begin (struct job_record *job_ptr);

      Description: Note the initiation of the specified job @@ -294,8 +500,7 @@ job_ptr    (input) pointer to the job being initialized. Data in this job record may safely be read or written. The nodes and node_bitmap fields of this job record identify the -nodes which have already been selected for this job to use. For an example of -a job record field that the plugin may write into, see select_id.

      +nodes which have already been selected for this job to use.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR, which causes the job to be requeued for later execution.

      @@ -303,7 +508,7 @@

      int select_p_job_ready (struct job_record *job_ptr);

      Description: Test if resources are configured and ready for job execution. This function is only used in the job prolog for -BlueGene systems to determine if the bglblock has been booted and is ready for use.

      +BlueGene systems to determine if the bgblock has been booted and is ready for use.

      Arguments: job_ptr    (input) pointer to the job being initialized. Data in this job record may safely be read. @@ -324,30 +529,139 @@

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR.

      -

      int select_p_job_suspend (struct job_record *job_ptr);

      +

      int select_p_job_signal (struct job_record *job_ptr, +int signal);

      +

      Description: Signal the specified job. +This is needed for architectures where the job steps are launched by a +mechanism outside of SLURM, for example when ALPS is used on Cray systems.

      +

      Arguments:
      + job_ptr    (input) pointer +to the job to be signaled.
      + signal    (input) signal to +be sent to the job.

      +

      Returns: SLURM_SUCCESS if successful. On +failure, the plugin should return a SLURM error code.

      + +

      int select_p_job_suspend (struct job_record *job_ptr, +bool indf_susp);

      Description: Suspend the specified job. Release resources for use by other jobs.

      -

      Arguments: +

      Arguments:
      job_ptr    (input) pointer to the job being suspended. Data in this job record may safely be read or written. The nodes and/or node_bitmap fields of this job record -identify the nodes which were selected for this job to use.

      +identify the nodes which were selected for this job to use.
      + indf_susp    (input) flag +which if set indicates the job is being suspended indefinitely by the user or +administrator. If not set, the job is being suspended temporarily for gang +scheduling.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return a SLURM error code.

      -

      int select_p_job_resume (struct job_record *job_ptr);

      +

      int select_p_job_resume (struct job_record *job_ptr, +bool indf_susp);

      Description: Resume the specified job which was previously suspended.

      -

      Arguments: +

      Arguments:
      job_ptr    (input) pointer to the job being resumed. Data in this job record may safely be read or written. The nodes and/or node_bitmap fields of this job record -identify the nodes which were selected for this job to use.

      +identify the nodes which were selected for this job to use.
      + indf_susp    (input) flag +which if set indicates the job is being resumed after being suspended +indefinitely by the user or administrator. If not set, the job is being +resumed after being temporarily suspended for gang scheduling.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return a SLURM error code.

      +

      int select_p_job_expand_allow (void);

      +

      Description: Report the ability of this +select plugin to expand jobs.

      +

      Returns: True if job expansion is +supported, otherwise false.

      + +

      int select_p_job_expand (struct job_record *from_job_ptr, +struct job_record *to_job_ptr);

      +

      Description: Transfer all resources +currently allocated to one job to another job. One job is left with no +allocate resources and the other job is left with the resources previously +allocated to both jobs.

      +

      Arguments:
      + from_job_ptr    (input) pointer +to the job being to have all of its resources removed.
      + to_job_ptr    (input) pointer +to the job getting all of the resources previously either job.

      +

      Returns: SLURM_SUCCESS if successful. On +failure, the plugin should return a SLURM error code.

      + +

      int select_p_job_resized (struct job_record *job_ptr, +struct node_record *node_ptr);

      +

      Description: Remove the specified node +from the job's allocation.

      +

      Arguments:
      + job_ptr    (input) pointer +to the job being decreased in size.
      + node_ptr    (input) pointer +to the node being removed from a job's allocation.

      +

      Returns: SLURM_SUCCESS if successful. On +failure, the plugin should return a SLURM error code.

      + + + + +

      Step-Specific Functions

      + +

      bitstr_t *select_p_step_pick_nodes(struct job_record *job_ptr, +select_jobinfo_t *step_jobinfo, uint32_t node_count)

      +

      Description: If the select plugin needs to +select nodes for a job step, then do so here.
      +NOTE: Only select/bluegene selects the job step resources. The logic +within the slurmctld daemon directly selects resources for a job step for all +other select plugins.

      +

      Arguments:
      + job_ptr    (input) +Pointer to the job which is attempting to allocate a job step.
      + step_jobinfo    (input/output) +On input, this is a pointer to an empty buffer. On output for a successful +job step allocation, this structure is filled in with detailed information +about the job step allocation.
      + node_count    (input) +Number of nodes required by the new job step.

      +

      Returns: If successful, then return a +bitmap of the nodes allocated to the job step, otherwise return NULL and the +logic within the slurmctld daemon will select the nodes to be allocated to +the job step.

      + +

      int select_p_step_finish(struct step_record *step_ptr)

      +

      Description: Note that a job step has completed execution

      +

      Arguments:
      + step_ptr    (input) +Pointer to the step which has completed execution.

      +

      Returns: SLURM_SUCCESS if successful. On failure, +the plugin should return SLURM_ERROR.

      + + +

      Advanced Reservation Functions

      + +

      bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, +uint32_t node_cnt)

      +

      Description: Identify the nodes which best +satisfy a reservation request taking system topology into consideration if +applicable.

      +

      Arguments:
      + avail_bitmap    (input) +a bitmap of the nodes which are available for use in creating the reservation.
      + node_cnt    (input) +number of nodes required to satisfy the reservation request.

      +

      Returns: A bitmap of the nodes which should +be used for the advanced reservation or NULL if the selected nodes can not +be used for an advanced reservation.

      + + + +

      Get Information Functions

      int select_p_get_info_from_plugin(enum select_data_info info, @@ -356,41 +670,66 @@ about a job.

      Arguments:
      info    (input) identifies -the type of data to be updated.

      +the type of data to be updated.
      job_ptr    (input) pointer to -the job related to the query (if applicable; may be NULL).

      +the job related to the query (if applicable; may be NULL).
      data    (output) the requested data.

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR.

      -

      int select_p_pack_node_info (time_t last_query_time, Buf *buffer_ptr);

      -

      Description: Pack node specific information into a buffer.

      -

      Arguments: - -last_query_time   (input) time that the data was -last saved.
      - buffer_ptr   (input/output) buffer into -which the node data is appended.

      -

      Returns: SLURM_SUCCESS if successful, -SLURM_NO_CHANGE_IN_DATA if data has not changed since last packed, otherwise SLURM_ERROR

      - -

      int select_p_get_select_nodeinfo(struct node_record *node_ptr, -enum select_data_info info, void *data);

      -

      Description: Get plugin-specific information -related to the specified node.

      +

      int select_p_pack_select_info(time_t last_query_time, +uint16_t show_flags, Buf *buffer_ptr, uint16_t protocol_version);

      +

      Description: Pack plugin-specific information +about its general state into a buffer. Currently only used by select/bluegene +to pack block state information.
      +NOTE: Functions to work with this data may be needed on computers +without the plugin which generated the data, so those functions are in +src/common modules. The unpack function is performed by +slurm_unpack_block_info_members() in src/common/slurm_protocol_pack.c +using BlueGene specific data structures. Use destroy_select_ba_request() +in src/common/noe_select.c to free the data structure's memory.

      Arguments:
      - node_ptr    (input) pointer -to the node for which information is requested.

      - info    (input) identifies -the type of data requested.

      - data    (output) the requested data.

      + last_query_time    (input) +Time when the data was previously requested (used so only updated information +needs to be sent).
      + show_flags    (input) identifies +the type of data requested.
      + buffer_ptr    (input/output) +Pointer to buffer filled in with select plugin state information.
      + protocol_version    (input) +Version number of the data packing mechanism (needed for backward compatibility).

      Returns: SLURM_SUCCESS if successful. On failure, the plugin should return SLURM_ERROR.

      +

      int *select_p_ba_get_dims(void);

      +

      Description: Return an array containing +the number of elements in each dimension of the system size. For example, an IBM +Bluegene/P system has a three-dimensional torus topology. If it has eight elements +in the X dimension, and four in the Y and Z dimensions, the returned array will +contain the values 8, 4, 4.

      +

      Returns: An array containing the number of +elements in each dimension of the system size.

      + +

      void select_p_ba_init(node_info_msg_t *node_info_ptr, bool sanity_check);

      +

      Description: Construct an internal block allocation +table containing information about the nodes on a computer. This allocated memory +should be released by calling select_p_ba_fini();

      +

      Arguments:
      + node_info_ptr    (input) +Information about the nodes on a system.
      + sanity_check    (input) if set +then validate that the node name suffix values represent coordinated which are +within the system's dimension size (see function select_p_ba_get_dims).

      + +

      void select_p_ba_fini(void);

      +

      Description: Free storage allocated by +select_p_ba_init().

      + +

      Versioning

      -

      This document describes version 1 of the SLURM node selection API. Future +

      This document describes version 100 of the SLURM node selection API. Future releases of SLURM may revise this API. A node selection plugin conveys its ability to implement a particular API version using the mechanism outlined for SLURM plugins. In addition, the credential is transmitted along with the version number of the @@ -399,6 +738,6 @@

      -

      Last modified 5 October 2009

      +

      Last modified 3 August 2011

      Binary files /tmp/jKTrgHjCbo/slurm-llnl-2.2.7/doc/html/slurm_banner.gif and /tmp/eIE_aeUSMX/slurm-llnl-2.3.2/doc/html/slurm_banner.gif differ diff -Nru slurm-llnl-2.2.7/doc/html/slurm.shtml slurm-llnl-2.3.2/doc/html/slurm.shtml --- slurm-llnl-2.2.7/doc/html/slurm.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -51,37 +51,41 @@ the world including:
      • -Tianhe-1A designed by The National University of Defence Technology (NUDT) -in China with 14,336 Intel CPUs and 7,168 NVDIA Tesla M2050 GPUs. -The world's fastest super computer with a peak performance of 2.507 Petaflops.
      • +Tianhe-1A designed by +The National University of Defence Technology (NUDT) +in China with 14,336 Intel CPUs and 7,168 NVDIA Tesla M2050 GPUs, with a peak performance of 2.507 Petaflops. +
      • -Tera 100 at CEA with 140,000 Intel Xeon 7500 processing cores, 300TB of +Tera 100 at CEA +with 140,000 Intel Xeon 7500 processing cores, 300TB of central memory and a theoretical computing power of 1.25 Petaflops. Europe's most powerful supercomputer.
      • +
      • Dawn, -a BlueGene/P system at LLNL with 147,456 PowerPC 450 cores with a peak +a BlueGene/P system at LLNL +with 147,456 PowerPC 450 cores with a peak performance of 0.5 Petaflops.
      • + +
      • Rosa, +a CRAY XT5 at the Swiss National Supercomputer Centre +named after Monte Rosa in the Swiss-Italian Alps, elevation 4,634m. +3,688 AMD hexa-core Opteron @ 2.4 GHz, 28.8 TB DDR2 RAM, 290 TB Disk, +9.6 GB/s interconnect bandwidth (Seastar).
      • +
      • EKA at Computational Research Laboratories, India with 14,240 Xeon processors and Infiniband interconnect
      • +
      • MareNostrum -a Linux cluster at Barcelona Supercomputer Center +a Linux cluster at the Barcelona Supercomputer Center with 10,240 PowerPC processors and a Myrinet switch
      • +
      • Anton a massively parallel supercomputer designed and built by D. E. Shaw Research for molecular dynamics simulation using 512 custom-designed ASICs and a three-dimensional torus interconnect.
      -

      SLURM is actively being developed, distributed and supported by -Lawrence Livermore National Laboratory, -Hewlett-Packard, -SchedMD. -Bull. -It is also distributed and supported by -Adaptive Computing, -Infiscale and -IBM.

      -

      Last modified 1 December 2010

      +

      Last modified 5 May 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_2010/agenda.htm slurm-llnl-2.3.2/doc/html/slurm_ug_2010/agenda.htm --- slurm-llnl-2.2.7/doc/html/slurm_ug_2010/agenda.htm 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_2010/agenda.htm 2011-12-05 17:20:08.000000000 +0000 @@ -129,7 +129,7 @@
      -
      +
      Lawrence Livermore National Laboratory
      7000 East Avenue • Livermore, CA 94550
      Operated by Lawrence Livermore National Security, LLC, for the diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_2010/contact.htm slurm-llnl-2.3.2/doc/html/slurm_ug_2010/contact.htm --- slurm-llnl-2.2.7/doc/html/slurm_ug_2010/contact.htm 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_2010/contact.htm 2011-12-05 17:20:08.000000000 +0000 @@ -52,7 +52,7 @@
      -
      +
      Lawrence Livermore National Laboratory
      7000 East Avenue • Livermore, CA 94550
      Operated by Lawrence Livermore National Security, LLC, for the diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_2010/directions.htm slurm-llnl-2.3.2/doc/html/slurm_ug_2010/directions.htm --- slurm-llnl-2.2.7/doc/html/slurm_ug_2010/directions.htm 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_2010/directions.htm 2011-12-05 17:20:08.000000000 +0000 @@ -74,7 +74,7 @@
      -
      +
      Lawrence Livermore National Laboratory
      7000 East Avenue • Livermore, CA 94550
      Operated by Lawrence Livermore National Security, LLC, for the diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_2010/index.htm slurm-llnl-2.3.2/doc/html/slurm_ug_2010/index.htm --- slurm-llnl-2.2.7/doc/html/slurm_ug_2010/index.htm 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_2010/index.htm 2011-12-05 17:20:08.000000000 +0000 @@ -38,7 +38,7 @@

      This international event is opened to everyone who wants to :

        -
      • Learn more about SLURM, +
      • Learn more about SLURM, a highly scalable Resource Manager
      • Share their knowledge and experience with other users and administrators
      • Get detailed informations about the latest features and developments
      • @@ -63,7 +63,7 @@
      -
      +
      Lawrence Livermore National Laboratory
      7000 East Avenue • Livermore, CA 94550
      Operated by Lawrence Livermore National Security, LLC, for the diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_2010/registration.htm slurm-llnl-2.3.2/doc/html/slurm_ug_2010/registration.htm --- slurm-llnl-2.2.7/doc/html/slurm_ug_2010/registration.htm 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_2010/registration.htm 2011-12-05 17:20:08.000000000 +0000 @@ -91,7 +91,7 @@
      -
      +
      Lawrence Livermore National Laboratory
      7000 East Avenue • Livermore, CA 94550
      Operated by Lawrence Livermore National Security, LLC, for the diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_2010/submission.htm slurm-llnl-2.3.2/doc/html/slurm_ug_2010/submission.htm --- slurm-llnl-2.2.7/doc/html/slurm_ug_2010/submission.htm 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_2010/submission.htm 2011-12-05 17:20:08.000000000 +0000 @@ -112,7 +112,7 @@
      -
      +
      Lawrence Livermore National Laboratory
      7000 East Avenue • Livermore, CA 94550
      Operated by Lawrence Livermore National Security, LLC, for the diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_agenda.shtml slurm-llnl-2.3.2/doc/html/slurm_ug_agenda.shtml --- slurm-llnl-2.2.7/doc/html/slurm_ug_agenda.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_agenda.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,462 @@ + + +

      + +

      Slurm User Group Meeting 2011

      + +

      Hosted by Bull + +

      Agenda

      + +

      + The 2011 SLURM User Group Meeting will be held on September 22 and 23 + in Phoenix, Arizona and will be hosted by Bull. + On September 22 there will be two parallel tracks of tutorials meeting in separate rooms. + One set of tutorials will be for users and the other will be for system adminitrators. + There will be a series of technical presentations on September 23. + The Schedule amd Abstracts + are shown below. +

      + +

      Hotel Information

      +

      The meeting will be held at + Embassy Suites Phoenix - North + 2577 West Greenway Road, Phoenix, Arizona, USA (Phone: 1-602-375-1777 Fax: 1-602-375-4012). + You may book your reservations on line at + Embassy Suites Phoenix - North

      + +

      Please reference Bull when making your reservations to recieve a $79/room rate.

      + +

      Directions and Transportation

      +

      From Phoenix Sky Harbor Airport, take I-10 west to I-17 North. + Follow I-17 to the Greenway Road, exit 211 approximately 15 miles. + Exit and turn right, 1/8th of a mile on the right is the hotel entrance.

      +

      + View all directions, map, and airport information

      + +

      Contact

      +

      If you need further informations about the event, or the + registration protocols, contact the + + Slurm User Group 2011 organizers.
      + + +

      Registration

      +

      Please register online no later + than August 22.

      + +

      Schedule

      + +

      September 22: User Tutorials.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TimeThemeSpeakerTitle
      08:30 - 09:00 Registration
      09:00 - 10:30 User Tutorial #1 Don Albert and Rod Schultz (Bull) SLURM: Beginners Usage
      10:30 - 11:00 Coffee break
      11:00 - 12:30 User Tutorial #2 Bill Brophy, Rod Schultz, Yiannis Georgiou (Bull) SLURM: Advanced Usage Usage
      12:30 - 14:00 Lunch at conference center
      14:00 - 15:30 User Tutorial #3 Martin Perry and Yiannis Georgiou (Bull) Resource Management for multicore/multi-threaded usage
      15:30 - 16:00 Coffee break
      16:00 - 17:00 Question and Answer Danny Auble and Morris Jette (SchedMD) Get your questions answered by the developers
      + +

      September 22: System Adminitrator Tutorials.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TimeThemeSpeakerTitle
      08:30 - 09:00 Registration
      09:00 - 10:30 Admin Tutorial #1 David Egolf and Bill Brophy (Bull) SLURM High Availability
      10:30 - 11:00 Coffee break
      11:00 - 12:30 Admin Tutorial #2 Dan Rusak (Bull) Power Management / sview
      12:30 - 14:00 Lunch at conference center
      14:00 - 15:30 Admin Tutorial #3 Don Albert and Rod Schultz (Bull) Accounting, limits and Priorities configurations
      15:30 - 16:00 Coffee break
      16:00 - 17:30 Admin Tutorial #4 Matthieu Hautreux (CEA), Yiannis Georgiou and Martin Perry (Bull) Scalability, Scheduling and Task placement
      + +

      September 23: Technical Session

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TimeThemeSpeakerTitle
      08:30 - 09:00 Registration
      09:00 - 10:40 Welcome
       Keynote William Kramer (NCSA) Challenges and Opportunities for Exscale Resource Management and how Today's Petascale Systems are Guiding the Way
       Session #1 Matthieu Hautreux (CEA) SLURM at CEA
       Session #2 Don Lipari (LLNL) LLNL site report
      10:40 - 11:00 Coffee break
      11:00 - 12:30 Session #3 Alejandro Lucero Palau (BSC) SLURM Simulator
       Session #4 Danny Auble (SchedMD) SLURM operation on IBM BlueGene/Q
       Session #5 Morris Jette (SchedMD) SLURM operation on Cray XT and XE
      12:30 - 14:00 Lunch at conference center
      14:00 - 15:30 Session #6 Mariusz Mamoński (Poznań University) Introduction to SLURM DRMAA
       Session #7 Robert Stober, Sr. (Bright Computing) Bright Cluster Manager & SLURM: Benefits of Seamless Integration
       Session #8 Morris Jette (SchedMD) Proposed Design for Job Step Management in User Space
      15:30 - 16:00 Coffee break
      16:00 - 17:30 Session #9 Don Lipari (LLNL) Proposed Design for Enhanced Enterprise-wide Scheduling
       Session #10 Danny Auble and Morris Jette (SchedMD) SLURM Version 2.3 and plans for future releases
       Open discussion, feature requests, etc.
      + +

      +

      Abstracts

      + +

      User Tutorial #1

      + SLURM Beginners Usage
      + Don Albert and Rod Schultz (Bull) +
        +
      • Simple use of commands (submission/monitoring/result collection)
      • +
      • Reservations
      • +
      • Use of accounting and reporting
      • +
      • Scheduling techniques for smaller response time (setting of walltime for backfill , etc)
      • +
      + +

      User Tutorial #2

      + SLURM Advanced Usage
      + Bill Brophy, Rod Schultz, Yiannis Georgiou (Bull) +
        +
      • MPI jobs
      • +
      • Checkpoint/Restart (BLCR or application level)
      • +
      • Preemption / Gang Scheduling Usage
      • +
      • Dynamic allocations (growing/shrinking)
      • +
      • Grace Time Delay with Preemption
      • +
      + +

      User Tutorial #3

      + Resource Management for multicore/multi-threaded usage
      + Martin Perry and Yiannis Georgiou (Bull) +
        +
      • CPU allocation
      • +
      • CPU/tasks distribution
      • +
      • Task binding
      • +
      • Internals of the allocation procedures
      • +
      + + +

      Administrator Tutorial #1

      + SLURM High Availability
      + David Egolf and Bill Brophy (Bull) +
        +
      • How to set up the High Availability SLURM
      • +
      • Event logging with striggers
      • +
      + +

      Administrator Tutorial #2

      + Power Management / Sview
      + Dan Rusak (Bull) +
        +
      • Power Management configuration
      • +
      • sview presentation
      • +
      + +

      Administrator Tutorial #3

      + Accounting, limits and Priorities configurations
      + Don Albert and Rod Schultz (Bull) +
        +
      • Accounting with slurmdbd configuration
      • +
      • Multifactor job priorities with examples considering all different factors
      • +
      • QOS configuration
      • +
      • Fairsharing setting
      • +
      + +

      Administrator Tutorial #4

      + Scalability, Scheduling and Task placement
      + Matthieu Hautreux (CEA), Yiannis Georgiou and Martin Perry (Bull) +
        +
      • High Throughput Computing
      • +
      • Topology constraints config
      • +
      • Generic Resources and GPUs config
      • +
      • Task Placement with Cgroups
      • +
      + +

      Keynote Speaker

      + Challenges and Opportunities for Exscale Resource Management and how + Today's Petascale Systems are Guiding the Way
      + William Kramer (NCSA)

      + Resource management challenges currently experienced on the Blue Waters + computer will be described. These experiences will be extended to describe + the additional challenges faced in exascale and trans-petascale systems. + +

      Session #1

      + CEA Site report
      + Matthieu Hautreux (CEA)

      + Evolutions and feedback from Tera100. SLURM on Curie, the PRACE second Tier-0 + system that is planned to be installed by the end of the year in a new facility + hosted at CEA. Curie will be a 1.6 Petaflop system from Bull. + +

      Session #2

      + LLNL site report
      + Don Lipari (LLNL)

      + Don Lipari will provide an overview of the batch scheduling systems in use + at LLNL and an overview on how they are managed. + +

      Session #3

      + SLURM Simulator
      + Alejandro Lucero Palau (BSC)

      + Batch scheduling for high performance cluster installations has two main goals: + 1) to keep the whole machine working at full capacity at all times, and + 2) to respect priorities avoiding lower priority jobs jeopardizing higher + priority ones. Usually, batch schedulers allow different policies with + several variables to be tuned by policy. Other features like special job + requests, reservations or job preemption increase the complexity for achiev- + ing a fine-tuned algorithm. A local decision for a specific job can change + the full scheduling for a high number of jobs and what can be thought + as logical within a short term could make no sense for a long trace mea- + sured in weeks or months. Although it is possible to extract algorithms + from batch scheduling software to make simulations of large job traces, + this is not the ideal approach since scheduling is not an isolated part of + this type of tools and replicating same environment requires an important + effort plus a high maintenance cost. We present a method for obtaining a + special mode of operation for a real production-ready scheduling software, + SLURM, where we can simulate execution of real job traces to evaluate + impact of scheduling policies and policy tuning. + +

      Session #4

      + SLURM Operation on IBM BlueGene/Q
      + Danny Auble (SchedMD)

      + SLURM version 2.3 supports IBM BlueGene/Q. This presentation will report the + design and operation of SLURM with respect to BlueGene/Q systems. + +

      Session #5

      + SLURM Operation on Cray XT and XE systems
      + Morris Jette (SchedMD)

      + SLURM version 2.3 supports Cray XT and XE systems running over Cray's ALPS + (Application Level Placement Scheduler) resource manager. This presentation + will discuss the design and operation of SLURM with respect to Cray systems. + +

      Session #6

      + Introduction to SLURM DRMAA
      + Mariusz Mamoński (Poznań University)

      + DRMAA or Distributed Resource Management Application API is a high-level + Open Grid Forum API specification for the submission and control of jobs + in a Grid architecture. + +

      Session #7

      + Bright Cluster Manager & SLURM: Benefits of Seamless Integration
      + Robert Stober, Sr. (Bright Computing)

      + Bright Cluster Manager, tightly integrated with SLURM, simplifies HPC + cluster installation and management while boosting system throughput. Bright + automatically installs, configures and deploys SLURM so that clusters are + ready to use in minutes rather than days. Bright provides extensive and + extensible monitoring and management through its intuitive Bright Cluster + Manager GUI, powerful cluster management shell, and customizable web-based + user portal. + Additional integration benefits include sampling, analysis and visualization + of all key SLURM metrics from within the Bright GUI, automatic head node + failover, and extensive pre-job health checking capability. Regarding the + latter, say good-bye to the black hole node syndrome: Bright plus SLURM + effectively prevent this productivity-killing problem by identifying and + sidelining problematic nodes before the job is run. + +

      Session #8

      + Proposed Design for Job Step Management in User Space
      + Morris Jette (SchedMD)

      + SLURM currently creates and manages job steps using SLURM's control daemon, + slurmctld. Since some user jobs create thousands of job steps, the management + of those job steps accounts for most of slurmctld's work. It is possible to + move job step management from slurmctld into user space to improve SLURM + scalability and performance. A possible implementation of this will be + presented. + +

      Session #9

      + Proposed Design for Enhanced Enterprise-wide Scheduling
      + Don Lipari (LLNL)

      + SLURM currently supports the ability to submit and status jobs between + computers at site, however the current design has some limitations. When a job + is submitted with several possible computers usable for its execution, the + job is routed to the computer on which it is expected to start earliest. + Changes in the workload or system failures could make moving the job to another + computer result in faster initiation, but that is currently impossible. SLURM + is also unable to support dependencies between jobs executing on different + computers. The design of a SLURM meta-scheduler with enhanced enterprise-wide + scheduling capabilities will be presented. + +

      Session #10

      + Contents of SLURM Version 2.3 and plans for future releases
      + Danny Auble and Morris Jette (SchedMD)

      + An overview of the changes SLURM Version 2.3 will be presented along with + current plans for future releases. + +

      Open Discussion

      + All meeting attendees will be invited to provide input with respect to + SLURM's design and development work. + We also invite proposals for hosting the SLURM User Group Meeting in 2012. + + + diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_cfp.shtml slurm-llnl-2.3.2/doc/html/slurm_ug_cfp.shtml --- slurm-llnl-2.2.7/doc/html/slurm_ug_cfp.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_cfp.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,41 @@ + + +

      CALL FOR SUBMISSIONS

      +

      SLURM User Group Meeting 2011
      +September 22-23, 2011
      +Phoenix, Arizona, USA

      + +

      You are invited to submit an abstract of a presentation or tutorial +to be given at the SLURM User Group Meeting 2011. This event will be +sponsored and organized by Bull and +will be held in Phoenix, Arizona, USA on September 22 and 23, 2011.

      + +

      This international event is opened to everyone who wants to: +

        +
      • Learn more about +SLURM, a highly scalable Resource Manager and Job Scheduler
      • +
      • Share their knowledge and experience with other users and administrators
      • +
      • Get detailed informations about the latest features and developments
      • +
      • Share requirements and discuss future developments
      • +

      + +

      Everyone who wants to present their own usage, developments, site report, +or tutorial about SLURM is invited to send a short abstract including +the presentation's expected duration to +slurm_user_group@lists.llnl.gov.

      + +

      IMPORTANT DATES:
      +April 30, 2011: Submission of abstracts
      +May 31, 2011: Notification of acceptance
      +September 22, 2011: SLURM User Group Meeting 2011 (tutorials)
      +September 23, 2011: SLURM User Group Meeting 2011
      +

      + +

      Program Committee:
      +Danny Auble (Lawrence Livermore National Laboratory)
      +Yiannis Georgiou (Bull)
      +Matthieu Hautreux (CEA, French Atomic and Alternative Energies Commission)
      +Morris Jette (Lawrence Livermore National Laboratory)
      +Nancy Kritkausky (Bull)

      + + diff -Nru slurm-llnl-2.2.7/doc/html/slurm_ug_registration.shtml slurm-llnl-2.3.2/doc/html/slurm_ug_registration.shtml --- slurm-llnl-2.2.7/doc/html/slurm_ug_registration.shtml 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/slurm_ug_registration.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,111 @@ + + +

      + +

      Slurm User Group Meeting 2011

      + +

      Hosted by Bull + +

      Registration

      +

      The conference cost is $250 per person that can be paid on the morning + of the conference. This includes presentations, tutorials and lunch on + both days.

      + +

      Hotel Information

      +

      The meeting will be held at + Embassy Suites Phoenix - North + 2577 West Greenway Road, Phoenix, Arizona, USA (Phone: 1-602-375-1777 Fax: 1-602-375-4012). + You may book your reservations on line at + Embassy Suites Phoenix - North

      + +

      Please reference Bull when making your reservations to recieve a $79/room rate.

      + +

      Directions and Transportation

      +

      From Phoenix Sky Harbor Airport, take I-10 west to I-17 North. + Follow I-17 to the Greenway Road, exit 211 approximately 15 miles. + Exit and turn right, 1/8th of a mile on the right is the hotel entrance.

      +

      + View all directions, map, and airport information

      + +

      Contact

      +

      If you need further informations about the event, or the + registration protocols, contact the + + Slurm User Group 2011 organizers.
      + +

      Agenda

      +

      A preliminary agenda is available online. + +

      Attendee Information

      +

      Please fill in the following form to register for the Slurm User Group 2011. + You should receive a confirmation of this initial stage within in a few days and + final confirmation by August 26, 2011.

      + +
      +
      +	  
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	    
      +	      
      +	      
      +	    
      +	  
      First Name
      Last Name
      Title
      Email
      Company/Organization
      Street
      City
      State/Province
      Postal Code
      Country
      Tutorial AttendanceAdministrator
      User
      None
      Comments
      +
      +
      + + diff -Nru slurm-llnl-2.2.7/doc/html/sun_const.shtml slurm-llnl-2.3.2/doc/html/sun_const.shtml --- slurm-llnl-2.2.7/doc/html/sun_const.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/sun_const.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -113,7 +113,7 @@ # Configuration parameters removed here # Automatic orders nodes following a Hilbert curve -NodeName=DEFAULT Procs=8 RealMemory=2048 State=Unknown +NodeName=DEFAULT CPUs=8 RealMemory=2048 State=Unknown NodeName=tux[0000x3337] PartitionName=debug Nodes=tux[0000x3337] Default=Yes State=UP @@ -125,7 +125,7 @@ # Configuration parameters removed here # Manual ordering of nodes following a space-filling curve -NodeName=DEFAULT Procs=8 RealMemory=2048 State=Unknown +NodeName=DEFAULT CPUs=8 RealMemory=2048 State=Unknown NodeName=tux[0000-0007] # 8 nodes at 0,0,0 NodeName=tux[0010-001B] # 12 nodes at 0,0,1 NodeName=tux[0100-0107] # 8 nodes at 0,1,0 diff -Nru slurm-llnl-2.2.7/doc/html/taskplugins.shtml slurm-llnl-2.3.2/doc/html/taskplugins.shtml --- slurm-llnl-2.2.7/doc/html/taskplugins.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/taskplugins.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -21,6 +21,7 @@ infrastructure as determined by the "configure" program when SLURM is built and the value of the TaskPluginParam as defined in the slurm.conf (SLURM configuration file). +
    60. cgroup—Use Linux cgroups for binding tasks to resources.
    61. none—A plugin that implements the API without providing any services. This is the default behavior and provides no task binding.
    62. @@ -175,11 +176,24 @@ On failure, the plugin should return SLURM_ERROR and set the errno to an appropriate value to indicate the reason for failure.

      +

      int task_post_step (slurmd_job_t *job);

      +

      Description: task_post_step() is called +after termination of all the tasks of the job step. +Executed by the slurmstepd program as user root.

      +

      Arguments: +job   (input) +pointer to the job which has terminated. +See src/slurmd/slurmstepd/slurmstepd_job.h for the +data structure definition.

      +

      Returns: SLURM_SUCCESS if successful. +On failure, the plugin should return SLURM_ERROR and set the errno to an +appropriate value to indicate the reason for failure.

      +

      Versioning

      -

      This document describes version 1 of the SLURM Task Plugin API. +

      This document describes version 2 of the SLURM Task Plugin API. Future releases of SLURM may revise this API.

      -

      Last modified 19 February 2009

      +

      Last modified 29 April 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/team.shtml slurm-llnl-2.3.2/doc/html/team.shtml --- slurm-llnl-2.2.7/doc/html/team.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/team.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -1,27 +1,22 @@

      SLURM Team

      -

      SLURM development has been a joint effort of -Lawrence Livermore National Laboratory (LLNL), -SchedMD, -HP, -Bull, -Linux NetworX and many other contributors. - -

      The current SLURM development staff includes:

      +

      SLURM development has been a joint effort of many companies and +organizations. The current SLURM development staff includes:

        -
      • Morris Jette (LLNL, Project leader)
      • -
      • Danny Auble (LLNL)
      • -
      • Don Lipari (LLNL)
      • +
      • Danny Auble (SchedMD)
      • +
      • Morris Jette (SchedMD)

      SLURM contributers include:

        +
      • Ramiro Alba (Centre Tecnològic de Tranferència de Calor, Spain)
      • Amjad Majid Ali (Colorado State University)
      • Pär Andersson (National Supercomputer Centre, Sweden)
      • Don Albert (Bull)
      • Ernest Artiaga (Barcelona Supercomputer Center, Spain)
      • Susanne Balle (HP)
      • +
      • Ralph Bean (Rochester Institute of Technology)
      • Anton Blanchard (Samba)
      • Janne Blomqvist (Aalto University, Finland)
      • David Bremer (LLNL)
      • @@ -31,6 +26,8 @@
      • Daniel Christians (HP)
      • Gilles Civario (Bull)
      • Chuck Clouston (Bull)
      • +
      • Yuri D'Elia (Center for Biomedicine, EURAC Research, Italy)
      • +
      • Carles Fenoy (Barcelona Supercomputer Center, Spain)
      • Joseph Donaghy (LLNL)
      • Chris Dunlap (LLNL)
      • Joey Ekstrom (LLNL/Bringham Young University)
      • @@ -40,6 +37,7 @@
      • Didier Gazen (Laboratoire d'Aerologie, France)
      • Raphael Geissert (Debian)
      • Yiannis Georgiou (Bull)
      • +
      • Andriy Grytsenko (Massive Solutions Limited, Ukraine)
      • Mark Grondona (LLNL)
      • Takao Hatazaki (HP, Japan)
      • Matthieu Hautreux (CEA, France)
      • @@ -50,12 +48,13 @@
      • Klaus Joas (University Karlsruhe, Germany)
      • Greg Johnson (LANL)
      • Jason King (LLNL)
      • -
      • Aaron Knister (Environmental Protection Agency)
      • +
      • Aaron Knister (Environmental Protection Agency, UMBC)
      • Nancy Kritkausky (Bull)
      • Roman Kurakin (Institute of Natural Science and Ecology, Russia)
      • -
      • Eric Lin (Bull)
      • Puenlap Lee (Bull)
      • +
      • Dennis Leepow
      • Bernard Li (Genome Sciences Centre, Canada)
      • +
      • Eric Lin (Bull)
      • Donald Lipari (LLNL)
      • Steven McDougall (SiCortex)
      • Donna Mecozzi (LLNL)
      • @@ -66,33 +65,37 @@
      • Bryan O'Sullivan (Pathscale)
      • Gennaro Oliva (Institute of High Performance Computing and Networking, Italy)
      • +
      • Alejandro Lucero Palau (Barcelona Supercomputer Center, Spain)
      • Daniel Palermo (HP)
      • Dan Phung (LLNL/Columbia University)
      • Ashley Pittman (Quadrics, UK)
      • Vijay Ramasubramanian (University of Maryland)
      • Krishnakumar Ravi[KK] (HP)
      • Petter Reinholdtsen (University of Oslo, Norway)
      • -
      • Gerrit Renker (Swiss National Computer Centre)
      • +
      • Gerrit Renker (Swiss National Supercomputing Centre)
      • Andy Riebs (HP)
      • Asier Roa (Barcelona Supercomputer Center, Spain)
      • +
      • Andy Roosen (University of Deleware)
      • Miguel Ros (Barcelona Supercomputer Center, Spain)
      • Beat Rubischon (DALCO AG, Switzerland)
      • Dan Rusak (Bull)
      • Eygene Ryabinkin (Kurchatov Institute, Russia)
      • Federico Sacerdoti (D.E. Shaw)
      • Rod Schultz (Bull)
      • -
      • Tyler Strickland
      • +
      • Tyler Strickland (University of Florida)
      • Jeff Squyres (LAM MPI)
      • Prashanth Tamraparni (HP, India)
      • Jimmy Tang (Trinity College, Ireland)
      • Kevin Tew (LLNL/Bringham Young University)
      • Adam Todorski (Rensselaer Polytechnic Institute)
      • +
      • Stephen Trofinoff (Swiss National Supercomputing Centre)
      • Nathan Weeks (Iowa State University)
      • Tim Wickberg (Rensselaer Polytechnic Institute)
      • +
      • Ramiro Brito Willmersdorf (Universidade Federal de Pemambuco, Brazil)
      • Jay Windley (Linux NetworX)
      • Anne-Marie Wunderlin (Bull)
      -

      Last modified 15 October 2010

      +

      Last modified 24 October 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/testimonials.shtml slurm-llnl-2.3.2/doc/html/testimonials.shtml --- slurm-llnl-2.2.7/doc/html/testimonials.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/testimonials.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -3,24 +3,6 @@

      Customer Testimonials

      -"Today our largest IBM computers, BlueGene/L and Purple, ranked #1 and #3 -respectively on the November 2005 Top500 list, use SLURM. -This decision reduces large job launch times from tens of minutes to seconds. -This effectively provides -us with millions of dollars with of additional compute resources without -additional cost. It also allows our computational scientists to use their -time more effectively. SLURM is scalable to very large numbers of processors, -another essential ingredient for use at LLNL. This means larger computer -systems can be used than otherwise possible with a commensurate increase in -the scale of problems that can be solved. SLURM's scalability has eliminated -resource management from being a concern for computers of any foreseeable -size. It is one of the best things to happen to massively parallel computing." -

      -Dona Crawford, Associate Directory Lawrence Livermore National Laboratory -
      -
      - - "Thank you for SLURM! It is one of the nicest pieces of free software for managing HPC clusters we have come across in a long time. Both of our Blue Genes are running SLURM and it works fantastically @@ -41,6 +23,24 @@
      +"Today our largest IBM computers, BlueGene/L and Purple, ranked #1 and #3 +respectively on the November 2005 Top500 list, use SLURM. +This decision reduces large job launch times from tens of minutes to seconds. +This effectively provides +us with millions of dollars with of additional compute resources without +additional cost. It also allows our computational scientists to use their +time more effectively. SLURM is scalable to very large numbers of processors, +another essential ingredient for use at LLNL. This means larger computer +systems can be used than otherwise possible with a commensurate increase in +the scale of problems that can be solved. SLURM's scalability has eliminated +resource management from being a concern for computers of any foreseeable +size. It is one of the best things to happen to massively parallel computing." +

      +Dona Crawford, Associate Directory Lawrence Livermore National Laboratory +
      +
      + + "We are extremely pleased with SLURM and strongly recommend it to others because it is mature, the developers are highly responsive and it just works."

      @@ -133,6 +133,6 @@

      -

      Last modified 8 September 2009

      +

      Last modified 8 April 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/topology_plugin.shtml slurm-llnl-2.3.2/doc/html/topology_plugin.shtml --- slurm-llnl-2.2.7/doc/html/topology_plugin.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/topology_plugin.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -7,7 +7,7 @@ defines them. It is intended as a resource to programmers wishing to write their own SLURM topology plugin. -This is version 100 of the API.

      +This is version 101 of the API.

      SLURM topology plugins are SLURM plugins that implement convey system topology information so that SLURM is able to @@ -64,6 +64,12 @@

      Returns: SLURM_SUCCESS or SLURM_ERROR on failure.

      +

      bool topo_generate_node_ranking(void)

      +

      Description: Determine if this plugin will +reorder the node records based upon each job's node rank field.

      +

      Returns: true if node reording is supported, +false otherwise.

      +

      int topo_get_node_addr(char* node_name, char** paddr, char** ppatt);

      Description: Get Topology address of a given node.

      Arguments:
      @@ -80,10 +86,10 @@ SLURM_ERROR on failure.

      Versioning

      -

      This document describes version 100 of the SLURM topology API. +

      This document describes version 101 of the SLURM topology API. Future releases of SLURM may revise this API.

      -

      Last modified 27 August 2009

      +

      Last modified 13 January 2011

      diff -Nru slurm-llnl-2.2.7/doc/html/topology.shtml slurm-llnl-2.3.2/doc/html/topology.shtml --- slurm-llnl-2.2.7/doc/html/topology.shtml 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/html/topology.shtml 2011-12-05 17:20:08.000000000 +0000 @@ -1,6 +1,6 @@ -

      Topology

      +

      Topology Guide

      SLURM version 2.0 can be configured to support topology-aware resource allocation to optimize job performance. @@ -14,7 +14,7 @@ For larger jobs, this minimizes the number of sets of consecutive nodes allocated to the job.

      -

      Three-dimension Topology

      +

      Three-dimension Topology

      Some larger computers rely upon a three-dimensional torus interconnect. The IBM BlueGene computers is one example of this which has highly @@ -48,6 +48,14 @@ Use of this logic requires a configuration setting of TopologyPlugin=topology/tree.

      +

      Note that slurm uses a best-fit algorithm on the currently +available resources. This may result in an allocation with +more that the optimum number of switches. The user can request +a maximum number of switches for the job as well as a +maximum time willing to wait for that number using the --switch +option with the salloc, sbatch and srun commands. The parameters can +also be changed for pending jobs using the scontrol and squeue commands.

      +

      At some point in the future SLURM code may be provided to gather network topology information directly. Now the network topology information must be included @@ -124,6 +132,6 @@ SwitchName=s4 Switches=s[0-3] -

      Last modified 20 August 2009

      +

      Last modified 8 July 2011

      diff -Nru slurm-llnl-2.2.7/doc/Makefile.in slurm-llnl-2.3.2/doc/Makefile.in --- slurm-llnl-2.2.7/doc/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -131,7 +133,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -168,6 +173,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -225,6 +231,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -260,6 +267,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff -Nru slurm-llnl-2.2.7/doc/man/Makefile.am slurm-llnl-2.3.2/doc/man/Makefile.am --- slurm-llnl-2.2.7/doc/man/Makefile.am 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -53,6 +53,7 @@ man3/slurm_delete_partition.3 \ man3/slurm_delete_reservation.3 \ man3/slurm_free_ctl_conf.3 \ + man3/slurm_free_front_end_info_msg.3 \ man3/slurm_free_job_info_msg.3 \ man3/slurm_free_job_alloc_info_response_msg.3 \ man3/slurm_free_job_step_create_response_msg.3 \ @@ -72,6 +73,7 @@ man3/slurm_get_rem_time.3 \ man3/slurm_get_select_jobinfo.3 \ man3/slurm_get_triggers.3 \ + man3/slurm_init_update_front_end_msg.3 \ man3/slurm_init_job_desc_msg.3 \ man3/slurm_init_part_desc_msg.3 \ man3/slurm_init_resv_desc_msg.3 \ @@ -88,6 +90,7 @@ man3/slurm_kill_job.3 \ man3/slurm_kill_job_step.3 \ man3/slurm_load_ctl_conf.3 \ + man3/slurm_load_front_end.3 \ man3/slurm_load_job.3 \ man3/slurm_load_jobs.3 \ man3/slurm_load_node.3 \ @@ -99,6 +102,8 @@ man3/slurm_pid2jobid.3 \ man3/slurm_ping.3 \ man3/slurm_print_ctl_conf.3 \ + man3/slurm_print_front_end_info_msg.3 \ + man3/slurm_print_front_end_table.3 \ man3/slurm_print_job_info.3 \ man3/slurm_print_job_info_msg.3 \ man3/slurm_print_job_step_info.3 \ @@ -120,6 +125,7 @@ man3/slurm_signal_job.3 \ man3/slurm_signal_job_step.3 \ man3/slurm_slurmd_status.3 \ + man3/slurm_sprint_front_end_table.3 \ man3/slurm_sprint_job_info.3 \ man3/slurm_sprint_job_step_info.3 \ man3/slurm_sprint_node_table.3 \ @@ -142,6 +148,7 @@ man3/slurm_takeover.3 \ man3/slurm_terminate_job.3 \ man3/slurm_terminate_job_step.3 \ + man3/slurm_update_front_end.3 \ man3/slurm_update_job.3 \ man3/slurm_update_node.3 \ man3/slurm_update_partition.3 \ @@ -150,6 +157,7 @@ man5_MANS = man5/bluegene.conf.5 \ man5/cgroup.conf.5 \ + man5/cray.conf.5 \ man5/gres.conf.5 \ man5/slurm.conf.5 \ man5/slurmdbd.conf.5 \ diff -Nru slurm-llnl-2.2.7/doc/man/Makefile.in slurm-llnl-2.3.2/doc/man/Makefile.in --- slurm-llnl-2.2.7/doc/man/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -60,6 +60,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -70,6 +71,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -120,7 +122,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -157,6 +162,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -214,6 +220,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -249,6 +256,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -354,6 +362,7 @@ man3/slurm_delete_partition.3 \ man3/slurm_delete_reservation.3 \ man3/slurm_free_ctl_conf.3 \ + man3/slurm_free_front_end_info_msg.3 \ man3/slurm_free_job_info_msg.3 \ man3/slurm_free_job_alloc_info_response_msg.3 \ man3/slurm_free_job_step_create_response_msg.3 \ @@ -373,6 +382,7 @@ man3/slurm_get_rem_time.3 \ man3/slurm_get_select_jobinfo.3 \ man3/slurm_get_triggers.3 \ + man3/slurm_init_update_front_end_msg.3 \ man3/slurm_init_job_desc_msg.3 \ man3/slurm_init_part_desc_msg.3 \ man3/slurm_init_resv_desc_msg.3 \ @@ -389,6 +399,7 @@ man3/slurm_kill_job.3 \ man3/slurm_kill_job_step.3 \ man3/slurm_load_ctl_conf.3 \ + man3/slurm_load_front_end.3 \ man3/slurm_load_job.3 \ man3/slurm_load_jobs.3 \ man3/slurm_load_node.3 \ @@ -400,6 +411,8 @@ man3/slurm_pid2jobid.3 \ man3/slurm_ping.3 \ man3/slurm_print_ctl_conf.3 \ + man3/slurm_print_front_end_info_msg.3 \ + man3/slurm_print_front_end_table.3 \ man3/slurm_print_job_info.3 \ man3/slurm_print_job_info_msg.3 \ man3/slurm_print_job_step_info.3 \ @@ -421,6 +434,7 @@ man3/slurm_signal_job.3 \ man3/slurm_signal_job_step.3 \ man3/slurm_slurmd_status.3 \ + man3/slurm_sprint_front_end_table.3 \ man3/slurm_sprint_job_info.3 \ man3/slurm_sprint_job_step_info.3 \ man3/slurm_sprint_node_table.3 \ @@ -443,6 +457,7 @@ man3/slurm_takeover.3 \ man3/slurm_terminate_job.3 \ man3/slurm_terminate_job_step.3 \ + man3/slurm_update_front_end.3 \ man3/slurm_update_job.3 \ man3/slurm_update_node.3 \ man3/slurm_update_partition.3 \ @@ -451,6 +466,7 @@ man5_MANS = man5/bluegene.conf.5 \ man5/cgroup.conf.5 \ + man5/cray.conf.5 \ man5/gres.conf.5 \ man5/slurm.conf.5 \ man5/slurmdbd.conf.5 \ diff -Nru slurm-llnl-2.2.7/doc/man/man1/sacct.1 slurm-llnl-2.3.2/doc/man/man1/sacct.1 --- slurm-llnl-2.2.7/doc/man/man1/sacct.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/sacct.1 2011-12-05 17:20:08.000000000 +0000 @@ -44,7 +44,7 @@ the \f2wait3()\fP and \f2getrusage()\fP system calls. Some systems gather and report incomplete information for these calls; \f3sacct\fP reports values of 0 for this missing data. See your systems -\f2getrusage(3)\fP man page for information about which data are +\f2getrusage (3)\fP man page for information about which data are actually available on your system. .IP If \-\-dump is specified, the field selection options (\-\-brief, @@ -126,21 +126,21 @@ .ft 3 Fields available: -AllocCPUS Account AssocID AveCPU -AvePages AveRSS AveVMSize BlockID -Cluster CPUTime CPUTimeRAW DerivedExitCode -DerivedExitStr Elapsed Eligible End -ExitCode GID Group JobID -JobName Layout MaxPages MaxPagesNode -MaxPagesTask MaxRSS MaxRSSNode MaxRSSTask -MaxVMSize MaxVMSizeNode MaxVMSizeTask MinCPU -MinCPUNode MinCPUTask NCPUS NNodes -NodeList NTasks Priority Partition -QOS QOSRAW ReqCPUS Reserved -ResvCPU ResvCPURAW Start State -Submit Suspended SystemCPU Timelimit -TotalCPU UID User UserCPU -WCKey WCKeyID +AllocCPUS Account AssocID AveCPU +AvePages AveRSS AveVMSize BlockID +Cluster Comment CPUTime CPUTimeRAW +DerivedExitCode Elapsed Eligible End +ExitCode GID Group JobID +JobName Layout MaxPages MaxPagesNode +MaxPagesTask MaxRSS MaxRSSNode MaxRSSTask +MaxVMSize MaxVMSizeNode MaxVMSizeTask MinCPU +MinCPUNode MinCPUTask NCPUS NNodes +NodeList NTasks Priority Partition +QOS QOSRAW ReqCPUS Reserved +ResvCPU ResvCPURAW Start State +Submit Suspended SystemCPU Timelimit +TotalCPU UID User UserCPU +WCKey WCKeyID .ft 1 .fi @@ -317,6 +317,9 @@ \f3PD PENDING\fP Job is awaiting resource allocation. .TP +\fBPR PREEMPTED\fR +Job terminated due to preemption. +.TP \f3R RUNNING\fP Job currently has an allocation. .TP @@ -435,6 +438,13 @@ Cluster name. .TP +\f3Comment\fP +The job's comment string when the AccountingStoreJobComment parameter +in the slurm.conf file is set (or defaults) to YES. The Comment +string can be modified by invoking \f3sacctmgr modify job\fP or the +specialized \f3sjobexitmod\fP command. + +.TP \f3cputime\fP Formatted number of cpu seconds a process was allocated. @@ -452,12 +462,6 @@ or the specialized \f3sjobexitmod\fP command. .TP -\f3DerivedExitStr\fP -The reason the job failed. This string starts off as null. The -DerivedExitStr can be modified by invoking \f3sacctmgr modify job\fP -or the specialized \f3sjobexitmod\fP command. - -.TP \f3elapsed\fP The jobs elapsed time. .IP @@ -660,15 +664,20 @@ Displays the job status, or state. Output can be RUNNING, RESIZING, SUSPENDED, COMPLETED, CANCELLED, FAILED, -TIMEOUT, or NODE_FAIL. If multiple job states are found for a single -job (e.g. the job was requeued after a NODE_FAIL and then COMPLETED) -then the last job state will be displayed followed by a "+". +TIMEOUT, PREEMPTED or NODE_FAIL. If more information is available on the job state +than will fit into the current field width (for example, the uid that CANCELLED +a job) the state will be followed by a "+". You can increase the size of +the displayed state using the "%NUMBER" format modifier described earlier. .TP \f3submit\fP The time and date stamp (in Universal Time Coordinated, UTC) the job was submitted. The format of the output is identical to that of the end field. +NOTE: If a job is requeued, the submit time is reset. To obtain the +original submit time it is necessary to use the \-D or \-\-duplicate option +to display all duplicate entries for a job. + .TP \f3suspended\fP How long the job was suspended for. @@ -1196,7 +1205,7 @@ DISCLAIMER). CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -1217,4 +1226,5 @@ The default job accounting log file. By default, this file is set to read and write permission for root only. .SH "SEE ALSO" -sstat(1), ps(1), srun(1), squeue(1), getrusage(2), time(2) +\fBsstat\fR(1), \fBps\fR (1), \fBsrun\fR(1), \fBsqueue\fR(1), +\fBgetrusage\fR (2), \fBtime\fR (2) diff -Nru slurm-llnl-2.2.7/doc/man/man1/sacctmgr.1 slurm-llnl-2.3.2/doc/man/man1/sacctmgr.1 --- slurm-llnl-2.2.7/doc/man/man1/sacctmgr.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/sacctmgr.1 2011-12-05 17:20:08.000000000 +0000 @@ -34,7 +34,7 @@ .TP \fB\-h\fR, \fB\-\-help\fR -Print a help message describing the usage of \fBssacctmgr\fR. +Print a help message describing the usage of \fBsacctmgr\fR. This is equivalent to the \fBhelp\fR command. .TP @@ -203,7 +203,7 @@ .TP \fIjob\fR Job - but only two specific fields of the job: Derived Exit Code and -Derived Exit String +the Comment String .TP \fIqos\fR @@ -243,6 +243,15 @@ value use the modify command with a new value of \-1. .TP +\fIGraceTime\fP= +Specifies, in units of seconds, the preemption grace time +to be extended to a job which has been selected for preemption. +The default value is zero, no preemption grace time is allowed on +this QOS. +.P +NOTE: This value is only meaningful for QOS PreemptMode=CANCEL) + +.TP \fIGrpCPUMins\fP= Maximum number of CPU minutes running jobs are able to be allocated in aggregate for this association and all associations which are children @@ -875,11 +884,15 @@ can only modify the derived exit code of their own job. .TP -\fIDerivedExitString\fP -Initially NULL, the derived exit string can be populated after a job -completes with a textual description of why the job succeeded or -failed. The user can only modify the derived exit string of their own -job. +\f3Comment\fP +The job's comment string when the AccountingStoreJobComment parameter +in the slurm.conf file is set (or defaults) to YES. The user can only +modify the comment string of their own job. + +.TP +The \fIDerivedExitCode\fP and \f3Comment\fP fields are the only fields +of a job record in the database that can be modified after job +completion. .SH "LIST/SHOW JOB FORMAT OPTIONS" @@ -901,12 +914,12 @@ will be held until their Fairshare Usage goes above the Threshold. .TP \fINoReserve\fP -If set, and using backfill, jobs using this QOS will all be considered -at the same level within this QOS meaning if a larger, higher priority -job is unable to run a smaller job will run if possible even if the -larger higher priority job will be delayed starting. -NOTE: This could cause starvation on these larger jobs, but if that is -ok, this flag most likely will increase utilization. +If this flag is set and backfill scheduling is used, jobs using this QOS will +not reserve resources in the backfill schedule's map of resources allocated +through time. This flag is intended for use with a QOS that may be preempted +by jobs associated with all other QOS (e.g use with a "standby" QOS). If the +allocated is used with a QOS which can not be preempted by all other QOS, it +could result in starvation of larger jobs. .TP \fIPartitionMaxNodes\fP If set jobs using this QOS will be able to @@ -922,6 +935,11 @@ .RE .TP +\fIGraceTime\fP +Preemption grace time to be extended to a job which has been +selected for preemption. + +.TP \fIGrpCPUMins\fP Maximum number of CPU minutes running jobs are able to be allocated in aggregate for this QOS. @@ -963,6 +981,10 @@ Maximum number of CPUs each job is able to use. .TP +\fIMaxCpusPerUser\fP +Maximum number of CPUs each user is able to use. + +.TP \fIMaxJobs\fP Maximum number of jobs each user is allowed to run at one time. @@ -971,6 +993,10 @@ Maximum number of nodes each job is able to use. .TP +\fIMaxNodesPerUser\fP +Maximum number of nodes each user is able to use. + +.TP \fIMaxSubmitJobs\fP Maximum number of jobs pending or running state at any time per user. @@ -992,7 +1018,9 @@ is configured to \fIpreempt/qos\fP. The default preemption mechanism is specified by the cluster\-wide \fIPreemptMode\fP configuration parameter. Possible values are "Cluster" (meaning use cluster default), "Cancel", -"Checkpoint", "Requeue" and "Suspend". +"Checkpoint" and "Requeue". This option is not compatible with +PreemptMode=OFF or PreemptMode=SUSPEND (i.e. preempted jobs must be removed +from the resources). .TP \fIPriority\fP @@ -1022,6 +1050,13 @@ An arbitrary string describing a QOS. .TP +\fIGraceTime\fP +Preemption grace time to be extended to a job which has been +selected for preemption in the format of hh:mm:ss. The default +value is zero, no preemption grace time is allowed on this partition. +NOTE: This value is only meaningful for QOS PreemptMode=CANCEL. + +.TP \fIGrpCPUMins\fP Maximum number of CPU minutes running jobs are able to be allocated in aggregate for this QOS. @@ -1087,6 +1122,11 @@ before it is enforced.) .TP +\fIMaxCpusPerUser\fP +Maximum number of CPUs each user is able to use. +To clear a previously set value use the modify command with a new value of \-1. + +.TP \fIMaxJobs\fP Maximum number of jobs each user is allowed to run at one time. To clear a previously set value use the modify command with a new value of \-1. @@ -1097,6 +1137,11 @@ To clear a previously set value use the modify command with a new value of \-1. .TP +\fIMaxNodesPerUser\fP +Maximum number of nodes each user is able to use. +To clear a previously set value use the modify command with a new value of \-1. + +.TP \fIMaxSubmitJobs\fP Maximum number of jobs pending or running state at any time per user. To clear a previously set value use the modify command with a new value of \-1. @@ -1127,7 +1172,9 @@ is configured to \fIpreempt/qos\fP. The default preemption mechanism is specified by the cluster\-wide \fIPreemptMode\fP configuration parameter. Possible values are "Cluster" (meaning use cluster default), "Cancel", -"Checkpoint", "Requeue" and "Suspend". +"Checkpoint" and "Requeue". This option is not compatible with +PreemptMode=OFF or PreemptMode=SUSPEND (i.e. preempted jobs must be removed +from the resources). .TP \fIPriority\fP @@ -1700,7 +1747,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -1713,5 +1760,5 @@ details. .SH "SEE ALSO" -\fBslurm.conf\fR(5) +\fBslurm.conf\fR(5), \fBslurmdbd\fR(8) diff -Nru slurm-llnl-2.2.7/doc/man/man1/salloc.1 slurm-llnl-2.3.2/doc/man/man1/salloc.1 --- slurm-llnl-2.2.7/doc/man/man1/salloc.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/salloc.1 2011-12-05 17:20:08.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "salloc" "1" "SLURM 2.2" "October 2010" "SLURM Commands" +.TH "salloc" "1" "SLURM 2.3" "August 2011" "SLURM Commands" .SH "NAME" salloc \- Obtain a SLURM job allocation (a set of nodes), execute a command, @@ -21,6 +21,11 @@ \fBSallocDefaultCommand\fR is not set, then \fBsalloc\fR runs the user's default shell. +The following document describes the the influence of various options on the +allocation of cpus to jobs and tasks. +.br +http://www.schedmd.com/slurmdocs/cpu_management.html + NOTE: The salloc logic includes support to save and restore the terminal line settings and is designed to be executed in the foreground. If you need to execute salloc in the background, set its standard input to some file, for @@ -315,6 +320,11 @@ This job can begin execution after the specified jobs have successfully executed (ran to completion with an exit code of zero). .TP +\fBexpand:job_id\fR +Resources allocated to this job should be used to expand the specified job. +The job to expand must share the same QOS (Quality of Service) and partition. +Gang scheduling of resources in the partition is also not supported. +.TP \fBsingleton\fR This job can begin execution after any previously launched jobs sharing the same job name and user have terminated. @@ -326,10 +336,11 @@ .TP \fB\-\-exclusive\fR -The job allocation cannot share nodes with other running jobs. This is -the oposite of \-\-share, whichever option is seen last on the command line -will win. (The default shared/exclusive behaviour depends on system -configuration.) +The job allocation can not share nodes with other running jobs. +This is the opposite of \-\-share, whichever option is seen last +on the command line will be used. The default shared/exclusive +behavior depends on system configuration and the partition's \fBShared\fR +option takes precedence over the job's option. .TP \fB\-F\fR, \fB\-\-nodefile\fR=<\fInode file\fR> @@ -386,7 +397,7 @@ \fB\-H, \-\-hold\fR Specify the job is to be submitted in a held state (priority of zero). A held job can now be released using scontrol to reset its priority -(e.g. "\fIscontrol update jobid= priority=1\fR". +(e.g. "\fIscontrol release \fR"). .TP \fB\-h\fR, \fB\-\-help\fR @@ -442,7 +453,9 @@ allocation has been revoked. The job allocation can be revoked for a couple of reasons: someone used \fBscancel\fR to revoke the allocation, or the allocation reached its time limit. If you do not specify a signal -name or number, the default signal is SIGTERM. +name or number and SLURM is configured to signal the spawned command at job +termination, the default signal is SIGHUP for interactive and SIGTERM for +non\-interactive sessions. .TP \fB\-k\fR, \fB\-\-no\-kill\fR @@ -479,7 +492,8 @@ nodes. The optional second distribution method (after the ":") controls the distribution of resources across sockets within a node. Note that with select/cons_res, the number of cpus allocated on each -socket and node may be different. Refer to the mc_support.html document +socket and node may be different. Refer to +http://www.schedmd.com/slurmdocs/mc_support.html for more information on resource allocation, assignment of tasks to nodes, and binding of tasks to CPUs. .RS @@ -516,11 +530,11 @@ within a block of tasks and between the blocks of tasks. For more details (including examples and diagrams), please see .br -https://computing.llnl.gov/linux/slurm/mc_support.html +http://www.schedmd.com/slurmdocs/mc_support.html .br and .br -https://computing.llnl.gov/linux/slurm/dist_plane.html. +http://www.schedmd.com/slurmdocs/dist_plane.html .TP .B arbitrary The arbitrary method of distribution will allocate processes in\-order @@ -659,11 +673,9 @@ .TP \fB\-N\fR, \fB\-\-nodes\fR=<\fIminnodes\fR[\-\fImaxnodes\fR]> Request that a minimum of \fIminnodes\fR nodes be allocated to this job. -The scheduler may decide to launch the job on more than \fIminnodes\fR nodes. -A limit on the maximum node count may be specified with \fImaxnodes\fR -(e.g. "\-\-nodes=2\-4"). The minimum and maximum node count may be the -same to specify a specific number of nodes (e.g. "\-\-nodes=2\-2" will ask -for two and ONLY two nodes). +A maximum node count may also be specified with \fImaxnodes\fR. +If only one number is specified, this is used as both the minimum and +maximum node count. The partition's node limits supersede those of the job. If a job's node limits are outside of the range permitted for its associated partition, the job will be left in a PENDING state. @@ -679,6 +691,9 @@ the \fB\-n\fR and \fB\-c\fR options. The job will be allocated as many nodes as possible within the range specified and without delaying the initiation of the job. +The node count specification may include a numeric value followed by a suffix +of "k" (multiplies numeric value by 1,024) or "m" (multiplies numeric value by +1,048,576). .TP \fB\-n\fR, \fB\-\-ntasks\fR=<\fInumber\fR> @@ -783,7 +798,7 @@ .TP \fB\-p\fR, \fB\-\-partition\fR=<\fIpartition_names\fR> Request a specific partition for the resource allocation. If not specified, -the default behaviour is to allow the slurm controller to select the default +the default behavior is to allow the slurm controller to select the default partition as designated by the system administrator. If the job can use more than one partition, specify their names in a comma separate list and the one offering earliest initiation will be used. @@ -806,9 +821,12 @@ .TP \fB\-s\fR, \fB\-\-share\fR -The job allocation can share nodes with other running jobs. (The default -shared/exclusive behaviour depends on system configuration.) -This may result the allocation being granted sooner than if the \-\-share +The job allocation can share nodes with other running jobs. +This is the opposite of \-\-exclusive, whichever option is seen last +on the command line will be used. The default shared/exclusive +behavior depends on system configuration and the partition's \fBShared\fR +option takes precedence over the job's option. +This option may result the allocation being granted sooner than if the \-\-share option was not set and allow higher system utilization, but application performance will likely suffer due to competition for resources within a node. @@ -831,6 +849,18 @@ task/affinity plugin is enabled. .TP +\fB\-\-switch\fR=<\fIcount\fR>[@<\fImax\-time\fR>] +When a tree topology is used, this defines the maximum count of switches +desired for the job allocation and optionally the maximum time to wait +for that number of switches. If SLURM finds an allocation containing more +switches than the count specified, the job remain pending until it either finds +an allocation with desired switch ount or the time limit expires. By default +there is no switch count limit and there is no delay in starting the job. +The job's maximum time delay may be limited by the system administrator using +the \fBSchedulerParameters\fR configuration parameter with the +\fBmax_switch_wait\fR parameter option. + +.TP \fB\-t\fR, \fB\-\-time\fR=<\fItime\fR> Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will @@ -949,6 +979,7 @@ If running on a BGP system and wanting to run in HTC mode (only for 1 midplane and below). You can use HTC_S for SMP, HTC_D for Dual, HTC_V for virtual node mode, and HTC_L for Linux mode. +A comma separated lists of connection types may be specified, one for each dimension. .TP \fB\-g\fR, \fB\-\-geometry\fR=<\fIXxYxZ\fR> @@ -1039,6 +1070,9 @@ \fBSALLOC_JOBID\fR Same as \fB\-\-jobid\fR .TP +\fBSALLOC_KILL_CMD\fR +Same as \fB\-K\fR, \fB\-\-kill\-command\fR +.TP \fBSALLOC_MEM_BIND\fR Same as \fB\-\-mem_bind\fR .TP @@ -1164,7 +1198,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -1178,4 +1212,5 @@ .SH "SEE ALSO" .LP -sinfo(1), sattach(1), sbatch(1), squeue(1), scancel(1), scontrol(1), slurm.conf(5), sched_setaffinity(2), numa(3) +\fBsinfo\fR(1), \fBsattach\fR(1), \fBsbatch\fR(1), \fBsqueue\fR(1), \fBscancel\fR(1), \fBscontrol\fR(1), +\fBslurm.conf\fR(5), \fBsched_setaffinity\fR (2), \fBnuma\fR (3) diff -Nru slurm-llnl-2.2.7/doc/man/man1/sattach.1 slurm-llnl-2.3.2/doc/man/man1/sattach.1 --- slurm-llnl-2.2.7/doc/man/man1/sattach.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/sattach.1 2011-12-05 17:20:08.000000000 +0000 @@ -66,7 +66,7 @@ .TP \fB\-v\fR, \fB\-\-verbose\fR -Increase the verbosity of sattach's informational messages. Multiple \-v's +Increase the verbosity of sattach's informational messages. Multiple \fB\-v\fR's will further increase sattach's verbosity. .SH "INPUT ENVIRONMENT VARIABLES" @@ -96,7 +96,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -110,4 +110,6 @@ .SH "SEE ALSO" .LP -sinfo(1), salloc(1), sbatch(1), squeue(1), scancel(1), scontrol(1), slurm.conf(5), sched_setaffinity(2), numa(3) +\fBsinfo\fR(1), \fBsalloc\fR(1), \fBsbatch\fR(1), \fBsqueue\fR(1), +\fBscancel\fR(1), \fBscontrol\fR(1), +\fBslurm.conf\fR(5), \fBsched_setaffinity\fR (2), \fBnuma\fR (3) diff -Nru slurm-llnl-2.2.7/doc/man/man1/sbatch.1 slurm-llnl-2.3.2/doc/man/man1/sbatch.1 --- slurm-llnl-2.2.7/doc/man/man1/sbatch.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/sbatch.1 2011-12-05 17:20:08.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "sbatch" "1" "SLURM 2.2" "October 2010" "SLURM Commands" +.TH "sbatch" "1" "SLURM 2.3" "August 2011" "SLURM Commands" .SH "NAME" sbatch \- Submit a batch script to SLURM. @@ -25,6 +25,11 @@ runs a single copy of the batch script on the first node in the set of allocated nodes. +The following document describes the the influence of various options on the +allocation of cpus to jobs and tasks. +.br +http://www.schedmd.com/slurmdocs/cpu_management.html + .SH "OPTIONS" .LP @@ -324,6 +329,11 @@ This job can begin execution after the specified jobs have successfully executed (ran to completion with an exit code of zero). .TP +\fBexpand:job_id\fR +Resources allocated to this job should be used to expand the specified job. +The job to expand must share the same QOS (Quality of Service) and partition. +Gang scheduling of resources in the partition is also not supported. +.TP \fBsingleton\fR This job can begin execution after any previously launched jobs sharing the same job name and user have terminated. @@ -332,7 +342,7 @@ .TP \fB\-D\fR, \fB\-\-workdir\fR=<\fIdirectory\fR> Set the working directory of the batch script to \fIdirectory\fR before -it it executed. +it is executed. .TP \fB\-e\fR, \fB\-\-error\fR=<\fIfilename pattern\fR> @@ -345,10 +355,11 @@ .TP \fB\-\-exclusive\fR -The job allocation cannot share nodes with other running jobs. This is -the oposite of \-\-share, whichever option is seen last on the command line -will win. (The default shared/exclusive behaviour depends on system -configuration.) +The job allocation can not share nodes with other running jobs. +This is the opposite of \-\-share, whichever option is seen last +on the command line will be used. The default shared/exclusive +behavior depends on system configuration and the partition's \fBShared\fR +option takes precedence over the job's option. .TP \fB\-\-export\fR=<\fIenvironment variables | ALL | NONE\fR> @@ -418,7 +429,7 @@ \fB\-H, \-\-hold\fR Specify the job is to be submitted in a held state (priority of zero). A held job can now be released using scontrol to reset its priority -(e.g. "\fIscontrol update jobid= priority=1\fR". +(e.g. "\fIscontrol release \fR"). .TP \fB\-h\fR, \fB\-\-help\fR @@ -534,7 +545,8 @@ nodes. The optional second distribution method (after the ":") controls the distribution of resources across sockets within a node. Note that with select/cons_res, the number of cpus allocated on each -socket and node may be different. Refer to the mc_support.html document +socket and node may be different. Refer to +http://www.schedmd.com/slurmdocs/mc_support.html for more information on resource allocation, assignment of tasks to nodes, and binding of tasks to CPUs. .RS @@ -571,16 +583,16 @@ within a block of tasks and between the blocks of tasks. For more details (including examples and diagrams), please see .br -https://computing.llnl.gov/linux/slurm/mc_support.html +http://www.schedmd.com/slurmdocs/mc_support.html .br and .br -https://computing.llnl.gov/linux/slurm/dist_plane.html. +http://www.schedmd.com/slurmdocs/dist_plane.html .TP .B arbitrary The arbitrary method of distribution will allocate processes in\-order as listed in file designated by the environment variable -SLURM_HOSTFILE. If this variable is listed it will over ride any +SLURM_HOSTFILE. If this variable is listed it will override any other method specified. If not set the method will default to block. Inside the hostfile must contain at minimum the number of hosts requested and be one per line or comma separated. If specifying a @@ -714,11 +726,9 @@ .TP \fB\-N\fR, \fB\-\-nodes\fR=<\fIminnodes\fR[\-\fImaxnodes\fR]> Request that a minimum of \fIminnodes\fR nodes be allocated to this job. -The scheduler may decide to launch the job on more than \fIminnodes\fR nodes. -A limit on the maximum node count may be specified with \fImaxnodes\fR -(e.g. "\-\-nodes=2\-4"). The minimum and maximum node count may be the -same to specify a specific number of nodes (e.g. "\-\-nodes=2\-2" will ask -for two and ONLY two nodes). +A maximum node count may also be specified with \fImaxnodes\fR. +If only one number is specified, this is used as both the minimum and +maximum node count. The partition's node limits supersede those of the job. If a job's node limits are outside of the range permitted for its associated partition, the job will be left in a PENDING state. @@ -734,6 +744,9 @@ the \fB\-n\fR and \fB\-c\fR options. The job will be allocated as many nodes as possible within the range specified and without delaying the initiation of the job. +The node count specification may include a numeric value followed by a suffix +of "k" (multiplies numeric value by 1,024) or "m" (multiplies numeric value by +1,048,576). .TP \fB\-n\fR, \fB\-\-ntasks\fR=<\fInumber\fR> @@ -844,7 +857,7 @@ .TP \fB\-p\fR, \fB\-\-partition\fR=<\fIpartition_names\fR> Request a specific partition for the resource allocation. If not specified, -the default behaviour is to allow the slurm controller to select the default +the default behavior is to allow the slurm controller to select the default partition as designated by the system administrator. If the job can use more than one partition, specify their names in a comma separate list and the one offering earliest initiation will be used. @@ -863,7 +876,7 @@ All limits listed below .TP \fBAS\fR -The maximum address space for a processes +The maximum address space for a process .TP \fBCORE\fR The maximum size of core file @@ -875,7 +888,9 @@ The maximum size of a process's data segment .TP \fBFSIZE\fR -The maximum size of files created +The maximum size of files created. Note that if the user sets FSIZE to less +than the current size of the slurmd.log, job launches will fail with +a 'File size limit exceeded' error. .TP \fBMEMLOCK\fR The maximum size that may be locked into memory @@ -919,9 +934,12 @@ .TP \fB\-s\fR, \fB\-\-share\fR -The job allocation can share nodes with other running jobs. (The default -shared/exclusive behaviour depends on system configuration.) -This may result in the allocation being granted sooner than if the \-\-share +The job allocation can share nodes with other running jobs. +This is the opposite of \-\-exclusive, whichever option is seen last +on the command line will be used. The default shared/exclusive +behavior depends on system configuration and the partition's \fBShared\fR +option takes precedence over the job's option. +This option may result the allocation being granted sooner than if the \-\-share option was not set and allow higher system utilization, but application performance will likely suffer due to competition for resources within a node. @@ -944,6 +962,18 @@ task/affinity plugin is enabled. .TP +\fB\-\-switch\fR=<\fIcount\fR>[@<\fImax\-time\fR>] +When a tree topology is used, this defines the maximum count of switches +desired for the job allocation and optionally the maximum time to wait +for that number of switches. If SLURM finds an allocation containing more +switches than the count specified, the job remain pending until it either finds +an allocation with desired switch count or the time limit expires. By default +there is no switch count limit and there is no delay in starting the job. +The job's maximum time delay may be limited by the system administrator using +the \fBSchedulerParameters\fR configuration parameter with the +\fBmax_switch_wait\fR parameter option. + +.TP \fB\-t\fR, \fB\-\-time\fR=<\fItime\fR> Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will @@ -1070,6 +1100,7 @@ If running on a BGP system and wanting to run in HTC mode (only for 1 midplane and below). You can use HTC_S for SMP, HTC_D for Dual, HTC_V for virtual node mode, and HTC_L for Linux mode. +A comma separated lists of connection types may be specified, one for each dimension. .TP \fB\-g\fR, \fB\-\-geometry\fR=<\fIXxYxZ\fR> @@ -1339,7 +1370,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -1353,4 +1384,5 @@ .SH "SEE ALSO" .LP -sinfo(1), sattach(1), salloc(1), squeue(1), scancel(1), scontrol(1), slurm.conf(5), sched_setaffinity(2), numa(3) +\fBsinfo\fR(1), \fBsattach\fR(1), \fBsalloc\fR(1), \fBsqueue\fR(1), \fBscancel\fR(1), \fBscontrol\fR(1), +\fBslurm.conf\fR(5), \fBsched_setaffinity\fR (2), \fBnuma\fR (3) diff -Nru slurm-llnl-2.2.7/doc/man/man1/sbcast.1 slurm-llnl-2.3.2/doc/man/man1/sbcast.1 --- slurm-llnl-2.2.7/doc/man/man1/sbcast.1 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/sbcast.1 2011-12-05 17:20:08.000000000 +0000 @@ -109,7 +109,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man1/scancel.1 slurm-llnl-2.3.2/doc/man/man1/scancel.1 --- slurm-llnl-2.2.7/doc/man/man1/scancel.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/scancel.1 2011-12-05 17:20:08.000000000 +0000 @@ -1,4 +1,4 @@ -.TH SCANCEL "1" "January 2011" "scancel 2.2" "Slurm components" +.TH SCANCEL "1" "January 2011" "scancel 2.3" "Slurm components" .SH "NAME" scancel \- Used to signal jobs or job steps that are under the control of Slurm. @@ -33,6 +33,8 @@ \fB-\-ctld\fR Send the job signal request to the slurmctld daemon rather than directly to the slurmd daemons. This increases overhead, but offers better fault tolerance. +This is the default behavior on architectures using front end nodes (e.g. +BlueGene and Cray computers) or when the \fB\-\-clusters\fR option is used. .TP \fB\-\-help\fR @@ -223,7 +225,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -236,4 +238,4 @@ details. .SH "SEE ALSO" -\fBslurm_kill_job\fR(3), \fBslurm_kill_job_step\fR(3) +\fBslurm_kill_job\fR (3), \fBslurm_kill_job_step\fR (3) diff -Nru slurm-llnl-2.2.7/doc/man/man1/scontrol.1 slurm-llnl-2.3.2/doc/man/man1/scontrol.1 --- slurm-llnl-2.2.7/doc/man/man1/scontrol.1 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man1/scontrol.1 2011-12-05 17:20:08.000000000 +0000 @@ -1,4 +1,4 @@ -.TH SCONTROL "1" "November 2010" "scontrol 2.2" "Slurm components" +.TH SCONTROL "1" "July 2011" "scontrol 2.3" "Slurm components" .SH "NAME" scontrol \- Used view and modify Slurm configuration and state. @@ -41,7 +41,8 @@ unavailable to user's group will be displayed (i.e. this is the default behavior). .TP \fB\-M\fR, \fB\-\-clusters\fR=<\fIstring\fR> -Cluster to issue commands to. +The cluster to issue commands to. Only one cluster name may be specified. + .TP \fB\-o\fR, \fB\-\-oneliner\fR Print information one line per record. @@ -124,6 +125,10 @@ .RE .TP +\fBcluster\fR \fICLUSTER_NAME\fP +The cluster to issue commands to. Only one cluster name may be specified. + +.TP \fBcreate\fP \fISPECIFICATION\fP Create a new partition or reservation. See the full list of parameters below. Include the tag "res" to create a reservation without specifying @@ -141,11 +146,14 @@ \fIReservation=\fP. On Dynamically laid out Bluegene systems \fIBlockName=\fP also works. Reservations and partitions should have no associated jobs at the time of their deletion (modify the job's first). +If the specified partition is in use, the request is denied. .TP \fBdetails\fP -Causes the \fIshow\fP command to provide additional details where available, -namely the specific CPUs and NUMA memory allocated on each node. +Causes the \fIshow\fP command to provide additional details where available. +Batch job information will include the batch script for jobs the user is +authorized to view. +Job information will include CPUs and NUMA memory allocated on each node. Note that on computers with hyperthreading enabled and SLURM configured to allocate cores, each listed CPU represents one physical core. Each hyperthread on that core can be allocated a separate task, so a job's @@ -274,11 +282,19 @@ is restarted or \fBscontrol reconfigure\fR is executed). .TP +\fBsetdebugflags\fP [+|\-]\fIFLAG\fP +Add or remove DebugFlags of the slurmctld daemon. +See "man slurm.conf" for a list of supported DebugFlags. +NOTE: Changing the value of some DebugFlags will have no effect without +restarting the slurmctld daemon, which would set DebugFlags based upon the +contents of the slurm.conf configuration file. + +.TP \fBshow\fP \fIENTITY\fP \fIID\fP Display the state of the specified entity with the specified identification. -\fIENTITY\fP may be \fIaliases\fP, \fIconfig\fP, \fIdaemons\fP, \fIjob\fP, -\fInode\fP, \fIpartition\fP, \fIreservation\fP, \fIslurmd\fP, \fIstep\fP, -\fItopology\fP, \fIhostlist\fP or \fIhostnames\fP +\fIENTITY\fP may be \fIaliases\fP, \fIconfig\fP, \fIdaemons\fP, \fIfrontend\fP, +\fIjob\fP, \fInode\fP, \fIpartition\fP, \fIreservation\fP, \fIslurmd\fP, +\fIstep\fP, \fItopology\fP, \fIhostlist\fP or \fIhostnames\fP (also \fIblock\fP or \fIsubbp\fP on BlueGene systems). \fIID\fP can be used to identify a specific element of the identified entity: the configuration parameter name, job ID, node name, partition name, @@ -293,6 +309,9 @@ \fINodeHostname\fP (useful to get the list of virtual nodes associated with a real node in a configuration where multiple slurmd daemons execute on a single compute node). +\fIconfig\fP displays parameter names from the configuration files in mixed +case (e.g. SlurmdPort=7003) while derived parameters names are in upper case +only (e.g. SLURM_VERSION). \fIhostnames\fP takes an optional hostlist expression as input and writes a list of individual host names to standard output (one per line). If no hostlist expression is supplied, the contents of the @@ -614,6 +633,19 @@ already passed for that year, in which case the next year is used. .RE .TP +\fISwitches\fP=[@] +When a tree topology is used, this defines the maximum count of switches +desired for the job allocation. If SLURM finds an allocation containing more +switches than the count specified, the job remain pending until it either finds +an allocation with desired switch count or the time limit expires. By default +there is no switch count limit and no time limit delay. Set the count +to zero in order to clean any previously set count (disabling the limit). +The job's maximum time delay may be limited by the system administrator using +the \fBSchedulerParameters\fR configuration parameter with the +\fBmax_switch_wait\fR parameter option. +Also see \fIwait\-for\-switch\fP. + +.TP \fITimeLimit\fP=
      +# has tag +#
      --pppppp or
      -P, --pppppp +# has tag +#

      hhhh

      also has tag has tag inserted +def insert_tag(html, lineIn): + if lineIn[0:4] == "

      ": + posEnd = lineIn.find("

      ") + if posEnd != -1: + html.write('\n') + return + + if lineIn[0:7] != "
      ": + return + posBgn = lineIn.find("--") + if posBgn == -1: + # 1st form + posBgn = 5 + posBgn = posBgn + 2 + posEnd = lineIn.find("",posBgn) + if posEnd == -1: + # poorly constructed + return + html.write('\n') + return + + +def llnl_references(line): + manStr = "Refer to mc_support.html" + htmlStr = 'Refer to mc_support' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = 'http://www.schedmd.com/slurmdocs/mc_support.html' + htmlStr = 'the mc_support document' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = 'http://www.schedmd.com/slurmdocs/dist_plane.html.' + htmlStr = 'the dist_plane document' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = '<http://www.schedmd.com/slurmdocs/mpi_guide.html>' + htmlStr = 'mpi_guide' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = '(http://www.schedmd.com/slurmdocs/power_save.html).' + htmlStr = 'power_save' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = 'http://www.schedmd.com/slurmdocs/cons_res.html' + htmlStr = 'cons_res' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = 'http://www.schedmd.com/slurmdocs/cons_res_share.html' + htmlStr = 'cons_res_share' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = 'http://www.schedmd.com/slurmdocs/gang_scheduling.html' + htmlStr = 'gang_scheduling' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + manStr = 'http://www.schedmd.com/slurmdocs/preempt.html' + htmlStr = 'preempt' + lineFix = line.replace(manStr,htmlStr) + if lineFix != line: + return lineFix + return line + +def relative_reference(lineIn): + fullRef = "/cgi-bin/man/man2html" + lenRef = len(fullRef) + refAnchor="man2html " + while posHREF != -1: + posRefAnchor = lineIn.find(refAnchor,cursor) + lineOt = lineOt + lineIn[cursor:posRefAnchor+lenRefAnchor] + cursor = posHREF + lenRef + 3 + lineOt = lineOt + '"' + posQuote = lineIn.find('"',cursor) + lineOt = lineOt + lineIn[cursor:posQuote] + ".html" + cursor = posQuote + posHREF = lineIn.find(fullRef,cursor) + lineOt = lineOt + lineIn[cursor:] + return lineOt + + +def include_virtual(matchobj): + global dirname + if dirname: + filename = dirname + '/' + matchobj.group(2) + else: + filename = matchobj.group(2) + + if os.access(filename, os.F_OK): + #print 'Including file', filename + lines = file(filename, 'r').read() + return lines + else: + return matchobj.group(0) + +def url_rewrite(matchobj): + global dirname + if dirname: + localpath = dirname + '/' + matchobj.group(2) + else: + localpath = matchobj.group(2) + + if matchobj.group(2)[-6:] == '.shtml' and os.access(localpath, os.F_OK): + location = matchobj.group(2) + if matchobj.group(3) is None: + newname = location[:-6] + '.html' + else: + newname = location[:-6] + '.html' + matchobj.group(3) + #print 'Rewriting', location, 'to', newname + return matchobj.group(1) + newname + matchobj.group(4) + else: + return matchobj.group(0) + +files = [] +for f in sys.argv[3:]: + posLastDot = f.rfind(".") + mhtmlname = f[:posLastDot] + ".mhtml" + cmd = "man2html " + f + "> " + mhtmlname + os.system(cmd) + print ">>>>>>> " + mhtmlname + files.append(mhtmlname) + +for filename in files: + dirname, basefilename = os.path.split(filename) +# newfilename = basefilename[:-6] + '.html' + newfilename = filename[:-6] + '.html' + print 'Converting', filename, '->', newfilename + shtml = file(filename, 'r') + html = file(newfilename, 'w') + + lines = file(sys.argv[1], 'r').read() + lines = lines.replace(".shtml",".html") + html.write(lines) +# html.write() + for line in shtml.readlines(): + # Remove html header/footer created by man2html + if line == "Content-type: text/html\n": + continue + if line[:6] == "": + continue + if line[:7] == "": + continue + if line[:7] == "": + continue + if line[:7] == "": + continue + line = include_regex.sub(include_virtual, line) + # Special case some html references + line = llnl_references(line) + #insert tags for some options + insert_tag(html, line) + # Make man2html links relative ones + line = relative_reference(line) + + line = url_regex.sub(url_rewrite, line) + html.write(line) + lines = file(sys.argv[2], 'r').read() + html.write(lines) +# html.write() + html.close() + shtml.close() + os.remove(filename) diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_allocate_resources.3 slurm-llnl-2.3.2/doc/man/man3/slurm_allocate_resources.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_allocate_resources.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_allocate_resources.3 2011-12-05 17:20:08.000000000 +0000 @@ -421,7 +421,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_checkpoint_error.3 slurm-llnl-2.3.2/doc/man/man3/slurm_checkpoint_error.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_checkpoint_error.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_checkpoint_error.3 2011-12-05 17:20:08.000000000 +0000 @@ -263,7 +263,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_clear_trigger.3 slurm-llnl-2.3.2/doc/man/man3/slurm_clear_trigger.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_clear_trigger.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_clear_trigger.3 2011-12-05 17:20:08.000000000 +0000 @@ -94,7 +94,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_complete_job.3 slurm-llnl-2.3.2/doc/man/man3/slurm_complete_job.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_complete_job.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_complete_job.3 2011-12-05 17:20:08.000000000 +0000 @@ -59,7 +59,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_free_ctl_conf.3 slurm-llnl-2.3.2/doc/man/man3/slurm_free_ctl_conf.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_free_ctl_conf.3 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_free_ctl_conf.3 2011-12-05 17:20:08.000000000 +0000 @@ -82,6 +82,8 @@ .LP #include .br +#include +.br #include .br #include @@ -92,7 +94,7 @@ .br slurm_ctl_conf_t * conf_info_msg_ptr = NULL; .br - long version = slurm_api_version; + long version = slurm_api_version(); .LP /* We can use the SLURM version number to determine how .br @@ -128,11 +130,11 @@ .br printf ("control_machine = %s\\n", .br - slurm_ctl_conf_ptr\->control_machine); + conf_info_msg_ptr\->control_machine); .br - printf ("server_timeout = %u\\n", + printf ("first_job_id = %u\\n", .br - slurm_ctl_conf_ptr\->server_timeout); + conf_info_msg_ptr\->first_job_id); .LP slurm_free_ctl_conf (conf_info_msg_ptr); .br @@ -151,7 +153,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_free_front_end_info_msg.3 slurm-llnl-2.3.2/doc/man/man3/slurm_free_front_end_info_msg.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_free_front_end_info_msg.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_free_front_end_info_msg.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,214 @@ +.TH "Slurm API" "3" "December 2010" "Morris Jette" "Slurm front end node informational calls" + +.SH "NAME" +slurm_free_front_end_info_msg, slurm_load_front_end, +slurm_print_front_end_info_msg, +slurm_print_front_end_table, slurm_sprint_front_end_table +\- Slurm front end node information reporting functions + +.SH "SYNTAX" +.LP +#include +.br +#include +.LP +void \fBslurm_free_front_end_info_msg\fR ( +.br + front_end_info_msg_t *\fIfront_end_info_msg_ptr\fP +.br +); +.LP +int \fBslurm_load_front_end\fR ( +.br + time_t \fIupdate_time\fP, +.br + front_end_info_msg_t **\fIfront_end_info_msg_pptr\fP, +.br +); +.LP +void \fBslurm_print_front_end_info_msg\fR ( +.br + FILE *\fIout_file\fp, +.br + front_end_info_msg_t *\fIfront_end_info_msg_ptr\fP, +.br + int \fIone_liner\fP +.br +); +.LP +void \fBslurm_print_front_end_table\fR ( +.br + FILE *\fIout_file\fp, +.br + front_end_info_t *\fIfront_end_ptr\fP, +.br + int \fIone_liner\fP +.br +); +.LP +char *\fBslurm_sprint_front_end_table\fR ( +.br + front_end_info_t *\fIfront_end_ptr\fP, +.br + int \fIone_liner\fP +.br +); + +.SH "ARGUMENTS" +.LP +.TP +\fIfront_end_info_msg_ptr\fP +Specifies the pointer to the structure created by \fBslurm_load_front_end\fR. +.TP +\fIfront_end_info_msg_pptr\fP +Specifies the double pointer to the structure to be created and filled with +the time of the last front end node update, a record count, and detailed +information about each front_end node. Detailed front_end node information +is written to fixed sized records and includes: name, state, etc. +See slurm.h for full details on the data structure's contents. +.TP +\fIfront_end_ptr\fP +Specifies a pointer to a single front end node record from the +\fIfront_end_info_msg_ptr\fP data structure. +.TP +\fIone_liner\fP +Print one record per line if non\-zero. +.TP +\fIout_file\fP +Specifies the file to print data to. +.TP +\fIupdate_time\fP +For all of the following informational calls, if update_time is equal to +or greater than the last time changes where made to that information, new +information is not returned. Otherwise all the configuration. job, node, +or partition records are returned. + +.SH "DESCRIPTION" +.LP +\fBslurm_free_front_end_info_msg\fR Release the storage generated by the +\fBslurm_load_front_end\fR function. +.LP +\fBslurm_load_front_end\fR Returns a \front_end_info_msg_t\fP that contains an +update time, record count, and array of records for all front end nodes. +.LP +\fBslurm_print_front_end_info_msg\fR Prints the contents of the data structure +describing all front end node records from the data loaded by the +\fBslurm_load_front_end\fR function. +.LP +\fBslurm_print_front_end_table\fR Prints to a file the contents of the data +structure describing a single front end node record loaded by the +\fBslurm_load_front_end\fR function. +.LP +\fBslurm_psrint_front_end_table\fR Prints to memory the contents of the data +structure describing a single front end node record loaded by the +\fBslurm_load_front_end\fR function. + +.SH "RETURN VALUE" +.LP +On success, zero is returned. On error, \-1 is returned, and Slurm error code +is set appropriately. + +.SH "ERRORS" +.LP +\fBSLURM_NO_CHANGE_IN_DATA\fR Data has not changed since \fBupdate_time\fR. +.LP +\fBSLURM_PROTOCOL_VERSION_ERROR\fR Protocol version has changed, re\-link +your code. +.LP +\fBSLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT\fR Timeout in communicating with +SLURM controller. + +.SH "EXAMPLE" +.LP +#include +.br +#include +.br +#include +.LP +int main (int argc, char *argv[]) +.br +{ +.br + int i; +.br + front_end_info_msg_t *front_end_info_ptr = NULL; +.br + front_end_info_t *front_end_ptr; +.LP + /* get and dump some node information */ +.br + if ( slurm_load_front_end ((time_t) NULL, +.br + &front_end_buffer_ptr) ) { +.br + slurm_perror ("slurm_load_front_end error"); +.br + exit (1); +.br + } +.LP + /* The easy way to print... */ +.br + slurm_print_front_end_info_msg (stdout, front_end_buffer_ptr, 0); +.LP + /* A harder way.. */ +.br + for (i = 0; i < front_end_buffer_ptr\->record_count; i++) { +.br + front_end_ptr = &front_end_buffer_ptr\->front_end_array[i]; +.br + slurm_print_front_end_table(stdout, front_end_ptr, 0); +.br + } +.LP + /* The hardest way. */ +.br + for (i = 0; i < front_end_buffer_ptr\->front_end_count; i++) { +.br + printf ("FrontEndName=%s StateCode=%u\\n", +.br + front_end_buffer_ptr\->front_end_array[i].name, +.br + front_end_buffer_ptr\->front_end_array[i].node_state); +.br + } +.br + slurm_free_front_end_info_msg (front_end_buffer_ptr); +.br + exit (0); +.br +} + +.SH "NOTES" +These functions are included in the libslurm library, +which must be linked to your process for use +(e.g. "cc \-lslurm myprog.c"). +.LP +Some data structures contain index values to cross\-reference each other. +If the \fIshow_flags\fP argument is not set to SHOW_ALL when getting this +data, these index values will be invalid. + +.SH "COPYING" +Copyright (C) 2010 Lawrence Livermore National Security. +Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). +CODE\-OCEC\-09\-009. All rights reserved. +.LP +This file is part of SLURM, a resource management program. +For details, see . +.LP +SLURM is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) +any later version. +.LP +SLURM is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. +.SH "SEE ALSO" +.LP +\fBscontrol\fR(1), +\fBslurm_get_errno\fR(3), \fBslurm_load_node\fR(3), +\fBslurm_perror\fR(3), \fBslurm_strerror\fR(3) + diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_free_job_info_msg.3 slurm-llnl-2.3.2/doc/man/man3/slurm_free_job_info_msg.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_free_job_info_msg.3 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_free_job_info_msg.3 2011-12-05 17:20:08.000000000 +0000 @@ -289,6 +289,8 @@ .LP #include .br +#include +.br #include .br #include @@ -301,7 +303,7 @@ .br int i; .br - job_info_msg_t * job_info_msg = NULL; + job_info_msg_t * job_buffer_ptr = NULL; .br job_info_t * job_ptr; .br @@ -321,7 +323,7 @@ .LP /* The easy way to print... */ .br - slurm_print_job_info_msg (stdout, job_buffer_ptr); + slurm_print_job_info_msg (stdout, job_buffer_ptr, 0); .LP /* A harder way.. */ .br @@ -329,7 +331,7 @@ .br job_ptr = &job_buffer_ptr\->job_array[i]; .br - slurm_print_job_info(stdout, job_ptr); + slurm_print_job_info(stdout, job_ptr, 1); .br } .LP @@ -353,21 +355,21 @@ .LP if (job_buffer_ptr\->record_count >= 1) { .br - uint16_t rotate; + uint16_t nodes; .br if (slurm_get_select_jobinfo( .br job_buffer_ptr\->job_array[0].select_jobinfo, .br - SELECT_DATA_ROTATE, + SELECT_JOBDATA_NODE_CNT, .br - &rotate) == SLURM_SUCCESS) + &nodes) == SLURM_SUCCESS) .br - printf("JobId=%u Rotate=%u\\n", + printf("JobId=%u Nodes=%u\\n", .br job_buffer_ptr\->job_array[0].job_id, .br - rotate); + nodes); .br } .LP @@ -380,7 +382,7 @@ else .br printf ("Slurm job id = %u\\n", job_id); -.br +.LP exit (0); .br } @@ -404,7 +406,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_free_job_step_info_response_msg.3 slurm-llnl-2.3.2/doc/man/man3/slurm_free_job_step_info_response_msg.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_free_job_step_info_response_msg.3 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_free_job_step_info_response_msg.3 2011-12-05 17:20:08.000000000 +0000 @@ -123,6 +123,8 @@ .LP #include .br +#include +.br #include .br #include @@ -153,15 +155,15 @@ .br slurm_print_job_step_info_msg (stdout, .br - step_info_ptr); + step_info_ptr, 0); .LP /* A harder way.. */ .br - for (i = 0; i < step_info_ptr\->record_count; i++) { + for (i = 0; i < step_info_ptr\->job_step_count; i++) { .br step_ptr = &step_info_ptr\->job_steps[i]; .br - slurm_print_job_step_info(stdout, step_ptr); + slurm_print_job_step_info(stdout, step_ptr, 0); .br } .LP @@ -207,7 +209,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_free_node_info.3 slurm-llnl-2.3.2/doc/man/man3/slurm_free_node_info.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_free_node_info.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_free_node_info.3 2011-12-05 17:20:08.000000000 +0000 @@ -256,7 +256,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_free_partition_info.3 slurm-llnl-2.3.2/doc/man/man3/slurm_free_partition_info.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_free_partition_info.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_free_partition_info.3 2011-12-05 17:20:08.000000000 +0000 @@ -194,7 +194,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_get_errno.3 slurm-llnl-2.3.2/doc/man/man3/slurm_get_errno.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_get_errno.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_get_errno.3 2011-12-05 17:20:08.000000000 +0000 @@ -77,7 +77,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_hostlist_create.3 slurm-llnl-2.3.2/doc/man/man3/slurm_hostlist_create.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_hostlist_create.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_hostlist_create.3 2011-12-05 17:20:08.000000000 +0000 @@ -111,7 +111,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_init_update_front_end_msg.3 slurm-llnl-2.3.2/doc/man/man3/slurm_init_update_front_end_msg.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_init_update_front_end_msg.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_init_update_front_end_msg.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1 @@ +.so man3/slurm_reconfigure.3 diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_job_step_create.3 slurm-llnl-2.3.2/doc/man/man3/slurm_job_step_create.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_job_step_create.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_job_step_create.3 2011-12-05 17:20:08.000000000 +0000 @@ -78,7 +78,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_kill_job.3 slurm-llnl-2.3.2/doc/man/man3/slurm_kill_job.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_kill_job.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_kill_job.3 2011-12-05 17:20:08.000000000 +0000 @@ -128,7 +128,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_load_front_end.3 slurm-llnl-2.3.2/doc/man/man3/slurm_load_front_end.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_load_front_end.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_load_front_end.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1 @@ +.so man3/slurm_free_front_end_info_msg.3 diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_load_reservations.3 slurm-llnl-2.3.2/doc/man/man3/slurm_load_reservations.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_load_reservations.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_load_reservations.3 2011-12-05 17:20:08.000000000 +0000 @@ -194,7 +194,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_print_front_end_info_msg.3 slurm-llnl-2.3.2/doc/man/man3/slurm_print_front_end_info_msg.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_print_front_end_info_msg.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_print_front_end_info_msg.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1 @@ +.so man3/slurm_free_front_end_info_msg.3 diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_print_front_end_table.3 slurm-llnl-2.3.2/doc/man/man3/slurm_print_front_end_table.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_print_front_end_table.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_print_front_end_table.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1 @@ +.so man3/slurm_free_front_end_info_msg.3 diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_reconfigure.3 slurm-llnl-2.3.2/doc/man/man3/slurm_reconfigure.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_reconfigure.3 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_reconfigure.3 2011-12-05 17:20:08.000000000 +0000 @@ -19,7 +19,7 @@ .LP int \fBslurm_create_reservation\fR ( .br - reserve_request_msg_t *\fIupdate_resv_msg_ptr\fP + resv_desc_msg_t *\fIupdate_resv_msg_ptr\fP .br ); .LP @@ -35,6 +35,12 @@ .br ); .LP +void \fBslurm_init_front_end_msg\fR ( +.br + update_front_end_msg_t *\fIupdate_front_end_msg_ptr\fP +.br +); +.LP void \fBslurm_init_part_desc_msg\fR ( .br update_part_msg_t *\fIupdate_part_msg_ptr\fP @@ -43,7 +49,13 @@ .LP void \fBslurm_init_resv_desc_msg\fR ( .br - reserve_request_msg_t *\fIupdate_resv_msg_ptr\fP + resv_desc_msg_t *\fIupdate_resv_msg_ptr\fP +.br +); +.LP +void \fBslurm_init_update_node_msg\fR( +.br + update_node_msg_t *\fIupdate_node_msg_ptr\fP .br ); .LP @@ -57,9 +69,9 @@ .LP int \fBslurm_takeover\fR ( ); .LP -void \fBslurm_init_update_node_msg\fR( +int \fBslurm_update_front_end\fR ( .br - update_node_msg_t *\fIupdate_node_msg_ptr\fP + update_front_end_msg_t *\fIupdate_front_end_msg_ptr\fP .br ); .LP @@ -77,7 +89,7 @@ .LP int \fBslurm_update_reservation\fR ( .br - reserve_request_msg_t *\fIupdate_resv_msg_ptr\fP + resv_desc_msg_t *\fIupdate_resv_msg_ptr\fP .br ); .SH "ARGUMENTS" @@ -98,6 +110,10 @@ Specifies the pointer to a reservation delete request specification. See slurm.h for full details on the data structure's contents. .TP +\fIupdate_front_end_msg_ptr\fP +Specifies the pointer to a front end node update request specification. +See slurm.h for full details on the data structure's contents. +.TP \fIupdate_node_msg_ptr\fP Specifies the pointer to a node update request specification. See slurm.h for full details on the data structure's contents. @@ -109,6 +125,7 @@ \fIupdate_resv_msg_ptr\fP Specifies the pointer to a reservation create or update request specification. See slurm.h for full details on the data structure's contents. + .SH "DESCRIPTION" .LP \fBslurm_create_partition\fR Request that a new partition be created. @@ -135,6 +152,12 @@ \fBslurm_delete_reservation\fR Request that the specified reservation be deleted. This function may only be successfully executed by user root. .LP +\fBslurm_init_update_front_end_msg\fR Initialize the contents of an update +front end node descriptor with default values. Note: +\fBslurm_init_update_front_end_msg\fR is not equivalent to setting the data +structure values to zero. Execute this function before executing +\fBslurm_update_front_end\fR. +.LP \fBslurm_init_part_desc_msg\fR Initialize the contents of a partition descriptor with default values. Note: \fBslurm_init_part_desc_msg\fR is not equivalent to setting the data structure values to zero. Execute @@ -147,6 +170,11 @@ function before executing \fBslurm_create_reservation\fR or \fBslurm_update_reservation\fR. .LP +\fBslurm_init_update_node_msg\fR Initialize the contents of an update node +descriptor with default values. Note: \fBslurm_init_update_node_msg\fR is +not equivalent to setting the data structure values to zero. Execute +this function before executing \fBslurm_update_node\fR. +.LP \fBslurm_reconfigure\fR Request that the Slurm controller re\-read its configuration file. The new configuration parameters take effect immediately. This function may only be successfully executed by user root. @@ -158,10 +186,11 @@ immediately and the backup controller take over. This function may only be successfully executed by user root. .LP -\fBslurm_init_update_node_msg\fR Initialize the contents of an update mpde -descriptor with default values. Note: \fBslurm_init_update_node_msg\fR is -not equivalent to setting the data structure values to zero. Execute -this function before executing \fBslurm_update_node\fR. +\fBslurm_update_front_end\fR Request that the state of one or more front end +nodes be updated. +This function may only be successfully executed by user root. +If used by some autonomous program, the state value most likely to be used is +\fBNODE_STATE_DRAIN\fR. .LP \fBslurm_update_node\fR Request that the state of one or more nodes be updated. Note that the state of a node (e.g. DRAINING, IDLE, etc.) may be changed, but @@ -194,6 +223,7 @@ the parameters to be changed. Note: \fBslurm_init_resv_desc_msg\fR is not equivalent to setting the data structure values to zero. This function may only be successfully executed by user root. + .SH "RETURN VALUE" .LP On success, zero is returned. On error, \-1 is returned, and the Slurm error @@ -252,6 +282,8 @@ .LP #include .br +#include +.br #include .br #include @@ -262,11 +294,11 @@ .br update_node_msg_t update_node_msg; .br - partition_desc_msg_t update_part_msg; + update_part_msg_t update_part_msg; .br delete_part_msg_t delete_part_msg; .br - reserve_request_msg_t resv_msg; + resv_desc_msg_t resv_msg; .br char *resv_name = NULL; .LP @@ -316,7 +348,7 @@ .br update_node_msg.node_names = "lx[10\-12]"; .br - update_node_msg.node_state = NODE_STATE_DRAINING ; + update_node_msg.node_state = NODE_STATE_DRAIN ; .br if (slurm_update_node (&update_node_msg)) { .br @@ -359,11 +391,12 @@ .SH "COPYING" Copyright (C) 2002\-2007 The Regents of the University of California. +Copyright (C) 2008\-2010 Lawrence Livermore National Security. Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_resume.3 slurm-llnl-2.3.2/doc/man/man3/slurm_resume.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_resume.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_resume.3 2011-12-05 17:20:08.000000000 +0000 @@ -78,7 +78,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_slurmd_status.3 slurm-llnl-2.3.2/doc/man/man3/slurm_slurmd_status.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_slurmd_status.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_slurmd_status.3 2011-12-05 17:20:08.000000000 +0000 @@ -55,7 +55,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_sprint_front_end_table.3 slurm-llnl-2.3.2/doc/man/man3/slurm_sprint_front_end_table.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_sprint_front_end_table.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_sprint_front_end_table.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1 @@ +.so man3/slurm_free_front_end_info_msg.3 diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_step_ctx_create.3 slurm-llnl-2.3.2/doc/man/man3/slurm_step_ctx_create.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_step_ctx_create.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_step_ctx_create.3 2011-12-05 17:20:08.000000000 +0000 @@ -239,7 +239,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_step_launch.3 slurm-llnl-2.3.2/doc/man/man3/slurm_step_launch.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_step_launch.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_step_launch.3 2011-12-05 17:20:08.000000000 +0000 @@ -233,7 +233,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_update_front_end.3 slurm-llnl-2.3.2/doc/man/man3/slurm_update_front_end.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_update_front_end.3 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_update_front_end.3 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1 @@ +.so man3/slurm_reconfigure.3 diff -Nru slurm-llnl-2.2.7/doc/man/man3/slurm_update_job.3 slurm-llnl-2.3.2/doc/man/man3/slurm_update_job.3 --- slurm-llnl-2.2.7/doc/man/man3/slurm_update_job.3 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man3/slurm_update_job.3 2011-12-05 17:20:08.000000000 +0000 @@ -137,7 +137,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man5/bluegene.conf.5 slurm-llnl-2.3.2/doc/man/man5/bluegene.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/bluegene.conf.5 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/bluegene.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -1,12 +1,15 @@ -.TH "bluegene.conf" "5" "April 2008" "bluegene.conf 2.0" "Slurm configuration file" +.TH "bluegene.conf" "5" "August 2011" "bluegene.conf 2.3" "SLURM configuration file" + .SH "NAME" -bluegene.conf \- Slurm configuration file for BlueGene systems +bluegene.conf \- SLURM configuration file for BlueGene systems + .SH "DESCRIPTION" -\fB/etc/bluegene.conf\fP is an ASCII file which describes BlueGene specific +\fBbluegene.conf\fP is an ASCII file which describes IBM BlueGene specific SLURM configuration information. This includes specifications for bgblock layout, configuration, logging, etc. The file location can be modified at system build time using the -DEFAULT_SLURM_CONF parameter. The file will always be located in the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The file will always be located in the same directory as the \fBslurm.conf\fP file. .LP Parameter names are case insensitive. @@ -17,33 +20,36 @@ the slurmctld daemon. "scontrol reconfigure" does nothing with this file. Changes will only take place after a restart of the controller. .LP +There are some differences between BlueGene/L, BlueGene/P and BlueGene/Q +systems with respects to the contents of the bluegene.conf file. -There are some differences between Bluegene/L and Bluegene/P in respects to the contents of the bluegene.conf file. - -.SH "The Bluegene/L specific options are:" +.SH "The BlueGene/L specific options are:" .TP \fBAltBlrtsImage\fR -Alternative BlrtsImage. This is an optional field only used for -mulitple images on a system and should be followed by a Groups= with -the user groups allowed to use this image (i.e. Groups=da,jette) if -Groups= is not stated then this image will be able to be used by all -groups. You can put as many alternative images as you want in the conf file. +Alternative BlrtsImage. This is an optional field only used for multiple +images on a system and should be followed by a Groups option indicating +the user groups allowed to use this image (i.e. Groups=da,jette). If +Groups is not specified then this image will be usable by all +groups. You can put as many alternative images as you want in the +bluegene.conf file. .TP \fBAltLinuxImage\fR -Alternative LinuxImage. This is an optional field only used for -mulitple images on a system and should be followed by a Groups= with -the user groups allowed to use this image (i.e. Groups=da,jette) if -Groups= is not stated then this image will be able to be used by all -groups. You can put as many alternative images as you want in the conf file. +Alternative LinuxImage. This is an optional field only used for multiple +images on a system and should be followed by a Groups option indicating +the user groups allowed to use this image (i.e. Groups=da,jette). If +Groups is not specified then this image will be usable by all +groups. You can put as many alternative images as you want in the +bluegene.conf file. .TP \fBAltRamDiskImage\fR -Alternative RamDiskImage. This is an optional field only used for -mulitple images on a system and should be followed by a Groups= with -the user groups allowed to use this image (i.e. Groups=da,jette) if -Groups= is not stated then this image will be able to be used by all -groups. You can put as many alternative images as you want in the conf file. +Alternative RamDiskImage. This is an optional field only used for multiple +images on a system and should be followed by a Groups option indicating +the user groups allowed to use this image (i.e. Groups=da,jette). If +Groups is not specified then this image will be usable by all +groups. You can put as many alternative images as you want in the +bluegene.conf file. .TP \fBBlrtsImage\fR @@ -60,21 +66,21 @@ RamDiskImage used for creation of all bgblocks. There is no default value and this must be specified. -.SH "The Bluegene/P specific options are:" +.SH "The BlueGene/P specific options are:" .TP \fBAltCnloadImage\fR -Alternative CnloadImage. This is an optional field only used for -mulitple images on a system and should be followed by a Groups= with -the user groups allowed to use this image (i.e. Groups=da,jette) if -Groups= is not stated then this image will be able to be used by all +Alternative CnloadImage. This is an optional field only used for multiple +images on a system and should be followed by a Groups option indicating +the user groups allowed to use this image (i.e. Groups=da,jette). If +Groups is not specified then this image will be usable by all groups. You can put as many alternative images as you want in the conf file. .TP \fBAltIoloadImage\fR -Alternative IoloadImage. This is an optional field only used for -mulitple images on a system and should be followed by a Groups= with -the user groups allowed to use this image (i.e. Groups=da,jette) if -Groups= is not stated then this image will be able to be used by all +Alternative IoloadImage. This is an optional field only used for multiple +images on a system and should be followed by a Groups option indicating +the user groups allowed to use this image (i.e. Groups=da,jette). If +Groups is not specified then this image will be usable by all groups. You can put as many alternative images as you want in the conf file. .TP @@ -87,20 +93,19 @@ IoloadImage used for creation of all bgblocks. There is no default value and this must be specified. -.SH "All options below are common on all Bluegene systems:" +.SH "All options below are common on all BlueGene systems:" .TP \fBAltMloaderImage\fR -Alternative MloaderImage. This is an optional field only used for -mulitple images on a system and should be followed by a Groups= with -the user groups allowed to use this image (i.e. Groups=da,jette) if -Groups= is not stated then this image will be able to be used by all +Alternative MloaderImage. This is an optional field only used for multiple +images on a system and should be followed by a Groups option indicating +the user groups allowed to use this image (i.e. Groups=da,jette). If +Groups is not specified then this image will be usable by all groups. You can put as many alternative images as you want in the conf file. .TP \fBBasePartitionNodeCount\fR -The number of c\-nodes per base partition. -There is no default value and this must be specified. (For bgl systems this -is usually 512) +The number of c\-nodes (compute nodes) per base partition. +There is no default value and this must be specified (usually 512). .TP \fBBridgeAPILogFile\fR @@ -116,33 +121,39 @@ .TP \fB0\fR: Log only error and warning messages .TP -\fB1\fR: Log level 0 and information messasges +\fB1\fR: Log level 0 plus information messages .TP -\fB2\fR: Log level 1 and basic debug messages +\fB2\fR: Log level 1 plus basic debug messages .TP -\fB3\fR: Log level 2 and more debug message +\fB3\fR: Log level 2 plus more debug message .TP \fB4\fR: Log all messages .RE .TP \fBDenyPassthrough\fR -Specify which dimsions you do not want to allow pass throughs. Valid options are X, Y, Z or all. -example: If you don't want to allow passthroughs in the X and Y diminsions you would specify DenyPassthrough=X,Y +Specify which dimensions you do not want to allow pass\-throughs. +Valid options are A, X, Y, Z or all ("A" applies only to BlueGene/Q systems). +For example, to prevent pass\-throughs in the X and Y dimensions you would +specify "DenyPassthrough=X,Y". +By default, pass\-throughs are enabled in every dimension. .TP \fBLayoutMode\fR Describes how SLURM should create bgblocks. .RS +.TP 10 +\fBSTATIC\fR: +Create and use the defined non\-overlapping bgblocks. .TP -\fBSTATIC\fR: Create and use the defined non\-overlapping bgblocks. -.TP -\fBOVERLAP\fR: Create and use the defined bgblocks, which may overlap. +\fBOVERLAP\fR: +Create and use the defined bgblocks, which may overlap. It is highly recommended that none of the bgblocks have any passthroughs in the X\-dimension. \fBUse this mode with extreme caution.\fR .TP -\fBDYNAMIC\fR: Create and use bglblocks as needed for each job. +\fBDYNAMIC\fR: +Create and use bgblocks as needed for each job. Bgblocks will not be defined in the bluegene.conf file. Dynamic partitioning may introduce fragmentation of resources and starvation of larger jobs. @@ -157,25 +168,26 @@ .TP \fBNodeCardNodeCount\fR Number of c\-nodes per node card. -There is no default value and this must be specified. (For bgl systems this -is usually 32) +There is no default value and this must be specified. For BlueGene/L systems +this is usually 32. .TP \fBNumPsets\fR The Numpsets used for creation of all bgblocks. This value really means the -number of IOnodes on a base partition. This number must be the smallest +number of IO nodes on a base partition. This number must be the smallest number if you have a heterogeneous system. There is no default value and this must be specified. The typical settings -for bgl systems goes as follows... For IO rich systems 64 is the value that +for BlueGene/L systems are as follows: For IO rich systems, 64 is the value that should be used to create small blocks. For systems that are not IO rich, or -you do not wish to create small blocks, 8 is usually the number to use. -For bgp IO rich systems 32 is the value that should be used to create small -blocks since you can only have 2 ionodes per nodecard instead of 4 like on bgl. +for which small blocks are not desirable, 8 is usually the number to use. +For BlueGene/P IO rich systems, 32 is the value that should be used to create +small blocks since there are only 2 IO nodes per nodecard instead of 4 as on +BlueGene/L. .LP Each bgblock is defined by the base partitions used to construct it. -Ordering is very important for laying out switch wires. Please create -blocks with smap, and once done don't change the order of blocks created. +Ordering is very important for laying out switch wires. Please use the smap +tool to define blocks and do not change the order of blocks created. A bgblock is implicitly created containing all resources on the system. Bgblocks must not overlap in static mode (except for implicitly created bgblock). This will be the case when smap is used to create @@ -186,23 +198,27 @@ .TP \fBBPs\fR -Define the XYZ coordinates of the bgblock end points. +Define the coordinates of the bgblock end points. +For BlueGene/L and BlueGene/P systems there will be three coordinates (X, Y, and Z). +For BlueGene/Q systems there will be for coordinates (A, X, Y, and Z). .TP \fBType\fR Define the network connection type for the bgblock. The default value is TORUS. .RS +.TP 8 +\fBMESH\fR: +Communication occur over a mesh. .TP -\fBMESH\fR: Communication occur over a mesh. -.TP -\fBSMALL\fR: The base partition is divided into more than one bgblock. +\fBSMALL\fR: +The base partition is divided into more than one bgblock. The administrator should define the number of single node cards and quarter base partition blocks using the options \fB32CNBlocks\fR and -\fB128CNBlocks\fR respectively for a Bluegene L system. \fB16CNBlocks\fR, +\fB128CNBlocks\fR respectively for a BlueGene/L system. \fB16CNBlocks\fR, \fB64CNBlocks\fR, and \fB256CNBlocks\fR are also available for -Bluegene P systems. Keep in mind you -must have enough ionodes to make all these configurations possible. +BlueGene/P systems. Keep in mind you +must have enough IO nodes to make all these configurations possible. The total number of c\-nodes in defined blocks must not exceed \fBBasePartitionNodeCnt\fR. @@ -210,8 +226,8 @@ blocks. See example below. .TP -\fBTORUS\fR: Communications occur over a torus (end\-points of network -directly connect. +\fBTORUS\fR: +Communications occur over a torus (end\-points of network directly connect. .RE .SH "EXAMPLE" @@ -247,7 +263,7 @@ .br ################################################################## .br -# LEAVE AS COMMENT, Full\-system bglblock, implicitly created +# LEAVE AS COMMENT, Full\-system bgblock, implicitly created .br # BPs=[000x333] Type=TORUS # 4x4x4 = 64 midplanes .br @@ -268,12 +284,12 @@ BPs=[333] Type=SMALL 32CNBlocks=4 128CNBlocks=3 # 1/16 * 4 + 1/4 * 3 .SH "COPYING" -Copyright (C) 2006 The Regents of the University of California. +Copyright (C) 2006-2010 The Regents of the University of California. Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -288,4 +304,4 @@ /etc/bluegene.conf .SH "SEE ALSO" .LP -\fBslurm.conf\fR(5) +\fBsmap\fR(1), \fBslurm.conf\fR(5) diff -Nru slurm-llnl-2.2.7/doc/man/man5/cgroup.conf.5 slurm-llnl-2.3.2/doc/man/man5/cgroup.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/cgroup.conf.5 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/cgroup.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -1,13 +1,17 @@ -.TH "cgroup.conf" "5" "February 2010" "cgroup.conf 2.2" "Slurm configuration file" +.TH "cgroup.conf" "5" "December 2010" "cgroup.conf 2.2" \ +"Slurm cgroup configuration file" .SH "NAME" cgroup.conf \- Slurm configuration file for the cgroup support .SH "DESCRIPTION" -\fB/etc/cgroup.conf\fP is an ASCII file which defines parameters used by -Slurm's proctrack/cgroup plugin in support of Linux cgroups being used as a -job container. The file will always be located in the same directory as the -\fBslurm.conf\fP file. + +\fBcgroup.conf\fP is an ASCII file which defines parameters used by +Slurm's Linux cgroup related plugins. +The file location can be modified at system build time using the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The file will always be located in the +same directory as the \fBslurm.conf\fP file. .LP Parameter names are case insensitive. Any text following a "#" in the configuration file is treated @@ -17,78 +21,164 @@ SLURM daemons, daemon receipt of the SIGHUP signal, or execution of the command "scontrol reconfigure" unless otherwise noted. .LP -Slurm cgroup proctrack plugin creates a hierarchical set of +Two cgroup plugins are currently available in SLURM. The first +one is a proctrack plugin, the second one a task plugin. + +.LP +The following cgroup.conf parameters are defined to control the general behavior +of Slurm cgroup plugins. + +.TP +\fBCgroupMountpoint\fR=\fIPATH\fR +Specify the \fIPATH\fR under which cgroups should be mounted. This +should be a writable directory which will contain cgroups mounted +one per subsystem. The default \fIPATH\fR is /cgroup. + +.TP +\fBCgroupAutomount\fR= +Slurm cgroup plugins require valid and functional cgroup subsystem to be mounted +under /cgroup/. +When launched, plugins check their subsystem availability. If not available, +the plugin launch fails unless CgroupAutomount is set to yes. In that case, the +plugin will first try to mount the required subsystems. + +.TP +\fBCgroupReleaseAgentDir\fR= +Used to tune the cgroup system behavior. This parameter identifies the location +of the directory containing Slurm cgroup release_agent files. A release_agent file +is required for each mounted subsystem. The release_agent file name must have the +following format: release_. For instance, the release_agent file +for the cpuset subsystem must be named release_cpuset. See also CLEANUP OF +CGROUPS below. + +.SH "PROCTRACK/CGROUP PLUGIN" + +Slurm \fBproctrack/cgroup\fP plugin is used to track processes using the +freezer control group subsystem. It creates a hierarchical set of directories for each step, putting the step tasks into the leaf. +.LP This directory structure is like the following: .br -/dev/cgroup/slurm/uid_%uid/job_%jobid/step_%stepid +/cgroup/freezer/uid_%uid/job_%jobid/step_%stepid .LP -Slurm cgroup proctrack plugin can constrain cores, RAM and swap space for -jobs and set a variety of default job and job step parameters for cgroups. +Slurm cgroup proctrack plugin is enabled with the following parameter +in slurm.conf: +.br +ProctrackType=proctrack/cgroup + .LP -The configuration parameters available include: +No particular cgroup.conf parameter is defined to control the behavior +of this particular plugin. -.TP -\fBAllowedRAMSpace\fR= -Constrain the job cgroup RAM to this percentage of the allocated memory. -The default value is 100. -If the limit is exceeded, the job steps will be killed and a warning message -will be written to standard error. -Also see \fBConstrainRAMSpace\fR. +.SH "TASK/CGROUP PLUGIN" -.TP -\fBAllowedSwapSpace\fR= -Constrain the job cgroup swap space to this percentage of the allocated memory. -The default value is 0. -If the limit is exceeded, the job steps will be killed and a warning message -will be written to standard error. -Also see \fBConstrainSwapSpace\fR. +.LP +Slurm \fBtask/cgroup\fP plugin is used to enforce allocated resources +constraints, thus avoiding tasks to use unallocated resources. It currently +only uses cpuset subsystem but could use memory and devices subsystems in a +near future too. -.TP -\fBCgroupAutomount\fR= -Slurm cgroup plugins require a valid and functional cgroup system mounted on -/dev/cgroup. When launched, plugins check cgroup availability. If cgroup is -not available, the plugin launch fails unless CgroupAutomount is set to yes. -In that case, the plugin will first try to mount the cgroup system. +.LP +It creates a hierarchical set of directories for each task and subsystem. +The directory structure is like the following: +.br +/cgroup/%subsys/uid_%uid/job_%jobid/step_%stepid/task_%taskid -.TP -\fBCgroupMountOptions\fR= -Used to tune the cgroup system behavior. +.LP +Slurm cgroup task plugin is enabled with the following parameter +in slurm.conf: +.br +TaskPlugin=task/cgroup -.TP -\fBCgroupReleaseAgent\fR= -Used to tune the cgroup system behavior. +.LP +The following cgroup.conf parameters are defined to control the behavior +of this particular plugin: .TP \fBConstrainCores\fR= If configured to "yes" then constrain allowed cores to the subset of -allocated resources. +allocated resources. It uses the cpuset subsystem. +The default value is "no". +.TP +\fBTaskAffinity\fR= +If configured to "yes" then set a default task affinity to bind each step +task to a subset of the allocated cores using \fBsched_setaffinity\fP. The default value is "no". +.LP +The following cgroup.conf parameters could be defined to control the behavior +of this particular plugin in a next version where memory and devices support +would be added : + +.TP +\fBAllowedRAMSpace\fR= +Constrain the job cgroup RAM to this percentage of the allocated memory. +The default value is 100. If SLURM is not allocating memory to jobs, +The percentage supplied may be expressed as floating point +number, e.g. 98.5. If the \fBAllowedRAMSpace\fR limit is exceeded, the +job steps will be killed and a warning message will be written to standard +error. Also see \fBConstrainRAMSpace\fR. + +.TP +\fBAllowedSwapSpace\fR= +Constrain the job cgroup swap space to this percentage of the allocated +memory. The default value is 0, which means that RAM+Swap will be limited +to \fBAllowedRAMSpace\fR. The supplied percentage may be expressed as a +floating point number, e.g. 50.5. If the limit is exceeded, the job steps +will be killed and a warning message will be written to standard error. +Also see \fBConstrainSwapSpace\fR. + .TP \fBConstrainRAMSpace\fR= -If configured to "yes" then constraing the job's RAM usage. +If configured to "yes" then constrain the job's RAM usage. The default value is "no". Also see \fBAllowedRAMSpace\fR. .TP \fBConstrainSwapSpace\fR= -If configured to "yes" then constraing the job's swap space usage. +If configured to "yes" then constrain the job's swap space usage. The default value is "no". Also see \fBAllowedSwapSpace\fR. .TP -\fBJobCgroupParams\fR= -Used to tune job cgroup. The format of the parameter is the following: -"a=b c=d e=f" where a,c,d corresponds to files under the cgroup -directory and b,d,f the values to write in these files. +\fBMaxRAMPercent\fR=\fIPERCENT\fR +Set an upper bound in percent of total RAM on the RAM constraint for a job. +This will be the memory constraint applied to jobs that are not explicitly +allocated memory by SLURM. The \fIPERCENT\fR may be an arbitrary floating +point number. The default value is 100. .TP -\fBJobStepCgroupParams\fR= -Used to tune job step cgroup. The format of the parameter is the following: -"a=b c=d e=f" where a,c,d corresponds to files under the cgroup -directory and b,d,f the values to write in these files. +\fBMaxSwapPercent\fR=\fIPERCENT\fR +Set an upper bound (in percent of total RAM) on the amount of RAM+Swap +that may be used for a job. This will be the swap limit applied to jobs +on systems where memory is not being explicitly allocated to job. The +\fIPERCENT\fR may be an arbitrary floating point number between 0 and 100. +The default value is 100. + +.TP +\fBMinRAMSpace\fR= +Set a lower bound (in MB) on the memory limits defined by +\fBAllowedRAMSpace\fR and \fBAllowedSwapSpace\fR. This prevents +accidentally creating a memory cgroup with such a low limit that slurmstepd +is immediately killed due to lack of RAM. The default limit is 30M. + +.TP +\fBConstrainDevices\fR= +If configured to "yes" then constrain the job's allowed devices based on GRES +allocated resources. It uses the devices subsystem for that. +The default value is "no". + +.TP +\fBAllowedDevicesFile\fR= +If the ConstrainDevices field is set to "yes" then this file has to be used to declare +the devices that need to be allowed by default for all the jobs. The current implementation +of cgroup devices subsystem works as a whitelist of entries, which means that in order to +isolate the access of a job upon particular devices we need to allow the access on all +the devices, supported by default and then deny on those that the job does not have the +permission to use. The default value is "/etc/slurm/cgroup_allowed_devices_file.conf". The syntax of +the file accepts one device per line and it permits lines like /dev/sda* or /dev/cpu/*/*. +See also an example of this file in etc/allowed_devices_file.conf.example. .SH "EXAMPLE" @@ -102,41 +192,75 @@ .br CgroupAutomount=yes .br -CgroupMountOptions="memory,cpuset" -.br -CgroupReleaseAgent="/etc/slurm/cgroup.release_agent" +CgroupReleaseAgentDir="/etc/slurm/cgroup" .br -JobCgroupParams="memory.swappiness=30" -.br -JobStepCgroupParams="" +ConstrainCores=yes .br # + +.SH "NOTES" +.LP +Only one instance of a cgroup subsystem is valid at a time in the kernel. +If you try to mount another cgroup hierarchy that uses the same cpuset +subsystem it will fail. +However you can mount another cgroup hierarchy for a different cpuset +subsystem. + +.SH CLEANUP OF CGROUPS +.LP +To allow cgroups to be removed automatically when they are no longer in use +the notify_on_release flag is set in each cgroup when the cgroup is +instantiated. The release_agent file for each subsystem is set up when the +subsystem is mounted. The name of each release_agent file is +release_. The directory is specified via the +CgroupReleaseAgentDir parameter in cgroup.conf. A simple release agent +mechanism to remove slurm cgroups when they become empty may be set up by +creating the release agent files for each required subsystem as symbolic +links to a common release agent script, as shown in the example below: + +[sulu] (slurm) etc> cat cgroup.conf | grep CgroupReleaseAgentDir .br -# Constrain RAM at 100% of allocation and +CgroupReleaseAgentDir="/etc/slurm/cgroup" .br -# Total space (RAM + swap) at 110% of allocation + +[sulu] (slurm) etc> ls \-al /etc/slurm/cgroup .br -# +total 12 .br -ConstrainRAMSpace=yes +drwxr-xr-x 2 root root 4096 2010-04-23 14:55 . .br -AllowedRAMSpace=100 +drwxr-xr-x 4 root root 4096 2010-07-22 14:48 .. .br -ConstrainSwapSpace=yes +\-rwxrwxrwx 1 root root 234 2010-04-23 14:52 release_common .br -AllowedSwapSpace=10 +lrwxrwxrwx 1 root root 32 2010-04-23 11:04 release_cpuset -> /etc/slurm/cgroup/release_common .br -ConstrainCores=yes +lrwxrwxrwx 1 root root 32 2010-04-23 11:03 release_freezer -> /etc/slurm/cgroup/release_common -.SH "NOTES" -Proctrack/cgroup is not compatible with the task/affinity plugin configured -to use cpusets, although this may be addressed in the future. -.LP -Only one instance of a cgroup subsystem is valid at a time in the kernel. -If you try to mount another cgroup hierarchy that uses the same cpuset -subsystem it will fail. -However you can mount another cgroup hierarchy for a different cpuset -subsystem. +[sulu] (slurm) etc> cat /etc/slurm/cgroup/release_common +.br +#!/bin/bash +.br +base_path=/cgroup +.br +progname=$(basename $0) +.br +subsystem=${progname##*_} +.br +.br +rmcg=${base_path}/${subsystem}$@ +.br +uidcg=${rmcg%/job*} +.br +if [[ \-d ${base_path}/${subsystem} ]] +.br +then +.br + flock \-x ${uidcg} \-c "rmdir ${rmcg}" +.br +fi +.br +[sulu] (slurm) etc> .SH "COPYING" Copyright (C) 2010 Lawrence Livermore National Security. @@ -144,7 +268,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man5/cray.conf.5 slurm-llnl-2.3.2/doc/man/man5/cray.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/cray.conf.5 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/cray.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,112 @@ +.TH "cray.conf" "5" "August 2011" "cray.conf 2.3" "Slurm configuration file" + +.SH "NAME" +cray.conf \- Slurm configuration file for the Cray\-specific information + +.SH "DESCRIPTION" +\fBcray.conf\fP is an ASCII file which defines parameters used by +Slurm's select/cray plugin in support of Cray systems. +The file location can be modified at system build time using the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The file will always be located in the +same directory as the \fBslurm.conf\fP file. +The default configuration parameters will work properly in a typical +installation and this file will not be required. +.LP +Parameter names are case insensitive. +Any text following a "#" in the configuration file is treated +as a comment through the end of that line. +The size of each line in the file is limited to 1024 characters. +Changes to the configuration file take effect upon restart of +SLURM daemons, daemon receipt of the SIGHUP signal, or execution +of the command "scontrol reconfigure" unless otherwise noted. +.LP +The configuration parameters available include: + +.TP +\fBAlpsDir\fR= +Fully qualified pathname of the directory in which ALPS is installed. +The default value is \fI/usr\fR. + +.TP +\fBapbasil\fR= +Fully qualified pathname to the apbasil command. +The default value is \fI/usr/bin/apbasil\fR. + +.TP +\fBapkill\fR= +Fully qualified pathname to the apkill command. +The default value is \fI/usr/bin/apbasil\fR. + +.TP +\fBSDBdb\fR= +Name of the ALPS database. +The default value is \fIXTAdmin\fR. + +.TP +\fBSDBhost\fR= +Hostname of the database server. +The default value is \fIsdb\fR. + +.TP +\fBSDBpass\fR= +Password used to access the ALPS database. +The default value is NULL, which will load the password from the \fImy.cnf\fR file. + +.TP +\fBSDBport\fR= +Port used to access the ALPS database. +The default value is 0. + +.TP +\fBSDBuser\fR= +Name of user used to access the ALPS database. +The default value is NULL, which will load the user name from the \fImy.cnf\fR file. + +.TP +\fBSyncTimeout\fR= +SLURM does not normally schedule jobs while its job or node state information +is out of synchronization with that of ALPS. This parameter specifies a maximum +time to defer job scheduling while waiting for consistent state. The +inconsistent state might be caused by a variety of hardware or software +failures and proceeding could result in more failures. The default value is +3600 (one hour). A value of zero will wait indefinitely for consistent state. + +.SH "EXAMPLE" +.LP +.br +### +.br +# Slurm Cray support configuration file +.br +### +.br +apbasil=/opt/alps_simulator_40_r6768/apbasil.sh +.br +SDBhost=localhost +.br +SDBuser=alps_user +.br +SDBdb=XT5istanbul + +.SH "COPYING" +Copyright (C) 2011 SchedMD LLC. +Produced at SchedMD LLC (cf, DISCLAIMER). +CODE\-OCEC\-09\-009. All rights reserved. +.LP +This file is part of SLURM, a resource management program. +For details, see . +.LP +SLURM is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your option) +any later version. +.LP +SLURM is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +.SH "SEE ALSO" +.LP +\fBslurm.conf\fR(5) diff -Nru slurm-llnl-2.2.7/doc/man/man5/gres.conf.5 slurm-llnl-2.3.2/doc/man/man5/gres.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/gres.conf.5 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/gres.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -1,14 +1,16 @@ -.TH "gres.conf" "5" "September 2010" "gres.conf 2.2" "Slurm configuration file" +.TH "gres.conf" "5" "September 2011" "gres.conf 2.3" "Slurm configuration file" .SH "NAME" gres.conf \- Slurm configuration file for generic resource management. .SH "DESCRIPTION" -\fB/etc/gres.conf\fP is an ASCII file which describes the configuration +\fBgres.conf\fP is an ASCII file which describes the configuration of generic resources on each compute node. Each node must contain a gres.conf file if generic resources are to be scheduled by SLURM. The file location can be modified at system build time using the -DEFAULT_SLURM_CONF parameter. The file will always be located in the -same directory as the \fBslurm.conf\fP file. +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The file will always be located in the +same directory as the \fBslurm.conf\fP file. If generic resource counts are +set by the gres plugin function node_config_load(), this file may be optional. .LP Parameter names are case insensitive. Any text following a "#" in the configuration file is treated @@ -30,7 +32,7 @@ .TP \fBCPUs\fR Specify the CPU index numbers for the specific CPUs which can -use this resources. For example, it may be strongly preferable +use this resource. For example, it may be strongly preferable to use specific CPUs with specific devices (e.g. on a NUMA architecture). Multiple CPUs may be specified using a comma delimited list or a range may be specified using a "\-" separator @@ -42,7 +44,7 @@ .TP \fBFile\fR Fully qualified pathname of the device files associated with a resource. -The name can include a numberic range suffix to be interpretted by SLURM +The name can include a numberic range suffix to be interpreted by SLURM (e.g. \fIFile=/dev/nvidia[0\-3]\fR). This field is generally required if enforcement of generic resource allocations is to be supported (i.e. prevents a users from making @@ -99,7 +101,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man5/slurm.conf.5 slurm-llnl-2.3.2/doc/man/man5/slurm.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/slurm.conf.5 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/slurm.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -1,25 +1,20 @@ -.TH "slurm.conf" "5" "August 2010" "slurm.conf 2.2" "Slurm configuration file" +.TH "slurm.conf" "5" "September 2011" "slurm.conf 2.3" "Slurm configuration file" .SH "NAME" slurm.conf \- Slurm configuration file .SH "DESCRIPTION" -\fB/etc/slurm.conf\fP is an ASCII file which describes general SLURM +\fBslurm.conf\fP is an ASCII file which describes general SLURM configuration information, the nodes to be managed, information about how those nodes are grouped into partitions, and various scheduling parameters associated with those partitions. This file should be consistent across all nodes in the cluster. .LP -You can use the \fBSLURM_CONF\fR environment variable to override the built\-in -location of this file. The SLURM daemons also allow you to override +The file location can be modified at system build time using the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The SLURM daemons also allow you to override both the built\-in and environment\-provided location using the "\-f" option on the command line. .LP -Note the while SLURM daemons create log files and other files as needed, -it treats the lack of parent directories as a fatal error. -This prevents the daemons from running if critical file systems are -not mounted and will minimize the risk of cold\-starting (starting -without preserving jobs). -.LP The contents of the file are case insensitive except for the names of nodes and partitions. Any text following a "#" in the configuration file is treated as a comment through the end of that line. @@ -37,7 +32,7 @@ The \fIslurm.conf\fR file must be readable by all users of SLURM, since it is used by many of the SLURM commands. Other files that are defined in the \fIslurm.conf\fR file, such as log files and job accounting files, -may need to be created/owned by the "SlurmUser" uid to be successfully +may need to be created/owned by the user "SlurmUser" to be successfully accessed. Use the "chown" and "chmod" commands to set the ownership and permissions appropriately. See the section \fBFILE AND DIRECTORY PERMISSIONS\fR for information @@ -134,6 +129,12 @@ Also see \fBDefaultStorageUser\fR. .TP +\fBAccountingStoreJobComment\fR +If set to "YES" then include the job's comment field in the job +complete message sent to the Accounting Storage database. The default +is "YES". + +.TP \fBAuthType\fR The authentication method for communications between SLURM components. @@ -214,9 +215,6 @@ .TP \fBcheckpoint/ompi\fR OpenMPI (version 1.3 or higher) -.TP -\fBcheckpoint/xlch\fR -XLCH (requires that SlurmUser be root) .RE .TP @@ -297,6 +295,9 @@ \fBCPU_Bind\fR CPU binding details for jobs and steps .TP +\fBFrontEnd\fR +Front end node details +.TP \fBGres\fR Generic resource details .TP @@ -416,6 +417,7 @@ will be rejected at submission time. If set to "NO" then the job will be accepted and remain queued until the partition limits are altered. The default value is "NO". +NOTE: If set, then a job's QOS can not be used to exceed partition limits. .TP \fBEpilog\fR @@ -488,6 +490,7 @@ for each subsequent job. This may be used to provide a meta\-scheduler with a job id space which is disjoint from the interactive jobs. The default value is 1. +Also see \fBMaxJobId\fR .TP \fBGetEnvTimeout\fR @@ -691,16 +694,17 @@ default job parameters and/or logging events. Sample plugins available in the distribution include "cnode", "defaults", "logging", "lua", and "partition". -See the SLURM code in "src/plugins/job_submit" and modify the code to satisfy -your needs. +For examples of use, see the SLURM code in "src/plugins/job_submit" and +"contribs/lua/job_submit*.lua" then modify the code to satisfy your needs. No job submission plugins are used by default. .TP \fBKillOnBadExit\fR If set to 1, the job will be terminated immediately when one of the -processes is crashed or aborted. With default value of 0, if one of +processes is crashed or aborted. With the default value of 0, if one of the processes is crashed or aborted the other processes will continue -to run. +to run. The user can override this configuration parameter by using srun's +\fB\-K\fR, \fB\-\-kill\-on\-bad\-exit\fR. .TP \fBKillWait\fR @@ -740,6 +744,16 @@ of the slurmctld daemon. .TP +\fBMaxJobId\fR +The maximum job id to be used for jobs submitted to SLURM without a +specific requested value. Job id values generated will incremented by 1 +for each subsequent job. This may be used to provide a meta\-scheduler +with a job id space which is disjoint from the interactive jobs. +Once \fBMaxJobId\fR is reached, the next job will be assigned \fBFirstJobId\fR. +The default value is 4294901760 (0xffff0000). +Also see \fBFirstJobId\fR. + +.TP \fBMaxMemPerCPU\fR Maximum real memory size available per allocated CPU in MegaBytes. Used to avoid over\-subscribing memory and causing paging. @@ -767,6 +781,12 @@ not be stored, just collected). .TP +\fBMaxStepCount\fR +The maximum number of steps that any job can initiate. This parameter +is intended to limit the effect of bad batch scripts. +The default value is 40000 steps. + +.TP \fBMaxTasksPerNode\fR Maximum number of tasks SLURM will allow a job step to spawn on a single node. The default \fBMaxTasksPerNode\fR is 128. @@ -801,7 +821,7 @@ \fBnone\fR (default, which works for many other versions of MPI) and \fBopenmpi\fR. More information about MPI use is available here -. +. .TP \fBMpiParams\fR @@ -819,7 +839,7 @@ This is particularly useful for backfill scheduling, which bases upon each job's soft time limit. The default value is zero. -Man not exceed exceed 65533 minutes. +May not exceed exceed 65533 minutes. A value of "UNLIMITED" is also supported. .TP @@ -866,6 +886,9 @@ .TP \fBGANG\fR enables gang scheduling (time slicing) of jobs in the same partition. +NOTE: Gang scheduling is performed independently for each partition, so +configuring partitions with overlapping nodes and gang scheduling is generally +not recommended. .TP \fBREQUEUE\fR preempts jobs by requeuing them (if possible) or canceling them. @@ -875,7 +898,10 @@ A suspended job will resume execution once the high priority job preempting it completes. The \fBSUSPEND\fR may only be used with the \fBGANG\fR option -(the gang scheduler module performs the job resume operation). +(the gang scheduler module performs the job resume operation) +and with \fBPreemptType=preempt/partition_prio\fR (the logic to +suspend and resume jobs current only has the data structures to +support partitions). .RE .TP @@ -1073,12 +1099,15 @@ which uses an AIX kernel extension and is the default for AIX systems .TP \fBproctrack/cgroup\fR -which uses linux cgroups to constrain and track processes. +which uses linux cgroups to constrain and track processes. NOTE: see "man cgroup.conf" for configuration details .TP \fBproctrack/linuxproc\fR which uses linux process tree using parent process IDs .TP +\fBproctrack/lua\fR +which uses a site\-specific LUA script to track processes +.TP \fBproctrack/rms\fR which uses Quadrics kernel patch and is the default if "SwitchType=switch/elan" .TP @@ -1165,7 +1194,7 @@ No limits listed below .TP \fBAS\fR -The maximum address space for a processes +The maximum address space for a process .TP \fBCORE\fR The maximum size of core file @@ -1177,7 +1206,9 @@ The maximum size of a process's data segment .TP \fBFSIZE\fR -The maximum size of files created +The maximum size of files created. Note that if the user sets FSIZE to less +than the current size of the slurmd.log, job launches will fail with +a 'File size limit exceeded' error. .TP \fBMEMLOCK\fR The maximum size that may be locked into memory @@ -1225,7 +1256,7 @@ \fBSuspendRate\fR, \fBSuspendTime\fR, \fBSuspendTimeout\fR, \fBSuspendProgram\fR, \fBSuspendExcNodes\fR, and \fBSuspendExcParts\fR. More information is available at the SLURM web site -(https://computing.llnl.gov/linux/slurm/power_save.html). +( http://www.schedmd.com/slurmdocs/power_save.html ). .TP \fBResumeRate\fR @@ -1251,7 +1282,7 @@ \fBSuspendRate\fR, \fBSuspendTime\fR, \fBSuspendTimeout\fR, \fBSuspendProgram\fR, \fBSuspendExcNodes\fR and \fBSuspendExcParts\fR. More information is available at the SLURM web site -(https://computing.llnl.gov/linux/slurm/power_save.html). +( http://www.schedmd.com/slurmdocs/power_save.html ). .TP \fBResvOverRun\fR @@ -1280,12 +1311,13 @@ A DOWN node will become available for use upon registration with a valid configuration only if it was set DOWN due to being non\-responsive. If the node was set DOWN for any other reason (low memory, prolog failure, -epilog failure, silently rebooting, etc.), its state will not automatically +epilog failure, unexpected reboot, etc.), its state will not automatically be changed. .TP \fB2\fR A DOWN node will become available for use upon registration with a valid configuration. The node could have been set DOWN for any reason. +(Disabled on Cray systems.) .RE .TP @@ -1337,6 +1369,13 @@ The default value is 30 seconds. This option applies only to \fBSchedulerType=sched/backfill\fR. .TP +\fBbf_resolution=#\fR +The number of seconds in the resolution of data maintained about when jobs +begin and end. +Higher values result in less overhead and better responsiveness. +The default value is 60 seconds. +This option applies only to \fBSchedulerType=sched/backfill\fR. +.TP \fBbf_window=#\fR The number of minutes into the future to look when considering jobs to schedule. Higher values result in more overhead and less responsiveness. @@ -1354,6 +1393,10 @@ \fBSelectType=select/cons_res\fR, configuring a relatively small value may be desirable. This option applies only to \fBSchedulerType=sched/backfill\fR. +.TP +\fBmax_switch_wait=#\fR +Maximum number of seconds that a job can delay execution waiting for the +specified desired switch count. The default value is 60 seconds. .RE .TP @@ -1375,6 +1418,7 @@ \fBSchedulerTimeSlice\fR Number of seconds in each time slice when gang scheduling is enabled (\fBPreemptMode=GANG\fR). +The value must be between 5 seconds and 65533 seconds. The default value is 30 seconds. .TP @@ -1419,6 +1463,9 @@ .TP \fBSelectType\fR Identifies the type of resource selection algorithm to be used. +Changing this value can only be done by restarting the slurmctld daemon +and will result in the loss of all job information (running and pending) +since the job state save format used by each plugin is different. Acceptable values include .RS .TP @@ -1438,6 +1485,10 @@ \fBselect/bluegene\fR for a three\-dimensional BlueGene system. The default value is "select/bluegene" for BlueGene systems. +.TP +\fBselect/cray\fR +for a Cray system. +The default value is "select/cray" for all Cray systems. .RE .TP @@ -1457,7 +1508,7 @@ There is no notion of sockets, cores or threads; do not define those values in the node specification. If these are defined, unexpected results will happen when hyper\-threading -is enabled Procs= should be used instead. +is enabled CPUs= should be used instead. On a multi\-core system, each core will be considered a CPU. On a multi\-core and hyper\-threaded system, each thread will be considered a CPU. @@ -1468,7 +1519,7 @@ There is no notion of sockets, cores or threads; do not define those values in the node specification. If these are defined, unexpected results will happen when hyper\-threading -is enabled Procs= should be used instead. +is enabled CPUs= should be used instead. Setting a value for \fBDefMemPerCPU\fR is strongly recommended. .TP \fBCR_Core\fR @@ -1545,7 +1596,8 @@ Fully qualified pathname of a file into which the \fBslurmctld\fR daemon's logs are written. The default value is none (performs logging via syslog). - +.br +See the section \fBLOGGING\fR if a pathname is specified. .TP \fBSlurmctldPidFile\fR Fully qualified pathname of a file into which the \fBslurmctld\fR daemon @@ -1585,6 +1637,8 @@ The default value is none (performs logging via syslog). Any "%h" within the name is replaced with the hostname on which the \fBslurmd\fR is running. +.br +See the section \fBLOGGING\fR if a pathname is specified. .TP \fBSlurmdPidFile\fR @@ -1750,7 +1804,7 @@ \fBResumeTimeout\fR, \fBSuspendRate\fR, \fBSuspendTime\fR, \fBSuspendProgram\fR, \fBSuspendExcNodes\fR and \fBSuspendExcParts\fR. More information is available at the SLURM web site -(https://computing.llnl.gov/linux/slurm/power_save.html). +( http://www.schedmd.com/slurmdocs/power_save.html ). .TP \fBSwitchType\fR @@ -1776,18 +1830,30 @@ \fBTaskPlugin\fR Identifies the type of task launch plugin, typically used to provide resource management within a node (e.g. pinning tasks to specific -processors). -Acceptable values include -"task/none" for systems requiring no special handling and -"task/affinity" to enable the \-\-cpu_bind and/or \-\-mem_bind -srun options. -The default value is "task/none". -If you "task/affinity" and encounter problems, it may be due to +processors). More than one task plugin can be specified in a comma separated +list. The prefix of "task/" is optional. Acceptable values include: +.RS +.TP 15 +\fBtask/affinity\fR +enables resource containment using CPUSETs. +This enables the \-\-cpu_bind and/or \-\-mem_bind srun options. +If you use "task/affinity" and encounter problems, it may be due to the variety of system calls used to implement task affinity on different operating systems. -If that is the case, you may want to use Portable Linux +If that is the case, you may want to install Portable Linux Process Affinity (PLPA, see http://www.open-mpi.org/software/plpa), which is supported by SLURM. +.TP +\fBtask/cgroup\fR +enables resource containment using Linux control cgroups. +This enables the \-\-cpu_bind and/or \-\-mem_bind srun options. +NOTE: see "man cgroup.conf" for configuration details. +.TP +\fBtask/none\fR +for systems requiring no special handling of user tasks. +Lacks support for the \-\-cpu_bind and/or \-\-mem_bind srun options. +The default value is "task/none". +.RE .TP \fBTaskPluginParam\fR @@ -1906,9 +1972,9 @@ systems, best\-fit logic over three\-dimensional topology .TP \fBtopology/node_rank\fR -default for Cray computers, orders nodes based upon information in the -ALPS database and then performs a best\-fit algorithm over over those -ordered nodes +orders nodes based upon information a node_rank field in the node record +as generated by a select plugin. SLURM performs a best\-fit algorithm over +those ordered nodes .TP \fBtopology/none\fR default for other systems, best\-fit logic over one\-dimensional topology @@ -1926,9 +1992,12 @@ \fBTreeWidth\fR \fBSlurmd\fR daemons use a virtual tree network for communications. \fBTreeWidth\fR specifies the width of the tree (i.e. the fanout). -The default value is 50, meaning each slurmd daemon can communicate -with up to 50 other slurmd daemons and over 2500 nodes can be contacted -with two message hops. +On architectures with a front end node running the slurmd daemon, the value +must always be equal to or greater than the number of front end nodes which +eliminates the need for message forwarding between the slurmd daemons. +On other architectures the default value is 50, meaning each slurmd daemon can +communicate with up to 50 other slurmd daemons and over 2500 nodes can be +contacted with two message hops. The default value will work well for most clusters. Optimal system performance can typically be achieved if \fBTreeWidth\fR is set to the square root of the number of nodes in the cluster for @@ -2018,7 +2087,7 @@ against these (relatively few) configuration parameters and possibly avoid having to check job requirements against every individual node's configuration. -The resources checked at node registration time are: Procs, +The resources checked at node registration time are: CPUs, RealMemory and TmpDisk. While baseline values for each of these can be established in the configuration file, the actual values upon node @@ -2137,6 +2206,13 @@ The default value is 1. .TP +\fBCPUs\fR +Number of logical processors on the node (e.g. "2"). +If \fBCPUs\fR is omitted, it will set equal to the product of +\fBSockets\fR, \fBCoresPerSocket\fR, and \fBThreadsPerCore\fR. +The default value is 1. + +.TP \fBFeature\fR A comma delimited list of arbitrary strings indicative of some characteristic associated with the node. @@ -2152,9 +2228,9 @@ A comma delimited list of generic resources specifications for a node. Each resource specification consists of a name followed by an optional colon with a numeric value (default value is one) -(e.g. "Gres=bandwidth:10000,gpus:2"). +(e.g. "Gres=bandwidth:10000,gpu:2"). A suffix of "K", "M" or "G" may be used to mulitply the number by 1024, -1048576 or 1073741824 respectively (e.g. "Gres=bandwidth:4G,gpus:4").. +1048576 or 1073741824 respectively (e.g. "Gres=bandwidth:4G,gpu:4").. By default a node has no generic resources. Also see \fBFeature\fR. @@ -2168,10 +2244,7 @@ .TP \fBProcs\fR -Number of logical processors on the node (e.g. "2"). -If \fBProcs\fR is omitted, it will set equal to the product of -\fBSockets\fR, \fBCoresPerSocket\fR, and \fBThreadsPerCore\fR. -The default value is 1. +See \fBCPUs\fR. .TP \fBRealMemory\fR @@ -2188,7 +2261,7 @@ \fBSockets\fR Number of physical processor sockets/chips on the node (e.g. "2"). If Sockets is omitted, it will be inferred from -\fBProcs\fR, \fBCoresPerSocket\fR, and \fBThreadsPerCore\fR. +\fBCPUs\fR, \fBCoresPerSocket\fR, and \fBThreadsPerCore\fR. \fBNOTE\fR: If you have multi\-core processors, you will likely need to specify these parameters. The default value is 1. @@ -2218,7 +2291,7 @@ resolution of a core. If your system is configured with more than one thread per core, execution of a different job on each thread is not supported unless you configure \fBSelectTypeParameters=CR_CPU\fR -plus \fBProcs\fR; do not configure \fBSockets\fR, \fBCoresPerSocket\fR or +plus \fBCPUs\fR; do not configure \fBSockets\fR, \fBCoresPerSocket\fR or \fBThreadsPerCore\fR. A job can execute a one task per thread from within one job step or execute a distinct job step on each of the threads. @@ -2320,6 +2393,81 @@ .RE .LP +On computers where frontend nodes are used to execute batch scripts +rather than compute nodes (BlueGene or Cray systems), one may +configure one or more frontend nodes using the configuration parameters +defined below. These options are very similar to those used in configuring +compute nodes. These options may only be used on systems configured and built +with the appropriate parameters (\-\-have\-front\-end, +\-\-enable\-bluegene\-emulation) or a system determined to have the +appropriate architecture by the configure script (BlueGene or Cray systems). +The front end configuration specifies the following information: + +.TP +\fBFrontendName\fR +Name that SLURM uses to refer to a frontend node. +Typically this would be the string that "/bin/hostname \-s" returns. +It may also be the fully qualified domain name as returned by "/bin/hostname \-f" +(e.g. "foo1.bar.com"), or any valid domain name associated with the host +through the host database (/etc/hosts) or DNS, depending on the resolver +settings. Note that if the short form of the hostname is not used, it +may prevent use of hostlist expressions (the numeric portion in brackets +must be at the end of the string). +If the \fBFrontendName\fR is "DEFAULT", the values specified +with that record will apply to subsequent node specifications +unless explicitly set to other values in that frontend node record or +replaced with a different set of default values. +Note that since the naming of front end nodes would typically not follow that +of the compute nodes (e.g. lacking X, Y and Z coordinates found in the compute +node naming scheme), each front end node name should be listed separately and +without a hostlist expression (i.e. frontend00,frontend01" rather than +"frontend[00-01]").

      + +.TP +\fBFrontendAddr\fR +Name that a frontend node should be referred to in establishing +a communications path. This name will be used as an +argument to the gethostbyname() function for identification. +As with \fBFrontendName\fR, list the individual node addresses rather than +using a hostlist expression. +The number of \fBFrontendAddr\fR records per line must equal the number of +\fBFrontendName\fR records per line (i.e. you can't map to node names to +one address). +\fBFrontendAddr\fR may also contain IP addresses. +By default, the \fBFrontendAddr\fR will be identical in value to +\fBFrontendName\fR. + +.TP +\fBPort\fR +The port number that the SLURM compute node daemon, \fBslurmd\fR, listens +to for work on this particular frontend node. By default there is a single port +number for all \fBslurmd\fR daemons on all frontend nodes as defined by the +\fBSlurmdPort\fR configuration parameter. Use of this option is not generally +recommended except for development or testing purposes. + +.TP +\fBReason\fR +Identifies the reason for a frontend node being in state "DOWN", "DRAINED" +"DRAINING", "FAIL" or "FAILING". +Use quotes to enclose a reason having more than one word. + +.TP +\fBState\fR +State of the frontend node with respect to the initiation of user jobs. +Acceptable values are "DOWN", "DRAIN", "FAIL", "FAILING" and "UNKNOWN". +"DOWN" indicates the frontend node has failed and is unavailable to be +allocated work. +"DRAIN" indicates the frontend node is unavailable to be allocated work. +"FAIL" indicates the frontend node is expected to fail soon, has +no jobs allocated to it, and will not be allocated to any new jobs. +"FAILING" indicates the frontend node is expected to fail soon, has +one or more jobs allocated to it, but will not be allocated to any new jobs. +"UNKNOWN" indicates the frontend node's state is undefined (BUSY or IDLE), +but will be established when the \fBslurmd\fR daemon on that node registers. +The default value is "UNKNOWN". +Also see the \fBDownNodes\fR parameter below. + +.LP The partition configuration permits you to establish different job limits or access controls for various groups (or partitions) of nodes. Nodes may be in more than one partition, making partitions serve @@ -2335,6 +2483,9 @@ in the configuration file with multiple entries where "PartitionName=DEFAULT". The "PartitionName=" specification must be placed on every line describing the configuration of partitions. +If a partition that is in use is deleted from the configuration and slurm +is restarted or reconfigured (scontrol reconfigure), jobs using the partition +are canceled. \fBNOTE:\fR Put all parameters for each partition on a single line. Each line of partition configuration information should represent a different partition. @@ -2350,7 +2501,7 @@ .TP \fBAllowGroups\fR -Comma separated list of group IDs which may execute jobs in the partition. +Comma separated list of group names which may execute jobs in the partition. If at least one group associated with the user attempting to execute the job is in AllowGroups, he will be permitted to use this partition. Jobs executed as user root can use any partition without regard to @@ -2382,6 +2533,33 @@ The default value is "NO". .TP +\fBDefMemPerCPU\fR +Default real memory size available per allocated CPU in MegaBytes. +Used to avoid over\-subscribing memory and causing paging. +\fBDefMemPerCPU\fR would generally be used if individual processors +are allocated to jobs (\fBSelectType=select/cons_res\fR). +If not set, the \fBDefMemPerCPU\fR value for the entire cluster will be used. +Also see \fBDefMemPerNode\fR and \fBMaxMemPerCPU\fR. +\fBDefMemPerCPU\fR and \fBDefMemPerNode\fR are mutually exclusive. +NOTE: Enforcement of memory limits currently requires enabling of +accounting, which samples memory use on a periodic basis (data need +not be stored, just collected). + +.TP +\fBDefMemPerNode\fR +Default real memory size available per allocated node in MegaBytes. +Used to avoid over\-subscribing memory and causing paging. +\fBDefMemPerNode\fR would generally be used if whole nodes +are allocated to jobs (\fBSelectType=select/linear\fR) and +resources are shared (\fBShared=yes\fR or \fBShared=force\fR). +If not set, the \fBDefMemPerNode\fR value for the entire cluster will be used. +Also see \fBDefMemPerCPU\fR and \fBMaxMemPerNode\fR. +\fBDefMemPerCPU\fR and \fBDefMemPerNode\fR are mutually exclusive. +NOTE: Enforcement of memory limits currently requires enabling of +accounting, which samples memory use on a periodic basis (data need +not be stored, just collected). + +.TP \fBDefaultTime\fR Run time limit used for jobs that don't specify a value. If not set then MaxTime will be used. @@ -2396,6 +2574,14 @@ root to execute jobs). .TP +\fIGraceTime\fP +Specifies, in units of seconds, the preemption grace time +to be extended to a job which has been selected for preemption. +The default value is zero, no preemption grace time is allowed on +this partition. +(Meaningful only for PreemptMode=CANCEL) + +.TP \fBHidden\fR Specifies if the partition and its jobs are to be hidden by default. Hidden partitions will by default not be reported by the SLURM APIs or commands. @@ -2405,6 +2591,33 @@ \fBAllowGroups\fR parameter will also be hidden by default. .TP +\fBMaxMemPerCPU\fR +Maximum real memory size available per allocated CPU in MegaBytes. +Used to avoid over\-subscribing memory and causing paging. +\fBMaxMemPerCPU\fR would generally be used if individual processors +are allocated to jobs (\fBSelectType=select/cons_res\fR). +If not set, the \fBMaxMemPerCPU\fR value for the entire cluster will be used. +Also see \fBDefMemPerCPU\fR and \fBMaxMemPerNode\fR. +\fBMaxMemPerCPU\fR and \fBMaxMemPerNode\fR are mutually exclusive. +NOTE: Enforcement of memory limits currently requires enabling of +accounting, which samples memory use on a periodic basis (data need +not be stored, just collected). + +.TP +\fBMaxMemPerNode\fR +Maximum real memory size available per allocated node in MegaBytes. +Used to avoid over\-subscribing memory and causing paging. +\fBMaxMemPerNode\fR would generally be used if whole nodes +are allocated to jobs (\fBSelectType=select/linear\fR) and +resources are shared (\fBShared=yes\fR or \fBShared=force\fR). +If not set, the \fBMaxMemPerNode\fR value for the entire cluster will be used. +Also see \fBDefMemPerNode\fR and \fBMaxMemPerCPU\fR. +\fBMaxMemPerCPU\fR and \fBMaxMemPerNode\fR are mutually exclusive. +NOTE: Enforcement of memory limits currently requires enabling of +accounting, which samples memory use on a periodic basis (data need +not be stored, just collected). + +.TP \fBMaxNodes\fR Maximum count of nodes which may be allocated to any single job. For BlueGene systems this will be a c\-nodes count and will be converted @@ -2499,13 +2712,13 @@ For more information see the following web pages: .br .na -\fIhttps://computing.llnl.gov/linux/slurm/cons_res.html\fR, +\fIhttp://www.schedmd.com/slurmdocs/cons_res.html\fR, .br -\fIhttps://computing.llnl.gov/linux/slurm/cons_res_share.html\fR, +\fIhttp://www.schedmd.com/slurmdocs/cons_res_share.html\fR, .br -\fIhttps://computing.llnl.gov/linux/slurm/gang_scheduling.html\fR, and +\fIhttp://www.schedmd.com/slurmdocs/gang_scheduling.html\fR, and .br -\fIhttps://computing.llnl.gov/linux/slurm/preempt.html\fR. +\fIhttp://www.schedmd.com/slurmdocs/preempt.html\fR. .ad .RS @@ -2602,7 +2815,7 @@ .TP \fBBASIL_RESERVATION_ID\fR Basil reservation ID. -Available on Cray XT systems only. +Available on Cray XT/XE systems only. .TP \fBMPIRUN_PARTITION\fR BlueGene partition name. @@ -2660,7 +2873,7 @@ Special SLURM logic is used to optimize allocations on systems with a three\-dimensional interconnect (BlueGene, Sun Constellation, etc.) and information about configuring those systems are available on -web pages available here: . +web pages available here: . For a hierarchical network, SLURM needs to have detailed information about how nodes are configured on the network switches. .LP @@ -2673,7 +2886,7 @@ collect network topology information. The only values presently supported are "topology/3d_torus" (default for IBM BlueGene, Sun Constellation and -Cray XT systems, performs best\-fit logic over three\-dimensional topology), +Cray XT/XE systems, performs best\-fit logic over three\-dimensional topology), "topology/none" (default for other systems, best\-fit logic over one\-dimensional topology), "topology/tree" (determine the network topology based @@ -2791,7 +3004,7 @@ .br # .br -NodeName=DEFAULT Procs=2 RealMemory=2000 TmpDisk=64000 +NodeName=DEFAULT CPUs=2 RealMemory=2000 TmpDisk=64000 .br NodeName=DEFAULT State=UNKNOWN .br @@ -2939,6 +3152,72 @@ Must be executable by user \fBSlurmUser\fR. The file must be accessible by the primary and backup control machines. +.SH "LOGGING" +.LP +Note that while SLURM daemons create log files and other files as needed, +it treats the lack of parent directories as a fatal error. +This prevents the daemons from running if critical file systems are +not mounted and will minimize the risk of cold\-starting (starting +without preserving jobs). +.LP +Log files and job accounting files, +may need to be created/owned by the "SlurmUser" uid to be successfully +accessed. Use the "chown" and "chmod" commands to set the ownership +and permissions appropriately. +See the section \fBFILE AND DIRECTORY PERMISSIONS\fR for information +about the various files and directories used by SLURM. +.LP +It is recommended that the logrotate utility be used to insure that +various log files do not become too large. +This also applies to text files used for accounting, +process tracking, and the slurmdbd log if they are used. +.LP +Here is a sample logrotate configuration. Make appropriate site modifications +and save as /etc/logrotate.d/slurm on all nodes. +See the \fBlogrotate\fR man page for more details. +.LP +## +.br +# SLURM Logrotate Configuration +.br +## +.br +/var/log/slurm/*log { +.br + compress +.br + missingok +.br + nocopytruncate +.br + nocreate +.br + nodelaycompress +.br + nomail +.br + notifempty +.br + noolddir +.br + rotate 5 +.br + sharedscripts +.br + size=5M +.br + create 640 slurm root +.br + postrotate +.br + /etc/init.d/slurm reconfig +.br + endscript +.br +} +.br + + .SH "COPYING" Copyright (C) 2002\-2007 The Regents of the University of California. Copyright (C) 2008\-2010 Lawrence Livermore National Security. @@ -2947,7 +3226,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -2964,8 +3243,8 @@ .SH "SEE ALSO" .LP -\fBbluegene.conf\fR(5), \fBcgroup.conf\fR(5), \fBgethostbyname\fR(3), -\fBgetrlimit\fR(2), \fBgres.conf\fR(5), \fBgroup\fR(5), \fBhostname\fR(1), +\fBbluegene.conf\fR(5), \fBcgroup.conf\fR(5), \fBgethostbyname\fR (3), +\fBgetrlimit\fR (2), \fBgres.conf\fR(5), \fBgroup\fR (5), \fBhostname\fR (1), \fBscontrol\fR(1), \fBslurmctld\fR(8), \fBslurmd\fR(8), \fBslurmdbd\fR(8), \fBslurmdbd.conf\fR(5), \fBsrun(1)\fR, -\fBspank(8)\fR, \fBsyslog\fR(2), \fBtopology.conf\fR(5), \fBwiki.conf\fR(5) +\fBspank(8)\fR, \fBsyslog\fR (2), \fBtopology.conf\fR(5), \fBwiki.conf\fR(5) diff -Nru slurm-llnl-2.2.7/doc/man/man5/slurmdbd.conf.5 slurm-llnl-2.3.2/doc/man/man5/slurmdbd.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/slurmdbd.conf.5 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/slurmdbd.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -3,10 +3,11 @@ slurmdbd.conf \- Slurm Database Daemon (SlurmDBD) configuration file .SH "DESCRIPTION" -\fB/etc/slurmdb.conf\fP is an ASCII file which describes Slurm Database +\fBslurmdb.conf\fP is an ASCII file which describes Slurm Database Daemon (SlurmDBD) configuration information. -You can use the \fBSLURM_CONF\fR environment variable to override the built\-in -location of this file. +The file location can be modified at system build time using the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. .LP The contents of the file are case insensitive except for the names of nodes and files. Any text following a "#" in the configuration file is treated @@ -158,6 +159,9 @@ Fully qualified pathname of a file into which the Slurm Database Daemon's logs are written. The default value is none (performs logging via syslog). +.br +See the section \fBLOGGING\fR in the slurm.conf man page +if a pathname is specified. .TP \fBMessageTimeout\fR @@ -324,6 +328,12 @@ Boolean yes or no. Used to set display and track of the Workload Characterization Key. Must be set to track wckey usage. +.TP +\fBTrackSlurmctldDown\fR +Boolean yes or no. If set the slurmdbd will mark all idle resources on the +cluster as down when a slurmctld disconnects or is no longer reachable. The +default is no. + .SH "EXAMPLE" .LP # @@ -376,7 +386,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -395,4 +405,4 @@ .LP \fBslurm.conf\fR(5), \fBslurmctld\fR(8), \fBslurmdbd\fR(8) -\fBsyslog\fR(2) +\fBsyslog\fR (2) diff -Nru slurm-llnl-2.2.7/doc/man/man5/topology.conf.5 slurm-llnl-2.3.2/doc/man/man5/topology.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/topology.conf.5 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/topology.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -4,10 +4,11 @@ topology.conf \- Slurm configuration file for defining the network topology .SH "DESCRIPTION" -\fB/etc/topology.conf\fP is an ASCII file which describes the +\fBtopology.conf\fP is an ASCII file which describes the cluster's network topology for optimized job resource allocation. The file location can be modified at system build time using the -DEFAULT_SLURM_CONF parameter. The file will always be located in the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The file will always be located in the same directory as the \fBslurm.conf\fP file. .LP Parameter names are case insensitive. @@ -71,7 +72,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man5/wiki.conf.5 slurm-llnl-2.3.2/doc/man/man5/wiki.conf.5 --- slurm-llnl-2.2.7/doc/man/man5/wiki.conf.5 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man5/wiki.conf.5 2011-12-05 17:20:08.000000000 +0000 @@ -2,10 +2,11 @@ .SH "NAME" wiki.conf \- Slurm configuration file for wiki and wiki2 scheduler plugins .SH "DESCRIPTION" -\fB/etc/wiki.conf\fP is an ASCII file which describes wiki and wiki2 +\fBwiki.conf\fP is an ASCII file which describes wiki and wiki2 scheduler specific SLURM configuration information. The file location can be modified at system build time using the -DEFAULT_SLURM_CONF parameter. The file will always be located in the +DEFAULT_SLURM_CONF parameter or at execution time by setting the SLURM_CONF +environment variable. The file will always be located in the same directory as the \fBslurm.conf\fP file. .LP Parameter names are case insensitive. @@ -188,7 +189,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man8/slurmctld.8 slurm-llnl-2.3.2/doc/man/man8/slurmctld.8 --- slurm-llnl-2.2.7/doc/man/man8/slurmctld.8 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man8/slurmctld.8 2011-12-05 17:20:08.000000000 +0000 @@ -97,7 +97,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man8/slurmd.8 slurm-llnl-2.3.2/doc/man/man8/slurmd.8 --- slurm-llnl-2.2.7/doc/man/man8/slurmd.8 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man8/slurmd.8 2011-12-05 17:20:08.000000000 +0000 @@ -40,9 +40,9 @@ Write log messages to the specified file. .TP \fB\-M\fR -Lock slurmd pages into system memory using mlockall(2) to disable +Lock slurmd pages into system memory using mlockall (2) to disable paging of the slurmd process. This may help in cases where nodes are -marked DOWN during periods of heavy swap activity. If the mlockall(2) +marked DOWN during periods of heavy swap activity. If the mlockall (2) system call is not available, an error will be printed to the log and slurmd will continue as normal. @@ -89,7 +89,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man8/slurmdbd.8 slurm-llnl-2.3.2/doc/man/man8/slurmdbd.8 --- slurm-llnl-2.2.7/doc/man/man8/slurmdbd.8 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man8/slurmdbd.8 2011-12-05 17:20:08.000000000 +0000 @@ -42,7 +42,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man8/slurmstepd.8 slurm-llnl-2.3.2/doc/man/man8/slurmstepd.8 --- slurm-llnl-2.2.7/doc/man/man8/slurmstepd.8 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man8/slurmstepd.8 2011-12-05 17:20:08.000000000 +0000 @@ -16,7 +16,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/doc/man/man8/spank.8 slurm-llnl-2.3.2/doc/man/man8/spank.8 --- slurm-llnl-2.2.7/doc/man/man8/spank.8 2011-06-10 16:55:37.000000000 +0000 +++ slurm-llnl-2.3.2/doc/man/man8/spank.8 2011-12-05 17:20:08.000000000 +0000 @@ -73,12 +73,12 @@ are dropped. (remote context only) .TP \fBslurm_spank_task_init\fR -Called for each task just before execve(2). (remote context only) +Called for each task just before execve (2). (remote context only) .TP \fBslurm_spank_task_post_fork\fR -Called for each task from parent process after fork(2) is complete. +Called for each task from parent process after fork (2) is complete. Due to the fact that \fBslurmd\fR does not exec any tasks until all -tasks have completed fork(2), this call is guaranteed to run before +tasks have completed fork (2), this call is guaranteed to run before the user task is executed. (remote context only) .TP \fBslurm_spank_task_exit\fR @@ -166,8 +166,8 @@ .fi .LP These are only necessary in remote context since modifications of -the standard process environment using \fBsetenv\fR(3), \fBgetenv\fR(3), -and \fBunsetenv\fR(3) may be used in local context. +the standard process environment using \fBsetenv\fR (3), \fBgetenv\fR (3), +and \fBunsetenv\fR (3) may be used in local context. .LP Functions are also available from within the \fBSPANK\fR plugins to establish environment variables to be exported to the SLURM @@ -244,7 +244,7 @@ .TP .I has_arg 0 if option takes no argument, 1 if option takes an argument, and -2 if the option takes an optional argument. (See \fBgetopt_long\fR(3)). +2 if the option takes an optional argument. (See \fBgetopt_long\fR (3)). .TP .I val A plugin\-local value to return to the option callback function. @@ -549,7 +549,7 @@ CODE\-OCEC\-09\-009. All rights reserved. .LP This file is part of SLURM, a resource management program. -For details, see . +For details, see . .LP SLURM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free diff -Nru slurm-llnl-2.2.7/etc/bluegene.conf.example slurm-llnl-2.3.2/etc/bluegene.conf.example --- slurm-llnl-2.2.7/etc/bluegene.conf.example 2011-06-10 16:55:38.000000000 +0000 +++ slurm-llnl-2.3.2/etc/bluegene.conf.example 2011-12-05 17:20:08.000000000 +0000 @@ -99,7 +99,7 @@ # will be based upon the NodeName defined in slurm.conf. ############################################################################### # LEAVE NEXT LINE AS A COMMENT, Full-system bgblock, implicitly created -# BP=[000x333] Type=TORUS # 4x4x4 = 64 midplanes +# BPs=[000x333] Type=TORUS # 4x4x4 = 64 midplanes ############################################################################### # smap bgblock layout here: BPs=[000x133] Type=TORUS # 2x4x4 = 32 diff -Nru slurm-llnl-2.2.7/etc/cgroup_allowed_devices_file.conf.example slurm-llnl-2.3.2/etc/cgroup_allowed_devices_file.conf.example --- slurm-llnl-2.2.7/etc/cgroup_allowed_devices_file.conf.example 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/etc/cgroup_allowed_devices_file.conf.example 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,6 @@ +/dev/null +/dev/urandom +/dev/zero +/dev/sda* +/dev/cpu/*/* +/dev/pts/* diff -Nru slurm-llnl-2.2.7/etc/cgroup.conf.example slurm-llnl-2.3.2/etc/cgroup.conf.example --- slurm-llnl-2.2.7/etc/cgroup.conf.example 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/etc/cgroup.conf.example 2011-12-05 17:20:08.000000000 +0000 @@ -2,70 +2,11 @@ # # Slurm cgroup support configuration file # -### - -#-- -# Slurm cgroup plugins require a valid and functional -# cgroup system mounted on /dev/cgroup -# When launched, plugins check cgroup availability -# If cgroup is not available, the plugin launch fails -# unless CgroupAutomount is set to yes. In that case, -# the plugin will first try to mount the cgroup system. -# CgroupMountOptions and CgroupReleaseAgent can be used to -# tune the cgroup system behavior +# See man slurm.conf and man cgroup.conf for further +# information on cgroup configuration parameters #-- CgroupAutomount=yes -CgroupMountOptions="memory,cpuset" -CgroupReleaseAgent="/etc/slurm/cgroup.release_agent" - -#-- -# Slurm cgroup proctrack plugin creates a hierarchical set of -# directories for each step, putting the step tasks into the leaf -# -# This directory structure is like the following : -# /dev/cgroup/slurm/uid_%uid/job_%jobid/step_%stepid -# -# job cgroup and jobstep cgroup can be tuned using the two next -# parameters. The format of the parameter is the following : -# -# "a=b c=d e=f" where a,c,d corresponds to files under the cgroup -# directory and b,d,f the values to write in these files -#-- -JobCgroupParams="memory.swappiness=30" -JobStepCgroupParams="" +CgroupReleaseAgent="/etc/slurm/cgroup" -#-- -# Slurm cgroup proctrack plugin can constrain memory usage at the job -# level. The constraints correspond to the amount of RAM space allowed -# to the whole job as well as the amount of additional swap space. -# -# The amount of space of these two notions are expressed in percent of -# the memory limit set to the job on the execution node. -# -# Thus, the following configuration : -# ConstrainRAMSpace=no -# ConstrainSwapSpace=yes -# will request that no constraint are set for the jobs, -# ConstrainRAMSpace=yes -# AllowedRAMSpace=100 -# ConstrainSwapSpace=yes -# AllowedSwapSpace=10 -# will request to constrain RAM and Swap space letting the job use -# as many RAM space than memory asked in slurm but not more than -# 110% of this limit in both RAM+Swap space -# -# Warning: setting ConstrainSwapSpace to yes automatically set -# ConstrainRAMSpace to yes and the corresponding limit to 100% -# of the memory limit + the configured percent of Swap space -#-- -ConstrainRAMSpace=yes -AllowedRAMSpace=100 -ConstrainSwapSpace=yes -AllowedSwapSpace=10 - -#-- -# Slurm cgroup proctrack plugin can constrain allowed cores to -# the subset of allocated resources. -# To do that, you just have to set to yes the following parameter -#-- -ConstrainCores=yes +ConstrainCores=no +ConstrainRAMSpace=no diff -Nru slurm-llnl-2.2.7/etc/cgroup.release_agent slurm-llnl-2.3.2/etc/cgroup.release_agent --- slurm-llnl-2.2.7/etc/cgroup.release_agent 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/etc/cgroup.release_agent 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#!/bin/bash -rmdir /dev/cgroup/$@ diff -Nru slurm-llnl-2.2.7/etc/cgroup.release_common.example slurm-llnl-2.3.2/etc/cgroup.release_common.example --- slurm-llnl-2.2.7/etc/cgroup.release_common.example 1970-01-01 00:00:00.000000000 +0000 +++ slurm-llnl-2.3.2/etc/cgroup.release_common.example 2011-12-05 17:20:08.000000000 +0000 @@ -0,0 +1,155 @@ +#!/bin/bash +# +# Generic release agent for SLURM cgroup usage +# +# Manage cgroup hierarchy like : +# +# /cgroup/subsystem/uid_%/job_%/step_%/task_% +# +# Automatically sync uid_% cgroups to be coherent +# with remaining job childs when one of them is removed +# by a call to this release agent. +# The synchronisation is made in a flock on the root cgroup +# to ensure coherency of the cgroups contents. +# + +progname=$(basename $0) +subsystem=${progname##*_} + +get_mount_dir() +{ + local lssubsys=$(type -p lssubsys) + if [ -x $lssubsys ]; then + $lssubsys -m $subsystem | awk '{print $2}' + else + awk "/release_agent=$0/ { print \$2 }" + fi +} + +mountdir=$(get_mount_dir) + +if [[ $# -eq 0 ]] +then + echo "Usage: $(basename $0) [sync] cgroup" + exit 1 +fi + +# build orphan cg path +if [[ $# -eq 1 ]] +then + rmcg=${mountdir}$1 +else + rmcg=${mountdir}$2 +fi +slurmcg=${rmcg%/uid_*} +if [[ ${slurmcg} == ${rmcg} ]] +then + # not a slurm job pattern, perhaps the slurmcg, just remove + # the dir with a lock and exit + flock -x ${mountdir} -c "rmdir ${rmcg}" + exit $? +fi +orphancg=${slurmcg}/orphan + +# make sure orphan cgroup is existing +if [[ ! -d ${orphancg} ]] +then + mkdir ${orphancg} + case ${subsystem} in + cpuset) + cat ${mountdir}/cpuset.cpus > ${orphancg}/cpuset.cpus + cat ${mountdir}/cpuset.mems > ${orphancg}/cpuset.mems + ;; + *) + ;; + esac +fi + +# kernel call +if [[ $# -eq 1 ]] +then + + rmcg=${mountdir}$@ + + # try to extract the uid cgroup from the input one + # ( extract /uid_% from /uid%/job_*...) + uidcg=${rmcg%/job_*} + if [[ ${uidcg} == ${rmcg} ]] + then + # not a slurm job pattern, perhaps the uidcg, just remove + # the dir with a lock and exit + flock -x ${mountdir} -c "rmdir ${rmcg}" + exit $? + fi + + if [[ -d ${mountdir} ]] + then + flock -x ${mountdir} -c "$0 sync $@" + fi + + exit $? + +# sync subcall (called using flock by the kernel hook to be sure +# that no one is manipulating the hierarchy, i.e. PAM, SLURM, ...) +elif [[ $# -eq 2 ]] && [[ $1 == "sync" ]] +then + + shift + rmcg=${mountdir}$@ + uidcg=${rmcg%/job_*} + + # remove this cgroup + if [[ -d ${rmcg} ]] + then + case ${subsystem} in + memory) + # help to correctly remove lazy cleaning memcg + # but still not perfect + sleep 1 + ;; + *) + ;; + esac + rmdir ${rmcg} + fi + if [[ ${uidcg} == ${rmcg} ]] + then + ## not a slurm job pattern exit now do not sync + exit 0 + fi + + # sync the user cgroup based on targeted subsystem + # and the remaining job + if [[ -d ${uidcg} ]] + then + case ${subsystem} in + cpuset) + cpus=$(cat ${uidcg}/job_*/cpuset.cpus 2>/dev/null) + if [[ -n ${cpus} ]] + then + cpus=$(scontrol show hostnames $(echo ${cpus} | tr ' ' ',')) + cpus=$(echo ${cpus} | tr ' ' ',') + echo ${cpus} > ${uidcg}/cpuset.cpus + else + # first move the remaining processes to + # a cgroup reserved for orphaned processes + for t in $(cat ${uidcg}/tasks) + do + echo $t > ${orphancg}/tasks + done + # then remove the remaining cpus from the cgroup + echo "" > ${uidcg}/cpuset.cpus + fi + ;; + *) + ;; + esac + fi + +# error +else + echo "Usage: $(basename $0) [sync] cgroup" + exit 1 +fi + +exit 0 diff -Nru slurm-llnl-2.2.7/etc/init.d.slurm slurm-llnl-2.3.2/etc/init.d.slurm --- slurm-llnl-2.2.7/etc/init.d.slurm 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/etc/init.d.slurm 2011-12-05 17:20:08.000000000 +0000 @@ -67,6 +67,10 @@ fi # Source slurm specific configuration +# This can be used to alter limits for users jobs or set daemon options. +# For example, the limits for user jobs could be higher or lower than the +# default limits for user root (e.g. "ulimit -t unlimited" sets an unlimited +# CPU time limit for spawned user jobs). # SLURMCTLD_OPTIONS defines slurmctld command line options. See "man slurmctld" # SLURMD_OPTIONS defines slurmd command line options. See "man slurmd" if [ -f /etc/sysconfig/slurm ] ; then @@ -106,7 +110,15 @@ startall() { for prog in `$BINDIR/scontrol show daemons`; do optvar=`echo ${prog}_OPTIONS | tr "a-z" "A-Z"` - start $prog ${!optvar} + if [[ ${MULTIPLE_SLURMD} == yes ]] && [[ ${prog} == slurmd ]] + then + for node in $(scontrol show aliases) + do + start $prog -N ${node} ${!optvar} + done + else + start $prog ${!optvar} + fi done } @@ -120,6 +132,8 @@ local pid local rpid local pidfile + local pidfiles + local rc pidfile=`grep -i ${base}pid $CONFDIR/slurm.conf | grep -v '^ *#'` if [ $? = 0 ]; then @@ -132,36 +146,64 @@ pid=`pidof -o $$ -o $$PPID -o %PPID -x $1 || \ pidof -o $$ -o $$PPID -o %PPID -x ${base}` - if [ -f $pidfile ]; then - read rpid < $pidfile - if [ "$rpid" != "" -a "$pid" != "" ]; then - for i in $pid ; do - if [ "$i" = "$rpid" ]; then - echo $"${base} (pid $pid) is running..." - return 0 - fi + if [ "$base" == "slurmd" ] ; then + echo ${pidfile} | grep -q %n + if [[ $? -eq 0 ]] + then + for n in $(scontrol show aliases) + do + pidfiles="${pidfiles} $(echo ${pidfile} | sed "s/%n/$n/g")" done - elif [ "$rpid" != "" -a "$pid" = "" ]; then + else + pidfiles=${pidfile} + fi + else + pidfiles=${pidfile} + fi + + RETVAL=0 + for pidfile in ${pidfiles} + do + rc=1 + if [ -f $pidfile ]; then + read rpid < $pidfile + if [ "$rpid" != "" -a "$pid" != "" ]; then + for i in $pid ; do + if [ "$i" = "$rpid" ]; then + echo $"${base} (pid $rpid) is running..." + rc=0 + break + fi + done + elif [ "$rpid" != "" -a "$pid" = "" ]; then # Due to change in user id, pid file may persist # after slurmctld terminates - if [ "$base" != "slurmctld" ] ; then - echo $"${base} dead but pid file exists" - else - echo $"${base} is stopped" + if [ "$base" != "slurmctld" ] ; then + echo $"${base} dead but pid file exists" + else + echo $"${base} is stopped" + fi + RETVAL=1 fi - return 1 + fi - fi + if [[ $rc -eq 0 ]] + then + continue + fi - if [ "$base" = "slurmctld" -a "$pid" != "" ] ; then - echo $"${base} (pid $pid) is running..." - return 0 - fi + if [ "$base" = "slurmctld" -a "$pid" != "" ] ; then + echo $"${base} (pid $pid) is running..." + continue + fi + + echo $"${base} is stopped" + RETVAL=1 - echo $"${base} is stopped" + done - return 3 + return $RETVAL } # @@ -221,7 +263,17 @@ if [ -f /var/lock/subsys/slurm ]; then for prog in `$BINDIR/scontrol show daemons`; do stop $prog - start $prog + sleep 1 + optvar=`echo ${prog}_OPTIONS | tr "a-z" "A-Z"` + if [[ ${MULTIPLE_SLURMD} == yes ]] && [[ ${prog} == slurmd ]] + then + for node in $(scontrol show aliases) + do + start $prog -N ${node} + done + else + start $prog ${!optvar} + fi done fi ;; diff -Nru slurm-llnl-2.2.7/Makefile.am slurm-llnl-2.3.2/Makefile.am --- slurm-llnl-2.2.7/Makefile.am 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/Makefile.am 2011-12-05 17:20:08.000000000 +0000 @@ -10,11 +10,12 @@ etc/slurm.epilog.clean \ etc/init.d.slurm \ etc/init.d.slurmdbd \ - etc/cgroup.conf.example \ - etc/cgroup.release_agent \ + etc/cgroup.conf.example \ + etc/cgroup.release_common.example \ + etc/cgroup_allowed_devices_file.conf.example \ autogen.sh \ slurm.spec \ - README \ + README.rst \ RELEASE_NOTES \ DISCLAIMER \ COPYING \ diff -Nru slurm-llnl-2.2.7/Makefile.in slurm-llnl-2.3.2/Makefile.in --- slurm-llnl-2.2.7/Makefile.in 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/Makefile.in 2011-12-05 17:20:08.000000000 +0000 @@ -36,7 +36,7 @@ host_triplet = @host@ target_triplet = @target@ subdir = . -DIST_COMMON = README $(am__configure_deps) $(pkginclude_HEADERS) \ +DIST_COMMON = $(am__configure_deps) $(pkginclude_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(srcdir)/config.xml.in \ $(top_srcdir)/configure \ @@ -69,6 +69,7 @@ $(top_srcdir)/auxdir/x_ac_hwloc.m4 \ $(top_srcdir)/auxdir/x_ac_iso.m4 \ $(top_srcdir)/auxdir/x_ac_lua.m4 \ + $(top_srcdir)/auxdir/x_ac_man2html.m4 \ $(top_srcdir)/auxdir/x_ac_munge.m4 \ $(top_srcdir)/auxdir/x_ac_ncurses.m4 \ $(top_srcdir)/auxdir/x_ac_pam.m4 \ @@ -79,6 +80,7 @@ $(top_srcdir)/auxdir/x_ac_setproctitle.m4 \ $(top_srcdir)/auxdir/x_ac_sgi_job.m4 \ $(top_srcdir)/auxdir/x_ac_slurm_ssl.m4 \ + $(top_srcdir)/auxdir/x_ac_srun.m4 \ $(top_srcdir)/auxdir/x_ac_sun_const.m4 \ $(top_srcdir)/auxdir/x_ac_xcpu.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -178,7 +180,10 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BGL_LOADED = @BGL_LOADED@ +BGQ_LOADED = @BGQ_LOADED@ BG_INCLUDES = @BG_INCLUDES@ +BG_LDFLAGS = @BG_LDFLAGS@ +BG_L_P_LOADED = @BG_L_P_LOADED@ BLCR_CPPFLAGS = @BLCR_CPPFLAGS@ BLCR_HOME = @BLCR_HOME@ BLCR_LDFLAGS = @BLCR_LDFLAGS@ @@ -215,6 +220,7 @@ HAVE_AIX = @HAVE_AIX@ HAVE_ELAN = @HAVE_ELAN@ HAVE_FEDERATION = @HAVE_FEDERATION@ +HAVE_MAN2HTML = @HAVE_MAN2HTML@ HAVE_OPENSSL = @HAVE_OPENSSL@ HAVE_SOME_CURSES = @HAVE_SOME_CURSES@ HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ @@ -272,6 +278,7 @@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ +REAL_BG_L_P_LOADED = @REAL_BG_L_P_LOADED@ RELEASE = @RELEASE@ SED = @SED@ SEMAPHORE_LIBS = @SEMAPHORE_LIBS@ @@ -307,6 +314,7 @@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_have_man2html = @ac_have_man2html@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -369,11 +377,12 @@ etc/slurm.epilog.clean \ etc/init.d.slurm \ etc/init.d.slurmdbd \ - etc/cgroup.conf.example \ - etc/cgroup.release_agent \ + etc/cgroup.conf.example \ + etc/cgroup.release_common.example \ + etc/cgroup_allowed_devices_file.conf.example \ autogen.sh \ slurm.spec \ - README \ + README.rst \ RELEASE_NOTES \ DISCLAIMER \ COPYING \ diff -Nru slurm-llnl-2.2.7/META slurm-llnl-2.3.2/META --- slurm-llnl-2.2.7/META 2011-06-10 17:06:41.000000000 +0000 +++ slurm-llnl-2.3.2/META 2011-12-05 17:20:08.000000000 +0000 @@ -1,11 +1,11 @@ Api_age: 0 - Api_current: 22 + Api_current: 23 Api_revision: 0 Major: 2 Meta: 1 - Micro: 7 - Minor: 2 + Micro: 2 + Minor: 3 Name: slurm Release: 1 Release_tags: dist - Version: 2.2.7 + Version: 2.3.2 diff -Nru slurm-llnl-2.2.7/NEWS slurm-llnl-2.3.2/NEWS --- slurm-llnl-2.2.7/NEWS 2011-06-10 16:57:27.000000000 +0000 +++ slurm-llnl-2.3.2/NEWS 2011-12-05 17:20:08.000000000 +0000 @@ -1,6 +1,494 @@ This file describes changes in recent versions of SLURM. It primarily documents those changes that are of interest to users and admins. +* Changes in SLURM 2.3.2 +======================== + -- Add configure option of "--without-rpath" which builds SLURM tools without + the rpath option, which will work if Munge and BlueGene libraries are in + the default library search path and make system updates easier. + -- Fixed issue where if a job ended with ESLURMD_UID_NOT_FOUND and + ESLURMD_GID_NOT_FOUND where slurm would be a little over zealous + in treating missing a GID or UID as a fatal error. + -- Backfill scheduling - Add SchedulerParameters configuration parameter of + "bf_res" to control the resolution in the backfill scheduler's data about + when jobs begin and end. Default value is 60 seconds (used to be 1 second). + -- Cray - Remove the "family" specification from the GPU reservation request. + -- Updated set_oomadj.c, replacing deprecated oom_adj reference with + oom_score_adj + -- Fix resource allocation bug, generic resources allocation was ignoring the + job's ntasks_per_node and cpus_per_task parameters. Patch from Carles + Fenoy, BSC. + -- Avoid orphan job step if slurmctld is down when a job step completes. + -- Fix Lua link order, patch from Pär Andersson, NSC. + -- Set SLURM_CPUS_PER_TASK=1 when user specifies --cpus-per-task=1. + -- Fix for fatal error managing GRES. Patch by Carles Fenoy, BSC. + -- Fixed race condition when using the DBD in accounting where if a job + wasn't started at the time the eligible message was sent but started + before the db_index was returned information like start time would be lost. + -- Fix issue in accounting where normalized shares could be updated + incorrectly when getting fairshare from the parent. + -- Fixed if not enforcing associations but want QOS support for a default + qos on the cluster to fill that in correctly. + -- Fix in select/cons_res for "fatal: cons_res: sync loop not progressing" + with some configurations and job option combinations. + -- BLUEGNE - Fixed issue with handling HTC modes and rebooting. + +* Changes in SLURM 2.3.1 +======================== + -- Do not remove the backup slurmctld's pid file when it assumes control, only + when it actually shuts down. Patch from Andriy Grytsenko (Massive Solutions + Limited). + -- Avoid clearing a job's reason from JobHeldAdmin or JobHeldUser when it is + otherwise updated using scontrol or sview commands. Patch based upon work + by Phil Eckert (LLNL). + -- BLUEGENE - Fix for if changing the defined blocks in the bluegene.conf and + jobs happen to be running on blocks not in the new config. + -- Many cosmetic modifications to eliminate warning message from GCC version + 4.6 compiler. + -- Fix for sview reservation tab when finding correct reservation. + -- Fix for handling QOS limits per user on a reconfig of the slurmctld. + -- Do not treat the absence of a gres.conf file as a fatal error on systems + configured with GRES, but set GRES counts to zero. + -- BLUEGENE - Update correctly the state in the reason of a block if an + admin sets the state to error. + -- BLUEGENE - handle reason of blocks in error more correctly between + restarts of the slurmctld. + -- BLUEGENE - Fix minor potential memory leak when setting block error reason. + -- BLUEGENE - Fix if running in Static/Overlap mode and full system block + is in an error state, won't deny jobs. + -- Fix for accounting where your cluster isn't numbered in counting order + (i.e. 1-9,0 instead of 0-9). The bug would cause 'sacct -N nodename' to + not give correct results on these systems. + -- Fix to GRES allocation logic when resources are associated with specific + CPUs on a node. Patch from Steve Trofinoff, CSCS. + -- Fix bugs in sched/backfill with respect to QOS reservation support and job + time limits. Patch from Alejandro Lucero Palau (Barcelona Supercomputer + Center). + -- BGQ - fix to set up corner correctly for sub block jobs. + -- Major re-write of the CPU Management User and Administrator Guide (web + page) by Martin Perry, Bull. + -- BLUEGENE - If removing blocks from system that once existed cleanup of old + block happens correctly now. + -- Prevent slurmctld crashing with configuration of MaxMemPerCPU=0. + -- Prevent job hold by operator or account coordinator of his own job from + being an Administrator Hold rather than User Hold by default. + -- Cray - Fix for srun.pl parsing to avoid adding spaces between option and + argument (e.g. "-N2" parsed properly without changing to "-N 2"). + -- Major updates to cgroup support by Mark Grondona (LLNL) and Matthieu + Hautreux (CEA) and Sam Lang. Fixes timing problems with respect to the + task_epilog. Allows cgroup mount point to be configurable. Added new + configuration parameters MaxRAMPercent and MaxSwapPercent. Allow cgroup + configuration parameters that are precentages to be floating point. + -- Fixed issue where sview wasn't displaying correct nice value for jobs. + -- Fixed issue where sview wasn't displaying correct min memory per node/cpu + value for jobs. + -- Disable some SelectTypeParameters for select/linear that aren't compatible. + -- Move slurm_select_init to proper place to avoid loading multiple select + plugins in the slurmd. + -- BGQ - Include runjob_plugin.so in the bluegene rpm. + -- Report correct job "Reason" if needed nodes are DOWN, DRAINED, or + NOT_RESPONDING, "Resources" rather than "PartitionNodeLimit". + -- BLUEGENE - Fixed issues with running on a sub-midplane system. + -- Added some missing calls to allow older versions of SLURM to talk to newer. + -- BGQ - allow steps to be ran. + -- Do not attempt to run HeathCheckProgram on powered down nodes. Patch from + Ramiro Alba, Centre Tecnològic de Tranferència de Calor, Spain. + +* Changes in SLURM 2.3.0-2 +========================== + -- Fix for memory issue inside sview. + -- Fix issue where if a job was pending and the slurmctld was restarted a + variable wasn't initialized in the job structure making it so that job + wouldn't run. + +* Changes in SLURM 2.3.0 +======================== + -- BLUEGENE - make sure we only set the jobinfo_select start_loc on a job + when we are on a small block, not a regular one. + -- BGQ - fix issue where not copying the correct amount of memory. + -- BLUEGENE - fix clean start if jobs were running when the slurmctld was + shutdown and then the system size changed. This would probably only happen + if you were emulating a system. + -- Fix sview for calling a cray system from a non-cray system to get the + correct geometry of the system. + -- BLUEGENE - fix to correctly import pervious version of block state file. + -- BLUEGENE - handle loading better when doing a clean start with static + blocks. + -- Add sinfo format and sort option "%n" for NodeHostName and "%o" for + NodeAddr. + -- If a job is deferred due to partition limits, then re-test those limits + after a partition is modified. Patch from Don Lipari. + -- Fix bug which would crash slurmcld if job's owner (not root) tries to clear + a job's licenses by setting value to "". + -- Cosmetic fix for printing out debug info in the priority plugin. + -- In sview when switching from a bluegene machine to a regular linux cluster + and vice versa the node->base partition lists will be displayed if setup + in your .slurm/sviewrc file. + -- BLUEGENE - Fix for creating full system static block on a BGQ system. + -- BLUEGENE - Fix deadlock issue if toggling between Dynamic and Static block + allocation with jobs running on blocks that don't exist in the static + setup. + -- BLUEGENE - Modify code to only give HTC states to BGP systems and not + allow them on Q systems. + -- BLUEGENE - Make it possible for an admin to define multiple dimension + conn_types in a block definition. + -- BGQ - Alter tools to output multiple dimensional conn_type. + +* Changes in SLURM 2.3.0.rc2 +============================ + -- With sched/wiki or sched/wiki2 (Maui or Moab scheduler), insure that a + requeued job's priority is reset to zero. + -- BLUEGENE - fix to run steps correctly in a BGL/P emulated system. + -- Fixed issue where if there was a network issue between the slurmctld and + the DBD where both remained up but were disconnected the slurmctld would + get registered again with the DBD. + -- Fixed issue where if the DBD connection from the ctld goes away because of + a POLLERR the dbd_fail callback is called. + -- BLUEGENE - Fix to smap command-line mode display. + -- Change in GRES behavior for job steps: A job step's default generic + resource allocation will be set to that of the job. If a job step's --gres + value is set to "none" then none of the generic resources which have been + allocated to the job will be allocated to the job step. + -- Add srun environment value of SLURM_STEP_GRES to set default --gres value + for a job step. + -- Require SchedulerTimeSlice configuration parameter to be at least 5 seconds + to avoid thrashing slurmd daemon. + -- Cray - Fix to make nodes state in accounting consistent with state set by + ALPS. + -- Cray - A node DOWN to ALPS will be marked DOWN to SLURM only after reaching + SlurmdTimeout. In the interim, the node state will be NO_RESPOND. This + change makes behavior makes SLURM handling of the node DOWN state more + consistent with ALPS. This change effects only Cray systems. + -- Cray - Fix to work with 4.0.* instead of just 4.0.0 + -- Cray - Modify srun/aprun wrapper to map --exclusive to -F exclusive and + --share to -F share. Note this does not consider the partition's Shared + configuration, so it is an imperfect mapping of options. + -- BLUEGENE - Added notice in the print config to tell if you are emulated + or not. + -- BLUEGENE - Fix job step scalability issue with large task count. + -- BGQ - Improved c-node selection when asked for a sub-block job that + cannot fit into the available shape. + -- BLUEGENE - Modify "scontrol show step" to show I/O nodes (BGL and BGP) or + c-nodes (BGQ) allocated to each step. Change field name from "Nodes=" to + "BP_List=". + -- Code cleanup on step request to get the correct select_jobinfo. + -- Memory leak fixed for rolling up accounting with down clusters. + -- BGQ - fix issue where if first job step is the entire block and then the + next parallel step is ran on a sub block, SLURM won't over subscribe cnodes. + -- Treat duplicate switch name in topology.conf as fatal error. Patch from Rod + Schultz, Bull + -- Minor update to documentation describing the AllowGroups option for a + partition in the slurm.conf. + -- Fix problem with _job_create() when not using qos's. It makes + _job_create() consistent with similar logic in select_nodes(). + -- GrpCPURunMins in a QOS flushed out. + -- Fix for squeue -t "CONFIGURING" to actually work. + -- CRAY - Add cray.conf parameter of SyncTimeout, maximum time to defer job + scheduling if SLURM node or job state are out of synchronization with ALPS. + -- If salloc was run as interactive, with job control, reset the foreground + process group of the terminal to the process group of the parent pid before + exiting. Patch from Don Albert, Bull. + -- BGQ - set up the corner of a sub block correctly based on a relative + position in the block instead of absolute. + -- BGQ - make sure the recently added select_jobinfo of a step launch request + isn't sent to the slurmd where environment variables would be overwritten + incorrectly. + +* Changes in SLURM 2.3.0.rc1 +============================ + -- NOTE THERE HAVE BEEN NEW FIELDS ADDED TO THE JOB AND PARTITION STATE SAVE + FILES AND RPCS. PENDING AND RUNNING JOBS WILL BE LOST WHEN UPGRADING FROM + EARLIER VERSION 2.3 PRE-RELEASES AND RPCS WILL NOT WORK WITH EARLIER + VERSIONS. + -- select/cray: Add support for Accelerator information including model and + memory options. + -- Cray systems: Add support to suspend/resume salloc command to insure that + aprun does not get initiated when the job is suspended. Processes suspended + and resumed are determined by using process group ID and parent process ID, + so some processes may be missed. Since salloc runs as a normal user, it's + ability to identify processes associated with a job is limited. + -- Cray systems: Modify smap and sview to display all nodes even if multiple + nodes exist at each coordinate. + -- Improve efficiency of select/linear plugin with topology/tree plugin + configured, Patch by Andriy Grytsenko (Massive Solutions Limited). + -- For front-end architectures on which job steps are run (emulated Cray and + BlueGene systems only), fix bug that would free memory still in use. + -- Add squeue support to display a job's license information. Patch by Andy + Roosen (University of Deleware). + -- Add flag to the select APIs for job suspend/resume indicating if the action + is for gang scheduling or an explicit job suspend/resume by the user. Only + an explicit job suspend/resume will reset the job's priority and make + resources exclusively held by the job available to other jobs. + -- Fix possible invalid memory reference in sched/backfill. Patch by Andriy + Grytsenko (Massive Solutions Limited). + -- Add select_jobinfo to the task launch RPC. Based upon patch by Andriy + Grytsenko (Massive Solutions Limited). + -- Add DefMemPerCPU/Node and MaxMemPerCPU/Node to partition configuration. + This improves flexibility when gang scheduling only specific partitions. + -- Added new enums to print out when a job is held by a QOS instead of an + association limit. + -- Enhancements to sched/backfill performance with select/cons_res plugin. + Patch from Bjørn-Helge Mevik, University of Oslo. + -- Correct job run time reported by smap for suspended jobs. + -- Improve job preemption logic to avoid preempting more jobs than needed. + -- Add contribs/arrayrun tool providing support for job arrays. Contributed by + Bjørn-Helge Mevik, University of Oslo. NOTE: Not currently packaged as RPM + and manual file editing is required. + -- When suspending a job, wait 2 seconds instead of 1 second between sending + SIGTSTP and SIGSTOP. Some MPI implementation were not stopping within the + 1 second delay. + -- Add support for managing devices based upon Linux cgroup container. Based + upon patch by Yiannis Georgiou, Bull. + -- Fix memory buffering bug if a AllowGroups parameter of a partition has 100 + or more users. Patch by Andriy Grytsenko (Massive Solutions Limited). + -- Fix bug in generic resource tracking of gres associated with specific CPUs. + Resources were being over-allocated. + -- On systems with front-end nodes (IBM BlueGene and Cray) limit batch jobs to + only one CPU of these shared resources. + -- Set SLURM_MEM_PER_CPU or SLURM_MEM_PER_NODE environment variables for both + interactive (salloc) and batch jobs if the job has a memory limit. For Cray + systems also set CRAY_AUTO_APRUN_OPTIONS environment variable with the + memory limit. + -- Fix bug in select/cons_res task distribution logic when tasks-per-node=0. + Patch from Rod Schultz, Bull. + -- Restore node configuration information (CPUs, memory, etc.) for powered + down when slurmctld daemon restarts rather than waiting for the node to be + restored to service and getting the information from the node (NOTE: Only + relevent if FastSchedule=0). + -- For Cray systems with the srun2aprun wrapper, rebuild the srun man page + identifying the srun optioins which are valid on that system. + -- BlueGene: Permit users to specify a separate connection type for each + dimension (e.g. "--conn-type=torus,mesh,torus"). + -- Add the ability for a user to limit the number of leaf switches in a job's + allocation using the --switch option of salloc, sbatch and srun. There is + also a new SchedulerParameters value of max_switch_wait, which a SLURM + administrator can used to set a maximum job delay and prevent a user job + from blocking lower priority jobs for too long. Based on work by Rod + Schultz, Bull. + +* Changes in SLURM 2.3.0.pre6 +============================= + -- NOTE: THERE HAS BEEN A NEW FIELD ADDED TO THE CONFIGURATION RESPONSE RPC + AS SHOWN BY "SCONTROL SHOW CONFIG". THIS FUNCTION WILL ONLY WORK WHEN THE + SERVER AND CLIENT ARE BOTH RUNNING SLURM VERSION 2.3.0.pre6 + -- Modify job expansion logic to support licenses, generic resources, and + currently running job steps. + -- Added an rpath if using the --with-munge option of configure. + -- Add support for multiple sets of DEFAULT node, partition, and frontend + specifications in slurm.conf so that default values can be changed mulitple + times as the configuration file is read. + -- BLUEGENE - Improved logic to place small blocks in free space before freeing + larger blocks. + -- Add optional argument to srun's --kill-on-bad-exit so that user can set + its value to zero and override a SLURM configuration parameter of + KillOnBadExit. + -- Fix bug in GraceTime support for preempted jobs that prevented proper + operation when more than one job was being preempted. Based on patch from + Bill Brophy, Bull. + -- Fix for running sview from a non-bluegene cluster to a bluegene cluster. + Regression from pre5. + -- If job's TMPDIR environment is not set or is not usable, reset to "/tmp". + Patch from Andriy Grytsenko (Massive Solutions Limited). + -- Remove logic for defunct RPC: DBD_GET_JOBS. + -- Propagate DebugFlag changes by scontrol to the plugins. + -- Improve accuracy of REQUEST_JOB_WILL_RUN start time with respect to higher + priority pending jobs. + -- Add -R/--reservation option to squeue command as a job filter. + -- Add scancel support for --clusters option. + -- Note that scontrol and sprio can only support a single cluster at one time. + -- Add support to salloc for a new environment variable SALLOC_KILL_CMD. + -- Add scontrol ability to increment or decrement a job or step time limit. + -- Add support for SLURM_TIME_FORMAT environment variable to control time + stamp output format. Work by Gerrit Renker, CSCS. + -- Fix error handling in mvapich plugin that could cause srun to enter an + infinite loop under rare circumstances. + -- Add support for multiple task plugins. Patch from Andriy Grytsenko (Massive + Solutions Limited). + -- Addition of per-user node/cpu limits for QOS's. Patch from Aaron Knister, + UMBC. + -- Fix logic for multiple job resize operations. + -- BLUEGENE - many fixes to make things work correctly on a L/P system. + -- Fix bug in layout of job step with --nodelist option plus node count. Old + code could allocate too few nodes. + +* Changes in SLURM 2.3.0.pre5 +============================= + -- NOTE: THERE HAS BEEN A NEW FIELD ADDED TO THE JOB STATE FILE. UPGRADES FROM + VERSION 2.3.0-PRE4 WILL RESULT IN LOST JOBS UNLESS THE "orig_dependency" + FIELD IS REMOVED FROM JOB STATE SAVE/RESTORE LOGIC. ON CRAY SYSTEMS A NEW + "confirm_cookie" FIELD WAS ADDED AND HAS THE SAME EFFECT OF DISABLING JOB + STATE RESTORE. + -- BLUEGENE - Improve speed of start up when removing blocks at the beginning. + -- Correct init.d/slurm status to have non-zero exit code if ANY Slurm + damon that should be running on the node is not running. Patch from Rod + Schulz, Bull. + -- Improve accuracy of response to "srun --test-only jobid=#". + -- Fix bug in front-end configurations which reports job_cnt_comp underflow + errors after slurmctld restarts. + -- Eliminate "error from _trigger_slurmctld_event in backup.c" due to lack of + event triggers. + -- Fix logic in BackupController to properly recover front-end node state and + avoid purging active jobs. + -- Added man pages to html pages and the new cpu_management.html page. + Submitted by Martin Perry / Rod Schultz, Bull. + -- Job dependency information will only show the currently active dependencies + rather than the original dependencies. From Dan Rusak, Bull. + -- Add RPCs to get the SPANK environment variables from the slurmctld daemon. + Patch from Andrej N. Gritsenko. + -- Updated plugins/task/cgroup/task_cgroup_cpuset.c to support newer + HWLOC_API_VERSION. + -- Do not build select/bluegene plugin if C++ compiler is not installed. + -- Add new configure option --with-srun2aprun to build an srun command + which is a wrapper over Cray's aprun command and supports many srun + options. Without this option, the srun command will advise the user + to use the aprun command. + -- Change container ID supported by proctrack plugin from 32-bit to 64-bit. + -- Added contribs/cray/libalps_test_programs.tar.gz with tools to validate + SLURM's logic used to support Cray systems. + -- Create RPM for srun command that is a wrapper for the Cray/ALPS aprun + command. Dependent upon .rpmmacros parameter of "%_with_srun2aprun". + -- Add configuration parameter MaxStepCount to limit effect of bad batch + scripts. + -- Moving to github + -- Fix for handling a 2.3 system talking to a 2.2 slurmctld. + -- Add contribs/lua/job_submit.license.lua script. Update job_submit and Lua + related documentation. + -- Test if _make_batch_script() is called with a NULL script. + -- Increase hostlist support from 24k to 64k nodes. + -- Renamed the Accounting Storage database's "DerivedExitString" job field to + "Comment". Provided backward compatible support for "DerivedExitString" in + the sacctmgr tool. + -- Added the ability to save the job's comment field to the Accounting + Storage db (to the formerly named, "DerivedExitString" job field). This + behavior is enabled by a new slurm.conf parameter: + AccountingStoreJobComment. + -- Test if _make_batch_script() is called with a NULL script. + -- Increase hostlist support from 24k to 64k nodes. + -- Fix srun to handle signals correctly when waiting for a step creation. + -- Preserve the last job ID across slurmctld daemon restarts even if the job + state file can not be fully recovered. + -- Made the hostlist functions be able to arbitrarily handle any size + dimension no matter what the size of the cluster is in dimensions. + +* Changes in SLURM 2.3.0.pre4 +============================= + -- Add GraceTime to Partition and QOS data structures. Preempted jobs will be + given this time interval before termination. Work by Bill Brophy, Bull. + -- Add the ability for scontrol and sview to modify slurmctld DebugFlags + values. + -- Various Cray-specific patches: + - Fix a bug in distinguishing XT from XE. + - Avoids problems with empty nodenames on Cray. + - Check whether ALPS is hanging on to nodes, which happens if ALPS has not + yet cleaned up the node partition. + - Stops select/cray from clobbering node_ptr->reason. + - Perform 'safe' release of ALPS reservations using inventory and apkill. + - Compile-time sanity check for the apbasil and apkill files. + - Changes error handling in do_basil_release() (called by + select_g_job_fini()). + - Warn that salloc --no-shell option is not supported on Cray systems. + -- Add a reservation flag of "License_Only". If set, then jobs using the + reservation may use the licenses associated with it plus any compute nodes. + Otherwise the job is limited to the compute nodes associated with the + reservation. + -- Change slurm.conf node configuration parameter from "Procs" to "CPUs". + Both parameters will be supported for now. + -- BLUEGENE - fix for when user requests only midplane names with no count at + job submission time to process the node count correctly. + -- Fix job step resource allocation problem when both node and tasks counts + are specified. New logic selects nodes with larger CPU counts as needed. + -- BGQ - make it so srun wraps runjob (still under construction, but works + for most cases) + -- Permit a job's QOS and Comment field to both change in a single RPC. This + was previously disabled since Moab stored the QOS within the Comment field. + -- Add support for jobs to expand in size. Submit additional batch job with + the option "--dependency=expand:". See web page "faq.html#job_size" + for details. Restrictions to be removed in the future. + -- Added --with-alps-emulation to configure, and also an optional cray.conf + to setup alps location and database information. + -- Modify PMI data types from 16-bits to 32-bits in order to support MPICH2 + jobs with more than 65,536 tasks. Patch from Hongjia Cao, NUDT. + -- Set slurmd's soft process CPU limit equal to it's hard limit and notify the + user if the limit is not infinite. + -- Added proctrack/cgroup and task/cgroup plugins from Matthieu Hautreux, CEA. + -- Fix slurmctld restart logic that could leave nodes in UNKNOWN state for a + longer time than necessary after restart. + +* Changes in SLURM 2.3.0.pre3 +============================= + -- BGQ - Appears to work correctly in emulation mode, no sub blocks just yet. + -- Minor typos fixed + -- Various bug fixes for Cray systems. + -- Fix bug that when setting a compute node to idle state, it was failing to + set the systems up_node_bitmap. + -- BLUEGENE - code reorder + -- BLUEGENE - Now only one select plugin for all Bluegene systems. + -- Modify srun to set the SLURM_JOB_NAME environment variable when srun is + used to create a new job allocation. Not set when srun is used to create a + job step within an existing job allocation. + -- Modify init.d/slurm script to start multiple slurmd daemons per compute + node if so configured. Patch from Matthieu Hautreux, CEA. + -- Change license data structure counters from uint16_t to uint32_t to support + larger license counts. + +* Changes in SLURM 2.3.0.pre2 +============================= + -- Log a job's requeue or cancellation due to preemption to that job's stderr: + "*** JOB 65547 CANCELLED AT 2011-01-21T12:59:33 DUE TO PREEMPTION ***". + -- Added new job termination state of JOB_PREEMPTED, "PR" or "PREEMPTED" to + indicate job termination was due to preemption. + -- Optimize advanced reservations resource selection for computer topology. + The logic has been added to select/linear and select/cons_res, but will + not be enabled until the other select plugins are modified. + -- Remove checkpoint/xlch plugin. + -- Disable deletion of partitions that have unfinished jobs (pending, + running or suspended states). Patch from Martin Perry, BULL. + -- In sview, disable the sorting of node records by name at startup for + clusters over 1000 nodes. Users can enable this by selecting the "Name" + tab. This change dramatically improves scalability of sview. + -- Report error when trying to change a node's state from scontrol for Cray + systems. + -- Do not attempt to read the batch script for non-batch jobs. This patch + eliminates some inappropriate error messages. + -- Preserve NodeHostName when reordering nodes due to system topology. + -- On Cray/ALPS systems do node inventory before scheduling jobs. + -- Disable some salloc options on Cray systems. + -- Disable scontrol's wait_job command on Cray systems. + -- Disable srun command on native Cray/ALPS systems. + -- Updated configure option "--enable-cray-emulation" (still under + development) to emulate a cray XT/XE system, and auto-detect a real + Cray XT/XE systems (removed no longer needed --enable-cray configure + option). Building on native Cray systems requires the + cray-MySQL-devel-enterprise rpm and expat XML parser library/headers. + +* Changes in SLURM 2.3.0.pre1 +============================= + -- Added that when a slurmctld closes the connection to the database it's + registered host and port are removed. + -- Added flag to slurmdbd.conf TrackSlurmctldDown where if set will mark idle + resources as down on a cluster when a slurmctld disconnects or is no + longer reachable. + -- Added support for more than one front-end node to run slurmd on + architectures where the slurmd does not execute on the compute nodes + (e.g. BlueGene). New configuration parameters FrontendNode and FrontendAddr + added. See "man slurm.conf" for more information. + -- With the scontrol show job command when using the --details option, show + a batch job's script. + -- Add ability to create reservations or partitions and submit batch jobs + using sview. Also add the ability to delete reservations and partitions. + -- Added new configuration parameter MaxJobId. Once reached, restart job ID + values at FirstJobId. + -- When restarting slurmctld with priority/basic, increment all job priorities + so the highest job priority becomes TOP_PRIORITY. + +* Changes in SLURM 2.2.8 +======================== + -- Prevent background salloc disconnecting terminal at termination. Patch by + Don Albert, Bull. + -- Fixed issue where preempt mode is skipped when creating a QOS. Patch by + Bill Brophy, Bull. + -- Fixed documention (html) for PriorityUsageResetPeriod to match that in the + man pages. Patch by Nancy Kritkausky, Bull. * Changes in SLURM 2.2.7 ======================== @@ -81,6 +569,8 @@ -- Improve backfill scheduling logic when job specifies --ntasks-per-node and --mem-per-cpu options on a heterogeneous cluster. Patch from Bjorn-Helge Mevik, University of Oslo. + -- Print warning message if srun specifies --cpus-per-task larger than used + to create job allocation. -- Fix issue when changing a users name in accounting, if using wckeys would execute correctly, but bad memcopy would core the DBD. No information would be lost or corrupted, but you would need to restart the DBD. @@ -1594,4739 +2084,3 @@ -- Replaced many calls to getpwuid() with reentrant uid_to_string() -- The slurmstepd will now refresh it's log file handle on a reconfig, previously if a log was rolled any output from the stepd was lost. - -* Changes in SLURM 2.1.0-pre9 -============================= - -- Added the "scontrol update SlurmctldDebug" as the preferred alternative to - the "scontrol setdebug" command. - -- BLUEGENE - made it so when removing a block in an error state the nodes in - the block are set correctly in accounting as not in error. - -- Fixed issue where if slurmdbd is not up qos' are set up correctly for - associations off of cache. - -- scontrol, squeue, sview all display the correct node, cpu count along with - correct corresponding nodelist on completing jobs. - -- Patch (Mark Grondona) fixes serious security vulnerability in SLURM in - the spank_job_env functionality. - -- Improve spank_job_env interface and documentation - -- Add ESPANK_NOT_LOCAL error code to spank_err_t - -- Made the #define DECAY_INTERVAL used in the priority/multifactor plugin - a slurm.conf variable (PriorityCalcPeriod) - -- Added new macro SLURM_VERSION for use in autoconf scripts to determine - current version of slurm installed on system when building against the api. - -- Patch from Matthieu Hautreux that adds an entry into the error file when - a job or step receives a TERM or KILL signal. - -- Make it so env var SLURM_SRUN_COMM_HOST is overwritten if already in - existence in the slurmd. - -* Changes in SLURM 2.1.0-pre8 -============================= - -- Rearranged the "scontrol show job" output into functional groupings - -- Change the salloc/sbatch/srun -P option to -d (dependency) - -- Removed the srun -d option; must use srun --slurmd-debug instead - -- When running the mysql plugin natively MUNGE errors are now eliminated - when sending updates to slurmctlds. - -- Check to make sure we have a default account before looking to - fill in default association. - -- Accounting - Slurmctld and slurmdbd will now set uids of users which were - created after the start of the daemons on reconfig. Slurmdbd will - attempt to set previously non-existant uids every hour. - -- Patch from Aaron Knister and Mark Grondona, to parse correctly quoted - #SBATCH options in a batch script. - -- job_desc_msg_t - in, out, err have been changed to std_in, std_out, - and std_err respectfully. Needed for PySLURM, since Python sees (in) - as a keyword. - -- Changed the type of addr to struct sockaddr_in in _message_socket_accept() - in sattach.c, step_launch.c, and allocate_msg.c, and moved the function - into a common place for all the calls since the code was very similar. - -- proctrack/lua support has been added see contribs/lua/protrack.lua - -- replaced local gtk m4 test with AM_PATH_GTK_2_0 - -- changed AC_CHECK_LIB to AC_SEARCH_LIBS to avoid extra libs in - compile lines. - -- Patch from Matthieu Hautreux to improve error message in slurmd/req.c - -- Added support for split groups from (Matthiu Hautreux CEA) - -- Patch from Mark Grondona to move blcr scripts into pkglibexecdir - -- Patch from Doug Parisek to calculate a job's projected start time under the - builtin scheduler. - -- Removed most global variables out of src/common/jobacct_common.h - -* Changes in SLURM 2.1.0-pre7 -============================= - -- BLUEGENE - make 2.1 run correctly on a real bluegene cluster - -- sacctmgr - Display better debug for when an admin specifies a non-existant - parent account when changing parent accounts. - -- Added a mechanism to the slurmd to defer the epilog from starting until - after a running prolog has finished. - -- If a node reboots inbetween checking status the node is marked down unless - ReturnToService=2 - -- Added -R option to slurmctld to recover partition state also when - restarting or reconfiguring. - -* Changes in SLURM 2.1.0-pre6 -============================= - -- When getting information about nodes in hidden partitions, return a node - name of NULL rather than returning no information about the node so that - node index information is still valid. - -- When querying database for jobs in certain state and a time period is - given only jobs in that state during the period will be returned, - previously if a time period was given in sacct jobs eligible to run or - running would be displayed, which is still the default if no states are - requested. - -- One can now query jobs based on size (nodes and or cpus) (mysql plugin only) - -- Applied patch from Mark Grondona that tests for a missing config file before - any other processing in spank_init(). This now prevents fatal errors from - being mistakenly treated as recoverable. - -- --enable-debug no longer has to be stated at configure time to have - the slurmctld or slurmstepd dump core on a seg fault. - -- Moved the errant slurm_job_node_ready() declaration from job_info.h to - slurm.h and deleted job_info.h. - -- Added the slurm_job_cpus_allocated_on_node_id() - slurm_job_cpus_allocated_on_node() API for working with the - job_resources_t structure. - -- BLUEGENE - speed up start up for systems that have many blocks (100+) - configured on the system. - -* Changes in SLURM 2.1.0-pre5 -============================= - -- Add squeue option "--start" to report expected start time of pending jobs. - -- Sched/backfill plugin modified to set expected start time of pending jobs. - -- Add SchedulerParameters option of "max_job_bf=#" to control how far down - the queue of pending jobs that SLURM searches in an attempt backfill - schedule them. The default value is 50 jobs. - -- Fixed cause of squeue -o "%C" seg fault. - -- Add -"-signal=@