From 60123eec58eb8a34038a6455b4c5d40ebb18ddef Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 14:15:33 +0000 Subject: [PATCH 01/15] swap to no-ohpc version of openhpc role --- requirements.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.yml b/requirements.yml index 482d477f2..1aa185f3c 100644 --- a/requirements.yml +++ b/requirements.yml @@ -3,7 +3,7 @@ roles: - src: stackhpc.nfs version: v22.9.1 - src: https://github.com/stackhpc/ansible-role-openhpc.git - version: v0.20.0 # Allow multiple empty partitions by @sjpb in #156 + version: feat/no-ohpc name: stackhpc.openhpc - src: https://github.com/stackhpc/ansible-node-exporter.git version: feature/no-install From 1d47689d0c3c08dbf5f5cff51051602e2d19dd67 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 14:27:21 +0000 Subject: [PATCH 02/15] use specific openhpc install play files --- ansible/fatimage.yml | 5 ++--- ansible/slurm.yml | 9 ++++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ansible/fatimage.yml b/ansible/fatimage.yml index 36b608499..9a3f140b7 100644 --- a/ansible/fatimage.yml +++ b/ansible/fatimage.yml @@ -39,10 +39,9 @@ gather_facts: no tasks: # - import_playbook: slurm.yml - - name: OpenHPC - import_role: + - include_role: name: stackhpc.openhpc - tasks_from: install.yml + tasks_from: "install-{{ openhpc_install_type }}.yml" - name: Include distribution variables for osc.ood include_vars: "{{ appliances_repository_root }}/ansible/roles/osc.ood/vars/Rocky.yml" diff --git a/ansible/slurm.yml b/ansible/slurm.yml index 080c74dcb..9463b40fc 100644 --- a/ansible/slurm.yml +++ b/ansible/slurm.yml @@ -23,10 +23,17 @@ hosts: openhpc become: yes tags: + - slurm - openhpc tasks: - - import_role: + - include_role: + name: stackhpc.openhpc + tasks_from: "install-{{ openhpc_install_type }}.yml" + tags: install + - include_role: name: stackhpc.openhpc + tasks_from: runtime.yml + tags: runtime - name: Set locked memory limits on user-facing nodes hosts: From cee6770836447f494bac92a10f6ed9cd47f40817 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 14:28:40 +0000 Subject: [PATCH 03/15] bugfix slurm user not existing on non-control nodes --- environments/common/inventory/group_vars/all/defaults.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/environments/common/inventory/group_vars/all/defaults.yml b/environments/common/inventory/group_vars/all/defaults.yml index 528dede1d..a45d1ac23 100644 --- a/environments/common/inventory/group_vars/all/defaults.yml +++ b/environments/common/inventory/group_vars/all/defaults.yml @@ -48,7 +48,6 @@ appliances_local_users_default: shell: /sbin/nologin uid: 202 system: true - enable: "{{ 'control' in group_names }}" - group: name: prometheus From 251389fd7ca501d039e03194a820186d21185e55 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 14:29:48 +0000 Subject: [PATCH 04/15] add default openhpc_install_type --- environments/common/inventory/group_vars/all/openhpc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environments/common/inventory/group_vars/all/openhpc.yml b/environments/common/inventory/group_vars/all/openhpc.yml index 1cb963657..d3f4964af 100644 --- a/environments/common/inventory/group_vars/all/openhpc.yml +++ b/environments/common/inventory/group_vars/all/openhpc.yml @@ -2,7 +2,7 @@ # See: https://github.com/stackhpc/ansible-role-openhpc # for variable definitions - +openhpc_install_type: ohpc # use "ohcp" for an OpenHPC-based system or "generic" if providing binaries openhpc_enable: control: "{{ inventory_hostname in groups['control'] }}" batch: "{{ inventory_hostname in groups['compute'] }}" From a49f480dc3e8c290171080f6da040282bb36a66e Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 14:36:19 +0000 Subject: [PATCH 05/15] openhpc_ role config for custom binaries --- .../inventory/group_vars/openhpc/overrides.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml b/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml index 5aac5f8ad..597a43abd 100644 --- a/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml +++ b/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml @@ -1,3 +1,21 @@ +openhpc_install_type: generic # i.e. don't want OpenHPC + +openhpc_generic_packages: # system package installs: + # below are default in the role, required to get slurm to work: + - munge + - mariadb-connector-c # only actually needed on slurmdbd + - hwloc-libs # only actuall needed on slurmd + # below added here to get pingpong and pingmatrix hpctests working: + - mpitests-openmpi + +# define paths to slurm on NFS clients: +openhpc_sbin_dir: /slurm/23.02.5/sbin +openhpc_lib_dir: /slurm/23.02.5/lib/slurm +openhpc_bin_dir: /slurm/23.02.5/bin + +# modify slurm.conf: openhpc_config_extra: SlurmctldDebug: debug SlurmdDebug: debug + Epilog: '' # required b/c the default slurm.conf uses an Epilog provided by openhpc pkgs + # PluginDir: "{{ openhpc_lib_dir }}" From fbaaba296228e59f42273cd21f510045a2419ecc Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 14:50:39 +0000 Subject: [PATCH 06/15] NFS export localhost directory to cluster for /slurm --- .../inventory/group_vars/all/nfs.yml | 26 +++++++++++++++++++ environments/.stackhpc/inventory/local_nfs | 8 ++++++ 2 files changed, 34 insertions(+) create mode 100644 environments/.stackhpc/inventory/group_vars/all/nfs.yml create mode 100644 environments/.stackhpc/inventory/local_nfs diff --git a/environments/.stackhpc/inventory/group_vars/all/nfs.yml b/environments/.stackhpc/inventory/group_vars/all/nfs.yml new file mode 100644 index 000000000..cfd815ea5 --- /dev/null +++ b/environments/.stackhpc/inventory/group_vars/all/nfs.yml @@ -0,0 +1,26 @@ +--- + +# Override defaults to provide 2x NFS exports here: +# controlnode:/exports/home --> /home +# localhost:${REPO_ROOT}/slurm/build --> /slurm + +nfs_server_default: "{{ hostvars[groups['control'] | first ].internal_address }}" + +nfs_configurations: + - comment: Export /exports/home from Slurm control node as /home + nfs_enable: + server: "{{ inventory_hostname in groups['control'] }}" + # Don't mount share on server where it is exported from... + # Could do something like `nfs_clients: "{{ 'nfs_servers' not in group_names }}"` instead. + clients: "{{ inventory_hostname in groups['cluster'] and inventory_hostname not in groups['control'] }}" + nfs_server: "{{ nfs_server_default }}" + nfs_export: "/exports/home" # assumes skeleton TF is being used + nfs_client_mnt_point: "/home" + - comment: Export slurm directory from localhost + nfs_enable: + server: "{{ inventory_hostname == 'localhost' }}" + clients: "{{ inventory_hostname in groups['cluster'] }}" # TODO, should be slurm really I guess + nfs_server: "{{ hostvars['localhost'].ansible_host }}" + nfs_export: "{{ appliances_repository_root }}/slurm/build/" + nfs_client_mnt_point: "/slurm" + # nfs_client_mnt_state: absent diff --git a/environments/.stackhpc/inventory/local_nfs b/environments/.stackhpc/inventory/local_nfs new file mode 100644 index 000000000..c5354aa37 --- /dev/null +++ b/environments/.stackhpc/inventory/local_nfs @@ -0,0 +1,8 @@ +nfs: + hosts: + localhost: + ansible_connection: local + ansible_python_interpreter: "{{ansible_playbook_python}}" + # ansible_host: '192.168.3.95' # interface on "portal-internal" network + nfs_interface: eth0 + ansible_host: "{{ ((lookup('pipe', 'ip -4 --json addr show ' + nfs_interface) | from_json | first).addr_info | first).local }}" From 9f888c1a08d4c50151ddc09930266df17a17b2d7 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 15:03:21 +0000 Subject: [PATCH 07/15] modify hpctests to support non-OpenHPC slurm --- ansible/roles/hpctests/README.md | 2 ++ ansible/roles/hpctests/defaults/main.yml | 2 ++ ansible/roles/hpctests/templates/pingmatrix.sh.j2 | 3 ++- ansible/roles/hpctests/templates/pingpong.sh.j2 | 6 +++--- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ansible/roles/hpctests/README.md b/ansible/roles/hpctests/README.md index ee37791ec..c6a28d26b 100644 --- a/ansible/roles/hpctests/README.md +++ b/ansible/roles/hpctests/README.md @@ -38,6 +38,8 @@ The following variables should not generally be changed: - `hpctests_pingpong_plot`: Whether to plot pingpong results. Default `yes`. - `hpctests_hpl_modules`: As above but for hpl tests. - `hpctests_hpl_version`: Version of HPL +- `hpctests_extra_paths`: List of additional paths to add to $PATH in `pingpong` and `pingmatrix` sbatch scripts. +- `hpctests_pingpong_command`: Command to use to run IMB-MPI1 pingpong. Dependencies ------------ diff --git a/ansible/roles/hpctests/defaults/main.yml b/ansible/roles/hpctests/defaults/main.yml index 280fd454e..08831b7c2 100644 --- a/ansible/roles/hpctests/defaults/main.yml +++ b/ansible/roles/hpctests/defaults/main.yml @@ -1,7 +1,9 @@ --- hpctests_rootdir: +hpctests_extra_paths: [] hpctests_pingmatrix_modules: [gnu12 openmpi4] hpctests_pingpong_modules: [gnu12 openmpi4 imb] +hpctests_pingpong_command: 'mpirun IMB-MPI1 pingpong' # NB 'srun --mpi=pmi2 IMB-MPI1 pingpong' doesn't work in ohpc v2.1 hpctests_pingpong_plot: yes hpctests_hpl_modules: [gnu12 openmpi4 openblas] hpctests_outdir: "{{ lookup('env', 'APPLIANCES_ENVIRONMENT_ROOT') }}/hpctests" diff --git a/ansible/roles/hpctests/templates/pingmatrix.sh.j2 b/ansible/roles/hpctests/templates/pingmatrix.sh.j2 index 17fb3fd6a..26b4de6c2 100644 --- a/ansible/roles/hpctests/templates/pingmatrix.sh.j2 +++ b/ansible/roles/hpctests/templates/pingmatrix.sh.j2 @@ -12,7 +12,8 @@ export UCX_NET_DEVICES={{ hpctests_ucx_net_devices }} echo SLURM_JOB_NODELIST: $SLURM_JOB_NODELIST echo SLURM_JOB_ID: $SLURM_JOB_ID echo UCX_NET_DEVICES: $UCX_NET_DEVICES -module load {{ hpctests_pingmatrix_modules | join(' ' ) }} +{% if hpctests_pingmatrix_modules %}module load {{ hpctests_pingmatrix_modules | join(' ' ) }}{% endif %} +{% if hpctests_extra_paths %}export PATH={{ hpctests_extra_paths | join(':') }}:$PATH{% endif %} mpicc -o nxnlatbw mpi_nxnlatbw.c mpirun nxnlatbw diff --git a/ansible/roles/hpctests/templates/pingpong.sh.j2 b/ansible/roles/hpctests/templates/pingpong.sh.j2 index e74e52539..ae7baa45a 100644 --- a/ansible/roles/hpctests/templates/pingpong.sh.j2 +++ b/ansible/roles/hpctests/templates/pingpong.sh.j2 @@ -12,7 +12,7 @@ export UCX_NET_DEVICES={{ hpctests_ucx_net_devices }} echo SLURM_JOB_NODELIST: $SLURM_JOB_NODELIST echo SLURM_JOB_ID: $SLURM_JOB_ID echo UCX_NET_DEVICES: $UCX_NET_DEVICES -module load {{ hpctests_pingpong_modules | join(' ' ) }} +{% if hpctests_pingpong_modules %}module load {{ hpctests_pingpong_modules | join(' ' ) }}{% endif %} +{% if hpctests_extra_paths %}export PATH={{ hpctests_extra_paths | join(':') }}:$PATH{% endif %} -#srun --mpi=pmi2 IMB-MPI1 pingpong # doesn't work in ohpc v2.1 -mpirun IMB-MPI1 pingpong +{{ hpctests_pingpong_command }} From 446ec910d1e287c4dcd70cd42b0633ea1546b28e Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 15:03:49 +0000 Subject: [PATCH 08/15] add stackhpc config for hpctests with non-openhpc slurm --- .../.stackhpc/inventory/group_vars/all/hpctests.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 environments/.stackhpc/inventory/group_vars/all/hpctests.yml diff --git a/environments/.stackhpc/inventory/group_vars/all/hpctests.yml b/environments/.stackhpc/inventory/group_vars/all/hpctests.yml new file mode 100644 index 000000000..30fde65e2 --- /dev/null +++ b/environments/.stackhpc/inventory/group_vars/all/hpctests.yml @@ -0,0 +1,8 @@ + +# Configure hpctests pingpong and pingmatrix to use system packages not OpenHPC modules: + +hpctests_extra_paths: + - /usr/lib64/openmpi/bin # for mpitests-openmpi +hpctests_pingmatrix_modules: [] +hpctests_pingpong_modules: [] +hpctests_pingpong_command: mpirun mpitests-IMB-MPI1 pingpong From 9dea95087bfbeef22b35bf00fe0519749958ee36 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 15:04:50 +0000 Subject: [PATCH 09/15] use GenericCloud image, i.e. w/o OpenHPC --- environments/.stackhpc/terraform/main.tf | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/environments/.stackhpc/terraform/main.tf b/environments/.stackhpc/terraform/main.tf index 4863de814..5596c532d 100644 --- a/environments/.stackhpc/terraform/main.tf +++ b/environments/.stackhpc/terraform/main.tf @@ -13,9 +13,9 @@ variable "cluster_name" { variable "cluster_image" { description = "single image for all cluster nodes - a convenience for CI" type = string - default = "openhpc-230811-1548-a49164d1" # https://github.com/stackhpc/ansible-slurm-appliance/pull/301 + # default = "openhpc-230811-1548-a49164d1" # https://github.com/stackhpc/ansible-slurm-appliance/pull/301 # default = "Rocky-8-GenericCloud-Base-8.7-20221130.0.x86_64.qcow2" - # default = "Rocky-8-GenericCloud-8.6.20220702.0.x86_64.qcow2" + default = "Rocky-8-GenericCloud-8.6.20220702.0.x86_64.qcow2" } variable "cluster_net" {} @@ -67,8 +67,6 @@ module "cluster" { compute_nodes = { compute-0: "small" compute-1: "small" - compute-2: "extra" - compute-3: "extra" } volume_backed_instances = var.volume_backed_instances From 8cdc4a6e5a9f5ac5636a3cb4894892b857f7b1ba Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 15:27:01 +0000 Subject: [PATCH 10/15] move slurm build to .stackhpc environment --- environments/.stackhpc/inventory/group_vars/all/nfs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environments/.stackhpc/inventory/group_vars/all/nfs.yml b/environments/.stackhpc/inventory/group_vars/all/nfs.yml index cfd815ea5..fa01900b8 100644 --- a/environments/.stackhpc/inventory/group_vars/all/nfs.yml +++ b/environments/.stackhpc/inventory/group_vars/all/nfs.yml @@ -21,6 +21,6 @@ nfs_configurations: server: "{{ inventory_hostname == 'localhost' }}" clients: "{{ inventory_hostname in groups['cluster'] }}" # TODO, should be slurm really I guess nfs_server: "{{ hostvars['localhost'].ansible_host }}" - nfs_export: "{{ appliances_repository_root }}/slurm/build/" + nfs_export: "{{ appliances_environment_root }}/slurm/build/" nfs_client_mnt_point: "/slurm" # nfs_client_mnt_state: absent From 2a81f6328dda8b34a6b67e9096fe9df0fc81b5f0 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 15:27:26 +0000 Subject: [PATCH 11/15] add containerised Slurm build --- environments/.stackhpc/slurm/Dockerfile | 66 ++++++ environments/.stackhpc/slurm/README.md | 25 +++ environments/.stackhpc/slurm/configure.help | 219 ++++++++++++++++++++ 3 files changed, 310 insertions(+) create mode 100644 environments/.stackhpc/slurm/Dockerfile create mode 100644 environments/.stackhpc/slurm/README.md create mode 100644 environments/.stackhpc/slurm/configure.help diff --git a/environments/.stackhpc/slurm/Dockerfile b/environments/.stackhpc/slurm/Dockerfile new file mode 100644 index 000000000..80bb323b0 --- /dev/null +++ b/environments/.stackhpc/slurm/Dockerfile @@ -0,0 +1,66 @@ +FROM rockylinux:8 as build-stage + +ARG SLURM_VERSION=23.02.5 # From https://www.schedmd.com/downloads.php +ARG SLURM_PREFIX=/slurm # Should match directory Slurm is installed at + +RUN set -ex \ + && yum makecache \ + && yum -y update \ + && yum -y install dnf-plugins-core epel-release \ + && yum -y install dnf-plugins-core \ + && yum config-manager --set-enabled powertools \ + && yum -y install \ + wget \ + bzip2 \ + perl \ + gcc \ + gcc-c++\ + git \ + gnupg \ + make \ + munge \ + munge-devel \ + python3-devel \ + python3-pip \ + python3 \ + mariadb-server \ + mariadb-devel \ + psmisc \ + bash-completion \ + vim-enhanced \ + http-parser-devel \ + json-c-devel \ + mpitests-openmpi \ + pmix-devel \ + hwloc \ + hwloc-devel \ + && yum clean all \ + && rm -rf /var/cache/yum + +RUN alternatives --set python /usr/bin/python3 + +RUN pip3 install Cython nose + +RUN set -x \ + && wget https://download.schedmd.com/slurm/slurm-${SLURM_VERSION}.tar.bz2 \ + && tar --bzip -x -f slurm*tar.bz2 + +WORKDIR /slurm-${SLURM_VERSION} + +RUN set -x && ./configure \ + --enable-debug \ + --prefix=${SLURM_PREFIX} \ + --without-rpath \ + --sysconfdir=/etc/slurm \ + --with-mysql_config=/usr/bin + +RUN set -x && make install + +ENTRYPOINT ["/bin/bash"] + + +FROM scratch as export-stage + +ARG SLURM_PREFIX=/slurm # Should match directory Slurm is installed at +# RUN ls ${SLURM_PREFIX} +COPY --from=build-stage ${SLURM_PREFIX}/ . diff --git a/environments/.stackhpc/slurm/README.md b/environments/.stackhpc/slurm/README.md new file mode 100644 index 000000000..8c8b2c07b --- /dev/null +++ b/environments/.stackhpc/slurm/README.md @@ -0,0 +1,25 @@ +This uses a podman container to build Slurm, which is then copied out of the container into `build/23.02.5/`. +The `build/` directory is NFS-exported to the cluster as `/slurm`, so nodes see `/slurm/23.02.5`. + +There are some niggles worth noting: +- The prefix Slurm is built at in the container must match the path the nodes see it at (i.e. from the NFS client side). This + is because: + - The `slurm{ctld,d,dbd}` executables hardcode an RPATH, even when passing the `--without-rpath` flag to ./configure. + This means unless the path they are executed at matches the build prefix, they can't find `libslurmfull.so` on startup, + even with entries in `/etc/ld.so.conf.d/`. + - `PluginDir` defaults to being based on the build prefix. Although it can be overriden in `slurm.conf`, the `slurmd`s do not appear to get this parameter when running configless, so they won't start saying the (default) plugin dir doesn't exist +- `--sysconfdir` is specifically set to `/etc/slurm`, as otherwise it is based on the build prefix. + + +Assuming `podman` is installed, running the following in this directory will build Slurm and copy it out to the host. As the host's root disk was small, the below includes some TMPDIR/tmpdir options to try to place temporary build artifacts on a larger attached volume. However, ~10GB free was still required on the root disk to complete the build. + + $ export TMPDIR=/mnt/image-storage/tmp # some large persistent storage + $ mkdir -p build/23.02.5/ + $ rm -rf build/23.02.5/* + $ podman --tmpdir=/mnt/image-storage/tmp build \ + --build-arg SLURM_PREFIX=/slurm/23.02.5/ \ + . -t slurm-23.02.5 \ + --output build/23.02.5/ + + +As a convenience, the output of "./configure --help" is included as `configure.help`. diff --git a/environments/.stackhpc/slurm/configure.help b/environments/.stackhpc/slurm/configure.help new file mode 100644 index 000000000..e1398a979 --- /dev/null +++ b/environments/.stackhpc/slurm/configure.help @@ -0,0 +1,219 @@ +`configure' configures slurm 23.02 to adapt to many kinds of systems. + +Usage: ./configure [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print `checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for `--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or `..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [/usr/local] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, `make install' will install all the files in +`/usr/local/bin', `/usr/local/lib' etc. You can specify +an installation prefix other than `/usr/local' using `--prefix', +for instance `--prefix=$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/slurm] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-pam enable PAM (Pluggable Authentication Modules) + support + --enable-load-env-no-login + enable --get-user-env option to load user + environment without .login + --disable-x11 disable internal X11 support + --enable-selinux enable internal SELinux support + --disable-glibtest do not try to compile and run a test GLIB program + --disable-gtktest do not try to compile and run a test GTK+ program + --enable-cray-network Run Slurm on a non-Cray system with a Cray network + --enable-really-no-cray Disable cray support for eslogin machines + --disable-optimizations disable optimizations (sets -O0) + --enable-developer enable developer options (asserts, -Werror - also + sets --enable-debug as well) + --disable-debug disable debugging symbols and compile with + optimizations + --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-slurmrestd disable slurmrestd support + --enable-multiple-slurmd + enable multiple-slurmd support + --enable-deprecated enable deprecated + +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-mysql_config=PATH + Specify path of directory where mysql_config binary + exists + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-pam_dir=PATH Specify path to PAM module installation + --without-shared-libslurm + statically link to libslurm.o instead of the shared + libslurm lib - can dramatically increase the + footprint of Slurm. + --with-json=PATH Specify path to json-c installation + --with-jwt=PATH Specify path to jwt installation + --with-http-parser=PATH Specify path to HTTP Parser installation + --with-yaml=PATH Specify path to libyaml installation + --with-dimensions=N set system dimension count for generic computer + system + --with-ofed=PATH Specify path to ofed installation + --with-hdf5=yes/no/PATH location of h5cc or h5pcc for HDF5 configuration + --with-lz4=PATH Specify path to liblz4 installation + --with-hwloc=PATH Specify path to hwloc installation + --with-nvml=PATH Specify path to CUDA installation + --with-rsmi=PATH Specify path to rsmi installation + --with-oneapi=PATH Specify path to oneAPI installation + --with-pmix=PATH Specify path to pmix installation(s). Multiple + version directories can be ':' delimited. + --with-freeipmi=PATH Specify path to freeipmi installation + --with-rrdtool=PATH Specify path to rrdtool-devel installation + --with-ucx=PATH Build with Unified Communication X library support + --with-rdkafka=PATH Specify path to librdkafka installation + --with-bpf=PATH Specify path to bpf header + --with-cray_dir=PATH Specify path to Cray file installation - /opt/cray + by default + --with-datawarp=PATH Specify path to DataWarp installation + --with-hpe-slingshot=PATH + Specify path to HPE Slingshot installation dir + --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] + --with-slurmctld-port-count=N + set slurmctld default port count [1] + --with-slurmrestd-port=N + set slurmrestd default port [6820] + --with-netloc=PATH Specify path to netloc installation + --without-readline compile without readline support + --with-systemdsystemunitdir=DIR + Directory for systemd service files + --with-munge=PATH Specify path to munge installation + --with-libcurl=PREFIX look for the curl library in PREFIX/lib and headers + in PREFIX/include + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + 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 + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CXXCPP C++ preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + CPP C preprocessor + libselinux_CFLAGS + C compiler flags for libselinux, overriding pkg-config + libselinux_LIBS + linker flags for libselinux, overriding pkg-config + dbus_CFLAGS C compiler flags for dbus, overriding pkg-config + dbus_LIBS linker flags for dbus, overriding pkg-config + CHECK_CFLAGS + C compiler flags for CHECK, overriding pkg-config + CHECK_LIBS linker flags for CHECK, overriding pkg-config + GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config + GLIB_LIBS linker flags for GLIB, overriding pkg-config + GLIB_GENMARSHAL + value of glib_genmarshal for glib-2.0, overriding pkg-config + GOBJECT_QUERY + value of gobject_query for glib-2.0, overriding pkg-config + GLIB_MKENUMS + value of glib_mkenums for glib-2.0, overriding pkg-config + GLIB_COMPILE_RESOURCES + value of glib_compile_resources for gio-2.0, overriding + pkg-config + lua_CFLAGS C compiler flags for lua, overriding pkg-config + lua_LIBS linker flags for lua, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +slurm home page: . From 79a2cc5e6c76fe293c3188aef6818809860b3d69 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Wed, 20 Sep 2023 15:31:40 +0000 Subject: [PATCH 12/15] simplify localhosts' NFS definition --- environments/.stackhpc/inventory/local_nfs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/environments/.stackhpc/inventory/local_nfs b/environments/.stackhpc/inventory/local_nfs index c5354aa37..2f8feaa1c 100644 --- a/environments/.stackhpc/inventory/local_nfs +++ b/environments/.stackhpc/inventory/local_nfs @@ -3,6 +3,5 @@ nfs: localhost: ansible_connection: local ansible_python_interpreter: "{{ansible_playbook_python}}" - # ansible_host: '192.168.3.95' # interface on "portal-internal" network + ansible_host: '192.168.3.95' # interface on "portal-internal" network nfs_interface: eth0 - ansible_host: "{{ ((lookup('pipe', 'ip -4 --json addr show ' + nfs_interface) | from_json | first).addr_info | first).local }}" From 49038fbdb3235c445448f3a8b1397b3d2d4db833 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Tue, 26 Sep 2023 13:48:07 +0000 Subject: [PATCH 13/15] fix tags for openhpc role (need to run entire playbook due to changes to slurm.conf) --- ansible/slurm.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ansible/slurm.yml b/ansible/slurm.yml index 9463b40fc..4144db5f4 100644 --- a/ansible/slurm.yml +++ b/ansible/slurm.yml @@ -23,7 +23,6 @@ hosts: openhpc become: yes tags: - - slurm - openhpc tasks: - include_role: From 29c801805de0a9fef227a8991f13cb3feea4a97f Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Tue, 26 Sep 2023 13:51:00 +0000 Subject: [PATCH 14/15] use /nopt/slurm/... directories, with prefix/sysconfdir set in build too --- .../.stackhpc/inventory/group_vars/all/nfs.yml | 3 ++- .../inventory/group_vars/openhpc/overrides.yml | 8 ++++---- environments/.stackhpc/slurm/Dockerfile | 3 ++- environments/.stackhpc/slurm/README.md | 12 +++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/environments/.stackhpc/inventory/group_vars/all/nfs.yml b/environments/.stackhpc/inventory/group_vars/all/nfs.yml index fa01900b8..cec660d0e 100644 --- a/environments/.stackhpc/inventory/group_vars/all/nfs.yml +++ b/environments/.stackhpc/inventory/group_vars/all/nfs.yml @@ -16,11 +16,12 @@ nfs_configurations: nfs_server: "{{ nfs_server_default }}" nfs_export: "/exports/home" # assumes skeleton TF is being used nfs_client_mnt_point: "/home" + # nfs_client_mnt_state: absent - comment: Export slurm directory from localhost nfs_enable: server: "{{ inventory_hostname == 'localhost' }}" clients: "{{ inventory_hostname in groups['cluster'] }}" # TODO, should be slurm really I guess nfs_server: "{{ hostvars['localhost'].ansible_host }}" nfs_export: "{{ appliances_environment_root }}/slurm/build/" - nfs_client_mnt_point: "/slurm" + nfs_client_mnt_point: "/nopt/slurm" # nfs_client_mnt_state: absent diff --git a/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml b/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml index 597a43abd..8c159a1f6 100644 --- a/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml +++ b/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml @@ -9,13 +9,13 @@ openhpc_generic_packages: # system package installs: - mpitests-openmpi # define paths to slurm on NFS clients: -openhpc_sbin_dir: /slurm/23.02.5/sbin -openhpc_lib_dir: /slurm/23.02.5/lib/slurm -openhpc_bin_dir: /slurm/23.02.5/bin +openhpc_sbin_dir: /nopt/slurm/23.02.5/sbin +openhpc_lib_dir: /nopt/slurm/23.02.5/lib/slurm +openhpc_bin_dir: /nopt/slurm/23.02.5/bin +openhpc_slurm_conf_path: /nopt/slurm/etc/slurm.conf # modify slurm.conf: openhpc_config_extra: SlurmctldDebug: debug SlurmdDebug: debug Epilog: '' # required b/c the default slurm.conf uses an Epilog provided by openhpc pkgs - # PluginDir: "{{ openhpc_lib_dir }}" diff --git a/environments/.stackhpc/slurm/Dockerfile b/environments/.stackhpc/slurm/Dockerfile index 80bb323b0..fa8859b2d 100644 --- a/environments/.stackhpc/slurm/Dockerfile +++ b/environments/.stackhpc/slurm/Dockerfile @@ -2,6 +2,7 @@ FROM rockylinux:8 as build-stage ARG SLURM_VERSION=23.02.5 # From https://www.schedmd.com/downloads.php ARG SLURM_PREFIX=/slurm # Should match directory Slurm is installed at +ARG SLURM_SYSCONFDIR=/etc/slurm # Should match directory slurm.conf will be in RUN set -ex \ && yum makecache \ @@ -51,7 +52,7 @@ RUN set -x && ./configure \ --enable-debug \ --prefix=${SLURM_PREFIX} \ --without-rpath \ - --sysconfdir=/etc/slurm \ + --sysconfdir=${SLURM_SYSCONFDIR} \ --with-mysql_config=/usr/bin RUN set -x && make install diff --git a/environments/.stackhpc/slurm/README.md b/environments/.stackhpc/slurm/README.md index 8c8b2c07b..90f524fca 100644 --- a/environments/.stackhpc/slurm/README.md +++ b/environments/.stackhpc/slurm/README.md @@ -1,15 +1,13 @@ This uses a podman container to build Slurm, which is then copied out of the container into `build/23.02.5/`. The `build/` directory is NFS-exported to the cluster as `/slurm`, so nodes see `/slurm/23.02.5`. -There are some niggles worth noting: -- The prefix Slurm is built at in the container must match the path the nodes see it at (i.e. from the NFS client side). This - is because: +The following arguments to `./configure` are important: +- `--prefix` must match the path the binaries appear to be at (i.e. from the NFS client side). This is because: - The `slurm{ctld,d,dbd}` executables hardcode an RPATH, even when passing the `--without-rpath` flag to ./configure. This means unless the path they are executed at matches the build prefix, they can't find `libslurmfull.so` on startup, even with entries in `/etc/ld.so.conf.d/`. - `PluginDir` defaults to being based on the build prefix. Although it can be overriden in `slurm.conf`, the `slurmd`s do not appear to get this parameter when running configless, so they won't start saying the (default) plugin dir doesn't exist -- `--sysconfdir` is specifically set to `/etc/slurm`, as otherwise it is based on the build prefix. - +- `--sysconfdir` must match the path the `slurm.conf` file is at on the nodes. Otherwise `s*` commands running on nodes *without* `slurmd` (i.e. the control node only, for a standard Slurm appliance configuration) cannot find the configuration file unless the `SLURM_CONF` environment variable set. Assuming `podman` is installed, running the following in this directory will build Slurm and copy it out to the host. As the host's root disk was small, the below includes some TMPDIR/tmpdir options to try to place temporary build artifacts on a larger attached volume. However, ~10GB free was still required on the root disk to complete the build. @@ -17,9 +15,9 @@ Assuming `podman` is installed, running the following in this directory will bui $ mkdir -p build/23.02.5/ $ rm -rf build/23.02.5/* $ podman --tmpdir=/mnt/image-storage/tmp build \ - --build-arg SLURM_PREFIX=/slurm/23.02.5/ \ + --build-arg SLURM_PREFIX=/nopt/slurm/23.02.5/ \ + --build-arg SLURM_SYSCONFDIR=/nopt/slurm/etc/ \ . -t slurm-23.02.5 \ --output build/23.02.5/ - As a convenience, the output of "./configure --help" is included as `configure.help`. From 2253fb1cb72ea1d77d6ddda05b8a5b4da8894506 Mon Sep 17 00:00:00 2001 From: Steve Brasier Date: Fri, 10 Nov 2023 14:43:58 +0000 Subject: [PATCH 15/15] remove stackhpc demo config for openhpc-less slurm --- .../inventory/group_vars/all/hpctests.yml | 8 - .../inventory/group_vars/all/nfs.yml | 27 --- .../group_vars/openhpc/overrides.yml | 18 -- environments/.stackhpc/inventory/local_nfs | 7 - environments/.stackhpc/slurm/Dockerfile | 67 ------ environments/.stackhpc/slurm/README.md | 23 -- environments/.stackhpc/slurm/configure.help | 219 ------------------ 7 files changed, 369 deletions(-) delete mode 100644 environments/.stackhpc/inventory/group_vars/all/hpctests.yml delete mode 100644 environments/.stackhpc/inventory/group_vars/all/nfs.yml delete mode 100644 environments/.stackhpc/inventory/local_nfs delete mode 100644 environments/.stackhpc/slurm/Dockerfile delete mode 100644 environments/.stackhpc/slurm/README.md delete mode 100644 environments/.stackhpc/slurm/configure.help diff --git a/environments/.stackhpc/inventory/group_vars/all/hpctests.yml b/environments/.stackhpc/inventory/group_vars/all/hpctests.yml deleted file mode 100644 index 30fde65e2..000000000 --- a/environments/.stackhpc/inventory/group_vars/all/hpctests.yml +++ /dev/null @@ -1,8 +0,0 @@ - -# Configure hpctests pingpong and pingmatrix to use system packages not OpenHPC modules: - -hpctests_extra_paths: - - /usr/lib64/openmpi/bin # for mpitests-openmpi -hpctests_pingmatrix_modules: [] -hpctests_pingpong_modules: [] -hpctests_pingpong_command: mpirun mpitests-IMB-MPI1 pingpong diff --git a/environments/.stackhpc/inventory/group_vars/all/nfs.yml b/environments/.stackhpc/inventory/group_vars/all/nfs.yml deleted file mode 100644 index cec660d0e..000000000 --- a/environments/.stackhpc/inventory/group_vars/all/nfs.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- - -# Override defaults to provide 2x NFS exports here: -# controlnode:/exports/home --> /home -# localhost:${REPO_ROOT}/slurm/build --> /slurm - -nfs_server_default: "{{ hostvars[groups['control'] | first ].internal_address }}" - -nfs_configurations: - - comment: Export /exports/home from Slurm control node as /home - nfs_enable: - server: "{{ inventory_hostname in groups['control'] }}" - # Don't mount share on server where it is exported from... - # Could do something like `nfs_clients: "{{ 'nfs_servers' not in group_names }}"` instead. - clients: "{{ inventory_hostname in groups['cluster'] and inventory_hostname not in groups['control'] }}" - nfs_server: "{{ nfs_server_default }}" - nfs_export: "/exports/home" # assumes skeleton TF is being used - nfs_client_mnt_point: "/home" - # nfs_client_mnt_state: absent - - comment: Export slurm directory from localhost - nfs_enable: - server: "{{ inventory_hostname == 'localhost' }}" - clients: "{{ inventory_hostname in groups['cluster'] }}" # TODO, should be slurm really I guess - nfs_server: "{{ hostvars['localhost'].ansible_host }}" - nfs_export: "{{ appliances_environment_root }}/slurm/build/" - nfs_client_mnt_point: "/nopt/slurm" - # nfs_client_mnt_state: absent diff --git a/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml b/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml index 8c159a1f6..5aac5f8ad 100644 --- a/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml +++ b/environments/.stackhpc/inventory/group_vars/openhpc/overrides.yml @@ -1,21 +1,3 @@ -openhpc_install_type: generic # i.e. don't want OpenHPC - -openhpc_generic_packages: # system package installs: - # below are default in the role, required to get slurm to work: - - munge - - mariadb-connector-c # only actually needed on slurmdbd - - hwloc-libs # only actuall needed on slurmd - # below added here to get pingpong and pingmatrix hpctests working: - - mpitests-openmpi - -# define paths to slurm on NFS clients: -openhpc_sbin_dir: /nopt/slurm/23.02.5/sbin -openhpc_lib_dir: /nopt/slurm/23.02.5/lib/slurm -openhpc_bin_dir: /nopt/slurm/23.02.5/bin -openhpc_slurm_conf_path: /nopt/slurm/etc/slurm.conf - -# modify slurm.conf: openhpc_config_extra: SlurmctldDebug: debug SlurmdDebug: debug - Epilog: '' # required b/c the default slurm.conf uses an Epilog provided by openhpc pkgs diff --git a/environments/.stackhpc/inventory/local_nfs b/environments/.stackhpc/inventory/local_nfs deleted file mode 100644 index 2f8feaa1c..000000000 --- a/environments/.stackhpc/inventory/local_nfs +++ /dev/null @@ -1,7 +0,0 @@ -nfs: - hosts: - localhost: - ansible_connection: local - ansible_python_interpreter: "{{ansible_playbook_python}}" - ansible_host: '192.168.3.95' # interface on "portal-internal" network - nfs_interface: eth0 diff --git a/environments/.stackhpc/slurm/Dockerfile b/environments/.stackhpc/slurm/Dockerfile deleted file mode 100644 index fa8859b2d..000000000 --- a/environments/.stackhpc/slurm/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -FROM rockylinux:8 as build-stage - -ARG SLURM_VERSION=23.02.5 # From https://www.schedmd.com/downloads.php -ARG SLURM_PREFIX=/slurm # Should match directory Slurm is installed at -ARG SLURM_SYSCONFDIR=/etc/slurm # Should match directory slurm.conf will be in - -RUN set -ex \ - && yum makecache \ - && yum -y update \ - && yum -y install dnf-plugins-core epel-release \ - && yum -y install dnf-plugins-core \ - && yum config-manager --set-enabled powertools \ - && yum -y install \ - wget \ - bzip2 \ - perl \ - gcc \ - gcc-c++\ - git \ - gnupg \ - make \ - munge \ - munge-devel \ - python3-devel \ - python3-pip \ - python3 \ - mariadb-server \ - mariadb-devel \ - psmisc \ - bash-completion \ - vim-enhanced \ - http-parser-devel \ - json-c-devel \ - mpitests-openmpi \ - pmix-devel \ - hwloc \ - hwloc-devel \ - && yum clean all \ - && rm -rf /var/cache/yum - -RUN alternatives --set python /usr/bin/python3 - -RUN pip3 install Cython nose - -RUN set -x \ - && wget https://download.schedmd.com/slurm/slurm-${SLURM_VERSION}.tar.bz2 \ - && tar --bzip -x -f slurm*tar.bz2 - -WORKDIR /slurm-${SLURM_VERSION} - -RUN set -x && ./configure \ - --enable-debug \ - --prefix=${SLURM_PREFIX} \ - --without-rpath \ - --sysconfdir=${SLURM_SYSCONFDIR} \ - --with-mysql_config=/usr/bin - -RUN set -x && make install - -ENTRYPOINT ["/bin/bash"] - - -FROM scratch as export-stage - -ARG SLURM_PREFIX=/slurm # Should match directory Slurm is installed at -# RUN ls ${SLURM_PREFIX} -COPY --from=build-stage ${SLURM_PREFIX}/ . diff --git a/environments/.stackhpc/slurm/README.md b/environments/.stackhpc/slurm/README.md deleted file mode 100644 index 90f524fca..000000000 --- a/environments/.stackhpc/slurm/README.md +++ /dev/null @@ -1,23 +0,0 @@ -This uses a podman container to build Slurm, which is then copied out of the container into `build/23.02.5/`. -The `build/` directory is NFS-exported to the cluster as `/slurm`, so nodes see `/slurm/23.02.5`. - -The following arguments to `./configure` are important: -- `--prefix` must match the path the binaries appear to be at (i.e. from the NFS client side). This is because: - - The `slurm{ctld,d,dbd}` executables hardcode an RPATH, even when passing the `--without-rpath` flag to ./configure. - This means unless the path they are executed at matches the build prefix, they can't find `libslurmfull.so` on startup, - even with entries in `/etc/ld.so.conf.d/`. - - `PluginDir` defaults to being based on the build prefix. Although it can be overriden in `slurm.conf`, the `slurmd`s do not appear to get this parameter when running configless, so they won't start saying the (default) plugin dir doesn't exist -- `--sysconfdir` must match the path the `slurm.conf` file is at on the nodes. Otherwise `s*` commands running on nodes *without* `slurmd` (i.e. the control node only, for a standard Slurm appliance configuration) cannot find the configuration file unless the `SLURM_CONF` environment variable set. - -Assuming `podman` is installed, running the following in this directory will build Slurm and copy it out to the host. As the host's root disk was small, the below includes some TMPDIR/tmpdir options to try to place temporary build artifacts on a larger attached volume. However, ~10GB free was still required on the root disk to complete the build. - - $ export TMPDIR=/mnt/image-storage/tmp # some large persistent storage - $ mkdir -p build/23.02.5/ - $ rm -rf build/23.02.5/* - $ podman --tmpdir=/mnt/image-storage/tmp build \ - --build-arg SLURM_PREFIX=/nopt/slurm/23.02.5/ \ - --build-arg SLURM_SYSCONFDIR=/nopt/slurm/etc/ \ - . -t slurm-23.02.5 \ - --output build/23.02.5/ - -As a convenience, the output of "./configure --help" is included as `configure.help`. diff --git a/environments/.stackhpc/slurm/configure.help b/environments/.stackhpc/slurm/configure.help deleted file mode 100644 index e1398a979..000000000 --- a/environments/.stackhpc/slurm/configure.help +++ /dev/null @@ -1,219 +0,0 @@ -`configure' configures slurm 23.02 to adapt to many kinds of systems. - -Usage: ./configure [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print `checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for `--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or `..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [/usr/local] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, `make install' will install all the files in -`/usr/local/bin', `/usr/local/lib' etc. You can specify -an installation prefix other than `/usr/local' using `--prefix', -for instance `--prefix=$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/slurm] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-maintainer-mode - enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-pam enable PAM (Pluggable Authentication Modules) - support - --enable-load-env-no-login - enable --get-user-env option to load user - environment without .login - --disable-x11 disable internal X11 support - --enable-selinux enable internal SELinux support - --disable-glibtest do not try to compile and run a test GLIB program - --disable-gtktest do not try to compile and run a test GTK+ program - --enable-cray-network Run Slurm on a non-Cray system with a Cray network - --enable-really-no-cray Disable cray support for eslogin machines - --disable-optimizations disable optimizations (sets -O0) - --enable-developer enable developer options (asserts, -Werror - also - sets --enable-debug as well) - --disable-debug disable debugging symbols and compile with - optimizations - --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-slurmrestd disable slurmrestd support - --enable-multiple-slurmd - enable multiple-slurmd support - --enable-deprecated enable deprecated - -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-mysql_config=PATH - Specify path of directory where mysql_config binary - exists - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - --with-pam_dir=PATH Specify path to PAM module installation - --without-shared-libslurm - statically link to libslurm.o instead of the shared - libslurm lib - can dramatically increase the - footprint of Slurm. - --with-json=PATH Specify path to json-c installation - --with-jwt=PATH Specify path to jwt installation - --with-http-parser=PATH Specify path to HTTP Parser installation - --with-yaml=PATH Specify path to libyaml installation - --with-dimensions=N set system dimension count for generic computer - system - --with-ofed=PATH Specify path to ofed installation - --with-hdf5=yes/no/PATH location of h5cc or h5pcc for HDF5 configuration - --with-lz4=PATH Specify path to liblz4 installation - --with-hwloc=PATH Specify path to hwloc installation - --with-nvml=PATH Specify path to CUDA installation - --with-rsmi=PATH Specify path to rsmi installation - --with-oneapi=PATH Specify path to oneAPI installation - --with-pmix=PATH Specify path to pmix installation(s). Multiple - version directories can be ':' delimited. - --with-freeipmi=PATH Specify path to freeipmi installation - --with-rrdtool=PATH Specify path to rrdtool-devel installation - --with-ucx=PATH Build with Unified Communication X library support - --with-rdkafka=PATH Specify path to librdkafka installation - --with-bpf=PATH Specify path to bpf header - --with-cray_dir=PATH Specify path to Cray file installation - /opt/cray - by default - --with-datawarp=PATH Specify path to DataWarp installation - --with-hpe-slingshot=PATH - Specify path to HPE Slingshot installation dir - --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] - --with-slurmctld-port-count=N - set slurmctld default port count [1] - --with-slurmrestd-port=N - set slurmrestd default port [6820] - --with-netloc=PATH Specify path to netloc installation - --without-readline compile without readline support - --with-systemdsystemunitdir=DIR - Directory for systemd service files - --with-munge=PATH Specify path to munge installation - --with-libcurl=PREFIX look for the curl library in PREFIX/lib and headers - in PREFIX/include - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - 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 - CXX C++ compiler command - CXXFLAGS C++ compiler flags - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - CXXCPP C++ preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - CPP C preprocessor - libselinux_CFLAGS - C compiler flags for libselinux, overriding pkg-config - libselinux_LIBS - linker flags for libselinux, overriding pkg-config - dbus_CFLAGS C compiler flags for dbus, overriding pkg-config - dbus_LIBS linker flags for dbus, overriding pkg-config - CHECK_CFLAGS - C compiler flags for CHECK, overriding pkg-config - CHECK_LIBS linker flags for CHECK, overriding pkg-config - GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config - GLIB_LIBS linker flags for GLIB, overriding pkg-config - GLIB_GENMARSHAL - value of glib_genmarshal for glib-2.0, overriding pkg-config - GOBJECT_QUERY - value of gobject_query for glib-2.0, overriding pkg-config - GLIB_MKENUMS - value of glib_mkenums for glib-2.0, overriding pkg-config - GLIB_COMPILE_RESOURCES - value of glib_compile_resources for gio-2.0, overriding - pkg-config - lua_CFLAGS C compiler flags for lua, overriding pkg-config - lua_LIBS linker flags for lua, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -slurm home page: .