Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ella GCC Setup #288

Open
wants to merge 16 commits into
base: ella-setup
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
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
Empty file modified fixes/dot_spack.patch
100644 → 100755
Empty file.
Empty file modified fixes/lmod_arch_family.patch
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion fixes/modulenames_plus_common.patch
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ index eaf79f6d04..1be017f46e 100644
@@ -614,8 +616,9 @@ def use_name(self):
projection = self.conf.default_projections["all"]

name = self.spec.format(projection)
name = self.spec.format_path(projection)
- # Not everybody is working on linux...
- parts = name.split("/")
+ # Not everybody is working on linux... so split on /
Expand Down
Empty file modified fixes/modulenames_plus_init.patch
100644 → 100755
Empty file.
Empty file modified repo/README.md
100644 → 100755
Empty file.
Empty file modified repo/package_diffs_vs_spack_0.17.txt
100644 → 100755
Empty file.
Empty file modified repo/packages/adios2/2.5-fix-clear_cache.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/adios2/2.6-fix-gcc10-symbols.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/adios2/2.7-fix-python-test-deps.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/adios2/cmake-update-findmpi.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/adios2/package.py
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/aarch64.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/ambertools_configure2.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/ambertools_configure2_cray_shasta.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/ambertools_configure2_for_netcdf.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/ambertools_makefile.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/cpptraj_configure.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/cpptraj_configure_netcdf.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/nvhpc-boost.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/nvhpc.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/package.py
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/pmemd_nfe.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/ppc64le.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/sander_mt19937.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/sander_sebomd.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amber/sebomd_fix.patch
100644 → 100755
Empty file.
Empty file modified repo/packages/amdblis/package.py
100644 → 100755
Empty file.
132 changes: 115 additions & 17 deletions repo/packages/amdgromacs/package.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack.package import *
from spack.util.prefix import Prefix

class Amdgromacs(CMakePackage, ROCmPackage):
"""
Expand All @@ -13,19 +14,22 @@ class Amdgromacs(CMakePackage, ROCmPackage):
homepage = "https://github.com/ROCmSoftwarePlatform/Gromacs"
git = "https://github.com/ROCmSoftwarePlatform/Gromacs.git"

maintainers = ["cdipietrantonio"]
maintainers = ["cdipietrantonio","Ilkhom"]

# Even though the branch is develop_2022_amd, the version string printed by gmx_mpi
# is the following one:
# GROMACS - gmx mdrun, 2023-dev-commit;ba2dd6f6d70
version("2023", commit="ba2dd6f6d709cc4d4c1083024838e2082e72f3b1")
#version("2023", commit="ba2dd6f6d709cc4d4c1083024838e2082e72f3b1")
version("2023", commit="7bbbb2de208ac1a42c7144ac28ecc5fb0dc0dd4e")
# version("2023", branch="develop_2023_amd")

variant("openmp", default=True)
# variant("plumed", default=False)

depends_on("fftw-api@3:")
depends_on("[email protected]:")
# depends_on("fftw-api@3:")
depends_on("cray-libsci")
depends_on("cray-fftw")
# depends_on("[email protected]:")
# depends_on("[email protected]", when="+plumed") # Plumed not supported at the moment
depends_on("mpi")
depends_on("hwloc")
Expand All @@ -36,25 +40,119 @@ class Amdgromacs(CMakePackage, ROCmPackage):
# plumed("patch", "-p", "-e", f"gromacs-{self.spec.version}", "-m", "shared")

def cmake_args(self):
hipcc = self.spec["hip"].prefix.bin.hipcc
# hipcc = self.spec["hip"].prefix.bin.hipcc
amdgpu_target = ",".join(self.spec.variants["amdgpu_target"].value)

# args = [
# "-D CMAKE_BUILD_TYPE=Release", "-D CMAKE_C_COMPILER=/opt/cray/pe/craype/2.7.20/bin/cc",
# "-D CMAKE_CXX_COMPILER=/opt/cray/pe/craype/2.7.20/bin/CC", "-D GMX_OPENMP=ON",
# "-D GMX_MPI=ON","-D GMX_GPU=HIP",
# f"-D CMAKE_HIP_ARCHITECTURES={amdgpu_target}", f"-D AMDGPU_TARGETS={amdgpu_target}",
# f"-D HIP_HIPCC_FLAGS='-O3 --amdgpu-target={amdgpu_target} --save-temps -I/opt/cray/pe/mpich/8.1.25/ofi/gnu/9.1/include'",
# "-D GMX_GPU_USE_VKFFT=ON", "-D CMAKE_C_FLAGS='-Ofast'",
# "-D CMAKE_CXX_FLAGS='-Ofast'",
# "-D GMX_SIMD=AVX2_256",
# "-D GMX_SIMD=AVX2_256",
# "-D CMAKE_EXE_LINKER_FLAGS='-fopenmp'",
# "-D GMX_BUILD_FOR_COVERAGE=OFF",
# "-D GMX_EXTERNAL_LAPACK=ON",
# "-D GMX_EXTERNAL_BLAS=ON",
# f"-D GMX_BLAS_USER=/opt/cray/pe/libsci/23.02.1.1/GNU/9.1/x86_64/lib/libsci_gnu.so",
# f"-D GMX_LAPACK_USER=/opt/cray/pe/libsci/23.02.1.1/GNU/9.1/x86_64/lib/libsci_gnu.so",
# "-D BUILD_SHARED_LIBS=OFF",
# "-D GMX_DOUBLE=OFF",
# f"-D CMAKE_CXX_LINK_FLAGS=-I/opt/cray/pe/mpich/8.1.25/ofi/gnu/9.1/include",
# f"-D HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS=-I/opt/cray/pe/mpich/8.1.25/ofi/gnu/9.1/include",
# "-D HIP_VERBOSE_BUILD=ON",
# "-D CMAKE_VERBOSE_MAKEFILE=ON"
# ]

args = [
"-DBUILD_SHARED_LIBS=on", "-DMPI_C_LIB_NAMES=mpi",
"-DMPI_CXX_LIB_NAMES=mpi", f"-DMPI_mpi_LIBRARY={self.spec['mpi'].prefix.lib}/libmpi.so",
"-DGMX_BUILD_OWN_FFTW=OFF","-DGMX_BUILD_FOR_COVERAGE=off",
f"-DCMAKE_C_COMPILER={hipcc}", f"-DCMAKE_CXX_COMPILER={hipcc}",
f"-DMPI_CXX_COMPILER={self.spec['mpi'].mpicxx}", f"-DMPI_C_COMPILER={self.spec['mpi'].mpicc}",
"-DGMX_MPI=on", "-DGMX_GPU=HIP",
self.define_from_variant("CMAKE_HIP_ARCHITECTURES", "amdgpu_target"),
"-DGMX_SIMD=AVX2_256", "-DREGRESSIONTEST_DOWNLOAD=OFF",
"-DGMX_GPU_USE_VKFFT=on",
f"-DHIP_HIPCC_FLAGS=-O3 --amdgpu-target={amdgpu_target} --save-temps",
"-DGMX_HWLOC=ON", "-DMPIEXEC=srun",
"-DMPIEXEC_NUMPROC_FLAG=-n",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_C_COMPILER=cc",
"-DCMAKE_CXX_COMPILER=CC",
"-DGMX_OPENMP=ON",
"-DGMX_MPI=ON",
"-DGMX_GPU=HIP",
"-DCMAKE_HIP_ARCHITECTURES='gfx90a'",
"-DAMDGPU_TARGETS='gfx90a'",
"-DGPU_TARGETS='gfx90a'",
f"-D HIP_HIPCC_FLAGS='-O3 --amdgpu-target={amdgpu_target} --save-temps -I/opt/cray/pe/mpich/8.1.25/ofi/gnu/9.1/include'",
"-DGMX_GPU_USE_VKFFT=ON",
"-DCMAKE_C_FLAGS='-Ofast'",
"-DCMAKE_CXX_FLAGS='-Ofast'",
"-DGMX_SIMD=AVX2_256",
"-DCMAKE_EXE_LINKER_FLAGS='-fopenmp'",
"-DGMX_BUILD_FOR_COVERAGE=OFF",
"-DGMX_EXTERNAL_LAPACK=ON",
"-DGMX_EXTERNAL_BLAS=ON",
f'-DGMX_BLAS_USER={self.spec["cray-libsci"].prefix}/lib/libsci_gnu.so',
f'-DGMX_LAPACK_USER={self.spec["cray-libsci"].prefix}/lib/libsci_gnu.so',
"-DBUILD_SHARED_LIBS=OFF",
"-DGMX_DOUBLE=OFF",
f'-D CMAKE_CXX_LINK_FLAGS=-I{self.spec["cray-mpich"].prefix}/include',
f'-D HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS=-I{self.spec["cray-mpich"].prefix}/include',
"-DHIP_VERBOSE_BUILD=ON",
"-DCMAKE_VERBOSE_MAKEFILE=ON"
]


# f"-DGMX_BLAS_USER=/opt/cray/pe/libsci/23.02.1.1/GNU/9.1/x86_64/lib/libsci_gnu.so",
# f"-DGMX_LAPACK_USER=/opt/cray/pe/libsci/23.02.1.1/GNU/9.1/x86_64/lib/libsci_gnu.so",
# f"-D HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS=-I/opt/cray/pe/mpich/8.1.25/ofi/gnu/9.1/include",

# "-DCMAKE_CXX_LINK_FLAGS=-I$CRAY_MPICH_PREFIX/include",
# "-DHIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS=-I$CRAY_MPICH_PREFIX/include",
# "-DHIP_HIPCC_FLAGS='-O3 --amdgpu-target=gfx90a --save-temps -I$CRAY_MPICH_PREFIX/include'",

if '+openmp' in self.spec:
args.extend(["-DCMAKE_EXE_LINKER_FLAGS=-fopenmp", "-DGMX_OPENMP=ON"])

return args

def get_paths(self):
rocm_spec = self.spec["hip"]
rocm_prefix = Prefix(rocm_spec.prefix)

paths = {
"hip-path": rocm_spec.prefix,
"rocm-path": rocm_spec.prefix,
"rocm-device-libs": rocm_spec.prefix, #rocm_prefix, #elf.spec["llvm-amdgpu"].prefix,
"llvm-amdgpu": rocm_prefix.llvm,
"hsa-rocr-dev": rocm_prefix.hsa,
}
paths["bitcode"] = paths["rocm-device-libs"].amdgcn.bitcode

return paths

def set_variables(self, env):
if self.spec.satisfies("+rocm"):
# Note: do not use self.spec[name] here, since not all dependencies
# have defined prefixes when hip is marked as external.
paths = self.get_paths()

# Used in hipcc, but only useful when hip is external, since only then
# there is a common prefix /opt/rocm-x.y.z.
env.set("ROCM_PATH", paths["rocm-path"])
# Just the prefix of hip (used in hipcc)
env.set("HIP_PATH", paths["hip-path"])
env.set("HIP_DEVICE_LIB_PATH", paths["bitcode"])
env.set("HIP_CLANG_PATH", paths["llvm-amdgpu"].bin)
env.set("HSA_PATH", paths["hsa-rocr-dev"])
env.set("DEVICE_LIB_PATH", paths["bitcode"])
env.set("LLVM_PATH", paths["llvm-amdgpu"])

env.append_path(
"HIPCC_COMPILE_FLAGS_APPEND",
"--rocm-path={0}".format(paths["rocm-path"]),
separator=" ",
)


def setup_build_environment(self, env):
if self.spec.satisfies("+rocm"):
self.set_variables(env)

def setup_run_environment(self, env):
if self.spec.satisfies("+rocm"):
self.set_variables(env)
15 changes: 13 additions & 2 deletions repo/packages/ansys-fluids/package.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,19 @@ def install(self, spec, prefix):
tmp_install_path = os.environ['MYSCRATCH']+'/tmp'
mkdirp('{0}/{1}'.format(self.stage.source_path, 'fluids_tmpdir'))
mkdirp('{0}/{1}'.format(tmp_install_path, 'fluids'))
run_install = Executable("./INSTALL -silent -install_dir {0}/{1} -usetempdir {2}/{3}".format(tmp_install_path, 'fluids', self.stage.source_path, 'fluids_tmpdir'))
run_install()
# run_install = Executable("./INSTALL -silent -install_dir {0}/{1} -usetempdir {2}/{3}".format(tmp_install_path, 'fluids', self.stage.source_path, 'fluids_tmpdir'))
run_install = Executable("./INSTALL") # -silent -install_dir {0}/{1} -usetempdir {2}/{3}".format(tmp_install_path, 'fluids', self.stage.source_path, 'fluids_tmpdir'))
config_options = [
"-silent",
]
config_options.append("-install_dir")
config_options.append("%s" % join_path(tmp_install_path, "fluids"))
# "-install_dir {0}/{1}".format(tmp_install_path, 'fluids', self.stage.source_path, 'fluids_tmpdir'),

config_options.append("-usetempdir")
config_options.append("%s" % join_path(self.stage.source_path, 'fluids_tmpdir'))

run_install(*config_options)
# change internal wrapper for launching fluent from mpirun to srun and also alter the platform using sed
sed=which('sed')
# find comments before start job and insert the new my_cdmline
Expand Down
Empty file modified repo/packages/ansys-fluidstructures/package.py
100644 → 100755
Empty file.
Empty file modified repo/packages/ansys-structures/package.py
100644 → 100755
Empty file.
13 changes: 13 additions & 0 deletions repo/packages/aoflagger/as.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/algorithms/antennaselector.h b/algorithms/antennaselector.h
index 6353a4d..d8fad40 100644
--- a/algorithms/antennaselector.h
+++ b/algorithms/antennaselector.h
@@ -6,6 +6,8 @@ class DefaultStatistics;

#include <map>
#include <vector>
+#include <cstddef>
+using namespace std;

namespace rfiStrategy {

26 changes: 26 additions & 0 deletions repo/packages/aoflagger/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from spack.patch import apply_patch
import os

PATCHFILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "as.patch")


class Aoflagger(CMakePackage):
"""RFI detector and quality analysis
for astronomical radio observations."""

maintainers("dipietrantonio")

version('3.4.0', git='https://gitlab.com/aroffringa/aoflagger.git', tag='v3.4.0', submodules=True)
version('3.2.0', git='https://gitlab.com/aroffringa/aoflagger.git', tag='v3.2.0', submodules=True)

depends_on('[email protected]:')
depends_on('[email protected]:')
depends_on('[email protected]: +test +system +date_time')
depends_on('libxml2')
depends_on('cfitsio')
depends_on('libpng')
depends_on('[email protected]: +cxx ~mpi api=v110')
depends_on('[email protected]:')
depends_on('cmake', type='build')

patch('as.patch', when='@3.2.0')
Empty file modified repo/packages/autoconf/package.py
100644 → 100755
Empty file.
Empty file modified repo/packages/beast2/package.py
100644 → 100755
Empty file.
70 changes: 70 additions & 0 deletions repo/packages/birli/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
from spack.package import *

class Birli(Package):
"""A preprocessing pipeline for the Murchison Widefield Array"""

homepage = "https://github.com/MWATelescope/birli"
git = "https://github.com/MWATelescope/birli.git"

maintainers = ["d3v-null"]

version("main", branch="main")
version("0.15.1", tag="v0.15.1")
version("0.14.0", tag="v0.14.0")
version("0.13.0", tag="v0.13.0")
version("0.12.0", tag="v0.12.0")
version("0.10.0", tag="v0.10.0")

# unknown issue on setonix when enabled https://github.com/PawseySC/pawsey-spack-config/pull/280#issuecomment-2296128762
variant("cfitsio-static", default=False, description="Enable the fitsio_src feature of the fitsio-sys crate.")
variant("portable", default=True, description="Disable native CPU optimizations")

depends_on("[email protected]:", type="build")
depends_on("cmake", type="build")

# cfitsio > 4 introduces a breaking change, is incompatible with mwalib.
# default spack cfitsio does not give the +reentrant option
depends_on("[email protected] +reentrant")

depends_on("[email protected]:")
depends_on("erfa") # because of Marlu

test_requires_compiler = True

def setup_build_environment(self, env):
build_dir = self.stage.source_path
env.set('CARGO_HOME', f"{build_dir}/.cargo")
if self.spec.satisfies("+cfitsio-static"):
env.set('MWALIB_LINK_STATIC_CFITSIO', 1)
if self.spec.satisfies("~portable"):
env.append_flags("RUSTFLAGS", f"-C target-cpu=native")

def get_features(self):
features = []
if self.spec.satisfies('+cfitsio-static'):
features += ["cfitsio-static"]
return features

def get_cargo_args(self):
args = []
if (features:=self.get_features()):
args += [f"--features={','.join(features)}"]
# args += ["--verbose"] # for debugging
return args

def install(self, spec, prefix):
# os.system("env") # for debugging
cargo = Executable("cargo")
features = self.get_features()
cargo("install", "--path=.", "--locked", f"--root={prefix}", *self.get_cargo_args())

@run_after("install")
@on_package_attributes(run_tests=True)
def cargo_test(self):
cargo = Executable("cargo")
features = self.get_features()
cargo("test", "--release", "--lib", *self.get_cargo_args())

def setup_run_environment(self, env):
if not self.spec.satisfies("+cfitsio-static"):
env.prepend_path("LD_LIBRARY_PATH", self.spec["cfitsio"].prefix.lib)
21 changes: 16 additions & 5 deletions repo/packages/blaspp/package.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
#taken from spack/0.21.0

# PAWSEY Additions
# added 2023.11.05 version
import os

from spack.package import *
Expand All @@ -17,9 +17,9 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
homepage = "https://github.com/icl-utk-edu/blaspp"
git = homepage
url = "https://github.com/icl-utk-edu/blaspp/releases/download/v2023.01.00/blaspp-2023.01.00.tar.gz"
maintainers = ["teonnik", "Sely85", "G-Ragghianti", "mgates3"]
maintainers("teonnik", "Sely85", "G-Ragghianti", "mgates3")

version("master", branch="master")
version("2023.11.05", sha256="62dfc03ec07c0826e0466dc2c204b460caa929d53ad4f050cb132d92670be7ce")
version(
"2023.08.25", sha256="1d9c7227a6d8776944aa866592142b7b51c6e4ba5529d168eb8ae2b329c47401"
)
Expand Down Expand Up @@ -47,11 +47,14 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):

variant("openmp", default=True, description="Use OpenMP internally.")
variant("shared", default=True, description="Build shared libraries")
variant("sycl", default=False, description="Build support for the SYCL backend")

depends_on("[email protected]:", type="build")
depends_on("blas")
depends_on("llvm-openmp", when="%apple-clang +openmp")
depends_on("rocblas", when="+rocm")
depends_on("intel-oneapi-mkl", when="+sycl")
depends_on("intel-oneapi-mkl threads=openmp", when="+sycl")

# only supported with clingo solver: virtual dependency preferences
# depends_on('openblas threads=openmp', when='+openmp ^openblas')
Expand All @@ -64,7 +67,13 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
conflicts(
"+rocm", when="@:2020.10.02", msg="ROCm support requires BLAS++ 2021.04.00 or greater"
)
conflicts("+rocm", when="+cuda", msg="BLAS++ can only support one GPU backend at a time")
backend_msg = "BLAS++ supports only one GPU backend at a time"
conflicts("+rocm", when="+cuda", msg=backend_msg)
conflicts("+rocm", when="+sycl", msg=backend_msg)
conflicts("+cuda", when="+sycl", msg=backend_msg)
conflicts("+sycl", when="@:2023.06.00", msg="SYCL support requires BLAS++ version 2023.08.25")

requires("%oneapi", when="+sycl", msg="blaspp+sycl must be compiled with %oneapi")

def cmake_args(self):
spec = self.spec
Expand All @@ -75,6 +84,8 @@ def cmake_args(self):
backend = "cuda"
if "+rocm" in spec:
backend = "hip"
if "+sycl" in spec:
backend = "sycl"
backend_config = "-Dgpu_backend=%s" % backend

args = [
Expand Down
Loading