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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,8 @@
branch = spack-stack-dev
[submodule "repos/builtin"]
path = repos/builtin
url = https://github.com/jcsda/spack-packages
branch = spack-stack-dev
#url = https://github.com/jcsda/spack-packages
#branch = spack-stack-dev
# https://github.com/JCSDA/spack-packages/pull/57
url = https://github.com/climbfuji/spack-packages
branch = bugfix/scalasca_scorep_spack_stack_dev
2 changes: 2 additions & 0 deletions configs/common/packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,8 @@ packages:
py-versioneer:
require:
- '@0.29'
# On a per-site basis, either set qt to buildable: false
# or add requirement to build with gcc for Intel oneAPI
qt:
require:
- '@5'
Expand Down
6 changes: 3 additions & 3 deletions configs/common/packages_oneapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ packages:
py-scipy:
require:
- 'cxxflags="-O1"'
qt:
require:
- '%c,cxx=gcc'
#qt:
# require:
# - '%c,cxx=gcc'
Comment on lines +74 to +76
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this. Each site must either set qt:buildable:false or set require gcc in its own packages_oneapi-<version>.yaml.

rust:
require:
- '%c,cxx=gcc'
62 changes: 62 additions & 0 deletions configs/sites/tier1/blueback/packages_oneapi-2026.0.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
packages:
all:
require:
- any_of: ['%intel-oneapi-compilers@=2026.0.0']
when: '%intel-oneapi-compilers'
- any_of: ['%gcc@=13.3.0']
when: '%gcc'
mpi:
buildable: false
require:
- cray-mpich@8.1.32
intel-oneapi-compilers:
buildable: false
externals:
- spec: intel-oneapi-compilers@2026.0.0 +fix_rt_linkage
prefix: /p/app/intel/oneapi-combined
modules:
- PrgEnv-intel/8.6.0
- intel-oneapi/2026.0.0
extra_attributes:
compilers:
c: /p/app/projects/NEPTUNE/spack-stack/oneapi-2026.0.0/2026.0/bin/icx
cxx: /p/app/projects/NEPTUNE/spack-stack/oneapi-2026.0.0/2026.0/bin/icpx
fortran: /p/app/projects/NEPTUNE/spack-stack/oneapi-2026.0.0/2026.0/bin/ifx
environment:
set:
CONFIG_SITE: ''
gcc:
buildable: false
externals:
- spec: gcc@13.3.0 languages:='c,c++'
prefix: /usr
modules:
- PrgEnv-gnu/8.6.0
- gcc-native/13.2
extra_attributes:
compilers:
c: /usr/bin/gcc
cxx: /usr/bin/g++
fortran: /usr/bin/gfortran
environment:
set:
CONFIG_SITE: ''
PE_GCC_EXTERNAL: native
cray-mpich:
buildable: false
externals:
- spec: cray-mpich@8.1.32
prefix: /opt/cray/pe/mpich/8.1.32/ofi/INTEL/2022.1
modules:
- libfabric/1.22.0
- craype-network-ofi
- cray-mpich/8.1.32
extra_attributes:
environment:
prepend_path:
CMAKE_PREFIX_PATH: /p/app/projects/NEPTUNE/spack-stack/cmake-findmpi
intel-oneapi-mkl:
buildable: false
externals:
- spec: intel-oneapi-mkl@2026.0
prefix: /p/app/projects/NEPTUNE/spack-stack/oneapi-2026.0.0
3 changes: 3 additions & 0 deletions configs/sites/tier2/bounty/packages.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
packages:
# Modification of common packages
dev-utils-env:
require:
- +scalasca

# All other packages listed alphabetically
autoconf:
Expand Down
41 changes: 41 additions & 0 deletions configs/sites/tier2/bounty/packages_oneapi-2026.0.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
packages:
all:
require:
- any_of: ['%intel-oneapi-compilers@=2026.0.0']
when: '%intel-oneapi-compilers'
- any_of: ['%gcc@=11.5.0']
when: '%gcc'
mpi:
buildable: False
require:
- "intel-oneapi-mpi@2021.18"
intel-oneapi-compilers:
buildable: false
externals:
- spec: intel-oneapi-compilers@2026.0.0 +fix_rt_linkage
prefix: /opt/intel/oneapi
extra_attributes:
compilers:
c: /opt/intel/oneapi/2026.0/bin/icx
cxx: /opt/intel/oneapi/2026.0/bin/icpx
fortran: /opt/intel/oneapi/2026.0/bin/ifx
gcc:
buildable: false
externals:
- spec: gcc@11.5.0 languages:='c,c++'
prefix: /usr
extra_attributes:
compilers:
c: /usr/bin/gcc
cxx: /usr/bin/g++
fortran: /usr/bin/gfortran
intel-oneapi-mpi:
buildable: false
externals:
- spec: intel-oneapi-mpi@2021.18
prefix: /opt/intel/oneapi
intel-oneapi-mkl:
buildable: false
externals:
- spec: intel-oneapi-mkl@2026.0
prefix: /opt/intel/oneapi
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class DevUtilsEnv(BundlePackage):

version("1.0.0")

variant("scalasca", default=False, description="Build Scalasca/Cube")

depends_on("base-env", type="run")

# I/O
Expand All @@ -27,6 +29,10 @@ class DevUtilsEnv(BundlePackage):
depends_on("py-pydantic +dotenv", type="run")
depends_on("py-pydantic-settings", type="run")

# Scalasca/ScoreP
depends_on("scalasca", when="+scalasca", type="run")
depends_on("cube +gui", when="+scalasca", type="run")

# Miscellaneous
depends_on("cloc", type="run")
depends_on("rank-run", type="run")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ def check_preferred_compiler():
except:
logging.info(f" ... {spec.name}@{spec.version}/{spec.dag_hash(length=7)} has no compiler dependency")
continue
logging.warning(f" ... {spec.name}@{spec.version}/{spec.dag_hash(length=7)}: {compiler_name}@={compiler_version}")
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert me

# If the spec compiler matches the preferred compiler for the environment, move on.
# Note that this permits situations where a packages has an explicit preferred (but
# not explicitly required) compiler, but Spack decides to use the preferred (and
Expand Down
9 changes: 7 additions & 2 deletions util/nrl/batch_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ case ${SPACK_STACK_BATCH_HOST} in
SPACK_STACK_CARGO_MIRROR="/neptune_diagnostics/spack-stack/cargo-mirror"
;;
blueback)
SPACK_STACK_BATCH_COMPILERS=("oneapi@=2025.0.4" "gcc@=13.3.0" "gcc@=14.3.0") # oneapi@=2025.2.1
SPACK_STACK_BATCH_COMPILERS=("oneapi@=2025.0.4" "oneapi@=2026.0.0" "gcc@=13.3.0" "gcc@=14.3.0")
SPACK_STACK_BATCH_TEMPLATES=("neptune-dev" "unified-dev" "cylc-dev")
SPACK_STACK_MODULE_CHOICE="tcl"
SPACK_STACK_BOOTSTRAP_MIRROR="/p/app/projects/NEPTUNE/spack-stack/bootstrap-mirror"
Expand Down Expand Up @@ -177,7 +177,7 @@ case ${SPACK_STACK_BATCH_HOST} in
;;
bounty)
SPACK_STACK_BATCH_COMPILERS=("oneapi@=2025.3.0" "gcc@=14.2.1" "gcc@=13.3.1" "clang@=22.1.0")
SPACK_STACK_BATCH_TEMPLATES=("neptune-dev" "neptune-dev-llvm" "unified-dev" "cylc-dev")
SPACK_STACK_BATCH_TEMPLATES=("neptune-dev") #"neptune-dev-llvm" "unified-dev" "cylc-dev")
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert me

SPACK_STACK_MODULE_CHOICE="tcl"
SPACK_STACK_BOOTSTRAP_MIRROR="/home/dom/prod/spack-bootstrap-mirror"
SPACK_STACK_CARGO_MIRROR="/home/dom/prod/spack-cargo-mirror"
Expand Down Expand Up @@ -502,6 +502,11 @@ for compiler in "${SPACK_STACK_BATCH_COMPILERS[@]}"; do
set +e
module purge
set -e
case ${compiler} in
oneapi@=2026.0.0)
module use /p/app/projects/NEPTUNE/spack-stack/oneapi-2026.0.0/modulefiles
;;
esac
;;
narwhal)
umask 0022
Expand Down
92 changes: 92 additions & 0 deletions util/nrl/intel_oneapi-2026.0.0_install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/usr/bin/env bash

set -eu

umask 0022
module purge

if [ "$#" -lt 1 ]; then
echo "Error: Not enough arguments. Provide Intel oneAPI installation prefix."
exit 1
fi

ONEAPI_INSTALL_DIR=${1}
ONEAPI_VERSION="2026.0.0"
COMPILER_VERSION="2026.0"
MKL_VERSION="2026.0"
ONEAPI_DOWNLOAD_URL=https://registrationcenter-download.intel.com/akdlm/IRC_NAS/71180075-e4e3-4c6f-bbbb-19017ed0cf7d/intel-oneapi-toolkit-2026.0.0.198_offline.sh

mkdir -p ${ONEAPI_INSTALL_DIR}/src
cd ${ONEAPI_INSTALL_DIR}/src
wget ${ONEAPI_DOWNLOAD_URL}
ONEAPI_INSTALL_SCRIPT="${ONEAPI_DOWNLOAD_URL##*/}"
sh ./${ONEAPI_INSTALL_SCRIPT} -a --silent --eula accept --install-dir ${ONEAPI_INSTALL_DIR} --intel-sw-improvement-program-consent decline 2>&1 | tee log.install

# Check that compiler and mkl versions are correct
if [ ! -d "${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}" ]; then
echo "Error, directory ${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION} does not exist"
exit 1
fi
if [ ! -d "${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}" ]; then
echo "Error, directory ${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION} does not exist"
exit 1
fi

# Create modulefiles - special modules for Cray, Intel auto-generated modules elsewhere
HOSTNAME=$(hostname)
if [[ "${HOSTNAME}" == *"blueback"* || "${HOSTNAME}" == *"narwhal"* ]]; then
mkdir -p ${ONEAPI_INSTALL_DIR}/modulefiles/intel-oneapi
cat << EOF > ${ONEAPI_INSTALL_DIR}/modulefiles/intel-oneapi/2026.0.0
#%Module
#
# Intel oneAPI module
#

conflict intel
conflict intel-classic
conflict intel-oneapi

set INTEL_CURPATH ${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}
set INTEL_LEVEL ${COMPILER_VERSION}

setenv INTEL_PATH \$INTEL_CURPATH
setenv INTEL_VERSION \$INTEL_LEVEL
setenv INTEL_COMPILER_TYPE "ONEAPI"

prepend-path {LD_LIBRARY_PATH} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/opt/compiler/lib:${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/lib}
setenv {OCL_ICD_FILENAMES} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/lib/libintelocl.so}
setenv {CMPLR_ROOT} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}}
prepend-path {CMAKE_PREFIX_PATH} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}}
prepend-path {NLSPATH} {}
prepend-path {LIBRARY_PATH} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/lib}
prepend-path {DIAGUTIL_PATH} {}
prepend-path {MANPATH} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/share/man}
prepend-path {PATH} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/bin}
prepend-path {PKG_CONFIG_PATH} {${ONEAPI_INSTALL_DIR}/compiler/${COMPILER_VERSION}/lib/pkgconfig}
prepend-path {LD_LIBRARY_PATH} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}/lib}
prepend-path {CMAKE_PREFIX_PATH} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}/lib/cmake}
prepend-path {CPATH} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}/include}
prepend-path {LIBRARY_PATH} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}/lib}
setenv {MKLROOT} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}}
prepend-path {PATH} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}/bin}
prepend-path {PKG_CONFIG_PATH} {${ONEAPI_INSTALL_DIR}/mkl/${MKL_VERSION}/lib/pkgconfig}

proc ModulesHelp { } {
global INTEL_LEVEL
global INTEL_CURPATH
}

# This module was produced with dom-gen 0.0.1

module-whatis "Intel oneAPI compiler"
EOF

else
cd ${ONEAPI_INSTALL_DIR}
./modulefiles-setup.sh --output-dir=${ONEAPI_INSTALL_DIR}/modulefiles --ignore-latest 2>&1 | tee log.modulefiles
# Fix non-ascii symbols in Intel modulefiles; must follow links
for file in `find ./modulefiles -type l`; do
echo $file
sed -i --follow-symlinks 's/®//g' $file
done
fi
Loading