Compare commits

...

53 Commits

Author SHA1 Message Date
Robert Cohn
54acda3f11 oneapi licenses (#43451) 2024-04-06 08:04:04 -04:00
kwryankrattiger
663e20fcc4 ParaView: add v5.12.0 (#42943)
* ParaView: Update version 5.12.0

Add 5.12.0 release
Update default to 5.12.0

* Add patch for building ParaView 5.12 with kits

* Drop VTKm from neoverse
2024-04-06 04:12:48 +00:00
eugeneswalker
6428132ebb e4s ci: enable lammps variants from presets/most.cmake (#43522) 2024-04-05 20:56:18 -07:00
eugeneswalker
171958cf09 py-deephyper: add v0.6.0 (#43492)
* py-deephyper: add latest version: v0.6.0

* e4s: add py-deephyper

* v0.6.0: depend on python@3.7:3.11

* add py-packaging constraint so arm64 builds work

* [@spackbot] updating style on behalf of eugeneswalker
2024-04-06 00:28:37 +00:00
Frédéric Simonis
0d0f7ab030 Add release 3.1.0 (#43508) 2024-04-05 16:58:57 -07:00
eugeneswalker
35f8b43a54 e4s ci: add nekbone (#43515)
* e4s ci: add nekbone, nek5000

* remove nek5000
2024-04-05 16:36:13 -07:00
one
6f7eb3750c Add new versions of tinyxml2 (#43467)
* Add new versions of tinyxml2
  Added 7.0.0 to 10.0.0
* Add the variant "shared"
2024-04-05 13:36:45 -07:00
renjithravindrankannath
2121eb31ba Patch to set PARAMETERS_MIN_ALIGNMENT to the native alignment for rocm-opencl (#43444)
* For avx build, the start address of values_ buffer in KernelParameters
   is not a correct as it is computed based on 16-byte alignment.
* Style check error fix
2024-04-05 12:02:32 -07:00
kwryankrattiger
c68d739825 CI: Add debug to the log aggregation script (#42562)
* CI: Add debug to the log aggregation script
2024-04-05 14:00:27 -05:00
John W. Parent
c468697b35 Use correct method "append" instead of extend (#43514) 2024-04-05 18:46:47 +00:00
G-Ragghianti
c4094cf051 slate: Adding comgr as dependency (#43448)
* Adding comgr as dependency

* adding more smoke test deps
2024-04-05 11:32:16 -07:00
LinaMuryanto
9ff9ca61e6 py-amq, py-celery, py-kombu: New versions, fix build (#43295)
* updating package.py for py-celery, py-kombu, py-amq
* added more py-kombu package versions
* fix copyrights and stype on py-kombu/package.py
* removed extra spaces
* added py-billiard 4.2.0 and added back the license('BSD-3-Clause')
* removed extra spaces in py-celery/package.py
* fixed py-amqp 2.4.0 sha; fixed py-celery's dependency of py-click (when version restrictions)
* more clean up on specifying version bounds
2024-04-05 11:14:18 -07:00
Massimiliano Culpo
826e0c0405 Improve hit-rate on buildcaches (#43272)
* Relax compiler and target mismatches

The mismatch occurs on an edge. Previously it was assigned
the parent priority, now it is assigned the child priority.

This should make reuse from buildcaches or store more likely,
since most mismatches will be counted with "reused" priority.

* Optimize version badness for runtimes at very low priority

We don't want to e.g. switch other attributes because we
cannot reuse an old installed runtime.

* Optimize runtime attributes at very low priority

This is such that the version of the runtime would
not influence whether we should reuse a spec.

Compiler mismatches are considered for runtimes,
to avoid situations where compiling foo%gcc@9
brings in gcc-runtime%gcc@13 if gcc@13 is among
the available compilers

* Exclude specs without runtimes from reuse

This should ensure that we do not reuse specs that
could be broken, as they expect the compiler to be
installed in a specific place.
2024-04-05 20:10:28 +02:00
Andrey Perestoronin
1b86a842ea add itac and inspector packages (#43507) 2024-04-05 09:30:36 -04:00
Harmen Stoppels
558a28bf52 bazel: conflict with gcc 13 (#43504) 2024-04-05 14:24:06 +02:00
Harmen Stoppels
411576e1fa Do not acquire a write lock on the env post install if no views (#43505) 2024-04-05 12:31:21 +02:00
eugeneswalker
cab4f92960 datatransferkit: needs trilinos@14.2: for @3.1.0: (#43496) 2024-04-05 03:03:15 -06:00
Adam J. Stewart
c6c13f6782 GDAL: add v3.8.5 (#43493) 2024-04-04 21:29:28 -06:00
Daniele Cesarini
cf11fab5ad Added Libfort library (#43490) 2024-04-04 21:14:27 -06:00
Harmen Stoppels
1d8b35c840 installer.py: compute package_id from spec (#43485)
The installer runs `get_dependent_ids`, which follows edges outside the
subdag that's being installed, so it returns a superset of the actual
dependents.

That's generally fine, except that it calls `s.package` on every
dependent, which triggers a package class to be instantiated, which is a
lot of work.

Instead, compute the package id from the spec, since that's all that's
used anyways and does not trigger *lots* of slow and redundant
instantiations of package objects.
2024-04-04 20:39:30 -06:00
Weiqun Zhang
5dc46a976d amrex: add v24.04 (#43443) 2024-04-04 19:00:44 -07:00
Alex Richert
05f5596cdd Update grib-util recipe (#43484) 2024-04-04 15:07:05 -07:00
psakievich
6942c7f35b Update exawind packages (#40793) 2024-04-04 12:54:20 -06:00
Alex Richert
18f0ac0f94 Add g2@3.4.9 (#43481) 2024-04-04 11:50:08 -07:00
Vicente Bolea
d9196ee3f8 adios2: bump version 2.10.0 (#43479) 2024-04-04 13:46:40 -05:00
John W. Parent
ef0bb6fe6b Msvc: Determine OneAPI_ROOT from fc compiler path (#43131)
If ONEAPI_ROOT is not set as an environment variable, the current approach will raise an error.
Instead we can compute the OneAPI_ROOT from the compiler paths like we do with vcvarsall.
2024-04-04 11:14:44 -07:00
Alex Richert
3fed320013 Add MPI and arch bugfixes to SCOTCH (#39264)
* Add MPI and arch bugfixes to SCOTCH

* Update scotch/package.py
2024-04-04 12:48:39 -05:00
Chris Marsh
1aa77e695d Trilinos: add threadsafe variant (#43480)
* Fixes #43454 by exposing a threadsafe variant

* [@spackbot] updating style on behalf of Chrismarsh

* fix style

---------

Co-authored-by: Chrismarsh <Chrismarsh@users.noreply.github.com>
2024-04-04 10:00:53 -07:00
Alex Richert
3a0efeecf1 add g2c@1.9.0 (#43482) 2024-04-04 09:56:19 -07:00
Alex Richert
5ffb5657c9 update g2tmpl recipe (#43483) 2024-04-04 09:56:09 -07:00
Alex Richert
2b3e7fd10a Add shared variant for fftw to allow static-only builds (#37897)
Co-authored-by: alexrichert <alexrichert@gmail.com>
2024-04-04 03:47:46 -06:00
James Smillie
cb315e18f0 py-pip package: enable install on Windows (#43203)
The installation mechanism used on Linux to install py-pip (using pip
from the downloaded wheel to install the wheel) does not work on Windows.

This updates the installation of py-pip on Windows to download and
use a zipapp of a specific pip version in order to install the wheel
pip version that is requested.
2024-04-03 23:03:56 -06:00
Jonas Eschle
10c637aca0 py-zfit: add v0.18.* (#43200)
Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch>
2024-04-04 02:55:00 +02:00
Greg Becker
fb4e1cad45 remove dpcpp compiler and package (#43418)
`dpcpp` is deprecated by intel and has been superseded by `oneapi` compilers for a very long time.

---------

Co-authored-by: becker33 <becker33@users.noreply.github.com>
2024-04-03 15:34:23 -07:00
Adam J. Stewart
3054b71e2e py-rarfile: add v4.2 (#43477) 2024-04-03 15:08:36 -07:00
downloadico
47163f7435 py-cig-pythia: add missing py-setuptools dependency (#43473) 2024-04-03 15:02:32 -07:00
Dom Heinzeller
e322a8382f py-torch: Add variant 'internal-protobuf' to build with the internal protobuf (#43056) 2024-04-03 15:57:54 -06:00
Greg Sjaardema
53fb4795ca Seacas exodusii 04 2024 (#43468)
* SEACAS: Update package.py to handle new SEACAS project name
  The base project name for the SEACAS project has changed from
  "SEACASProj" to "SEACAS" as of @2022-10-14, so the package
  needed to be updated to use the new project name when needed.

  The refactor also changes several:
      "-DSome_CMAKE_Option:BOOL=ON"
  to
     define("Some_CMAKE_Option", True)
* SEACAS, EXODUSII: New version; deprecate older versions; better variant descriptions
* [@spackbot] updating style on behalf of gsjaardema
* Fix long lines reported by flake8

---------

Co-authored-by: gsjaardema <gsjaardema@users.noreply.github.com>
2024-04-03 15:46:57 -06:00
eugeneswalker
4517c7fa9b ginkgo@1.7 %oneapi@2024.1: icpx 2024.1 no longer accepts sycl::ext::intel::ctz (#43476) 2024-04-03 15:46:42 -06:00
Wouter Deconinck
efaed17f91 root: new version 6.30.06 (#43472) 2024-04-03 15:41:41 -06:00
Thomas Madlener
2c17cd365d Make it possible to build whizard from a git checkout (#43447) 2024-04-03 21:55:57 +02:00
psakievich
dfe537f688 Convert curl env mod method to a side effect (#43474) 2024-04-03 12:02:48 -07:00
G-Ragghianti
be0002b460 slate: Removing scalapack as test dependency, adding python (#43452)
* removing scalapack as test dependency, adding python
* fixing style
* style
2024-04-03 11:20:03 -07:00
Daryl W. Grunau
743ee5f3de eospac: expose versions 6.5.8 and 6.5.9 (#43450)
Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2024-04-03 11:17:15 -07:00
Cameron Smith
b6caf0156f simmetrix-simmodsuite: support RHEL8, fix module paths (#43455) 2024-04-03 11:07:43 -07:00
Christoph Junghans
ec00ffc244 byfl: fix llvm dep (#43460) 2024-04-03 10:39:06 -07:00
G-Ragghianti
f020256b9f magma add version 2.8.0 (#43417)
* Add release 2.8.0
* Changing C compiler to hipcc
* Final release version
* Adding new cmake definition for rocm support
* Enabling rocm version support
* Update sha256
* Updating website URL
* Removing unnecessary C compiler spec
* Adding rocm-core dependency
* fixing rocm-core version
* fixing rocm-core version
* fixing style
* bugfix
2024-04-03 11:25:46 -06:00
Peter Brady
04377e39e0 New package: Parthenon (#43426) 2024-04-03 10:05:02 -07:00
Vanessasaurus
ba2703fea6 flux-core: add v0.61.0 (#43465)
Co-authored-by: github-actions <github-actions@users.noreply.github.com>
2024-04-03 12:07:32 +02:00
Adrien Bernede
92b1c8f763 RADIUSS packages update (Starting over #39613) (#41375) 2024-04-02 15:03:07 -07:00
Adam J. Stewart
2b29ecd9b6 py-pillow: add v10+ (#43441) 2024-04-02 14:46:21 -07:00
Adam J. Stewart
5b43bf1b58 py-scikit-image: add v0.21 and v0.22 (#43440)
* py-scikit-image: add v0.21 and v0.22
* Add maintainer and license
* Style fix
2024-04-02 14:41:29 -07:00
Juan Miguel Carceller
37d9770e02 gdb: add a dependency on pkgconfig (#43439)
* gdb: add a dependency on pkgconfig
* Apply dependency for 13.1 and onwards

---------

Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
2024-04-02 14:39:03 -07:00
116 changed files with 2034 additions and 828 deletions

3
lib/spack/env/cc vendored
View File

@@ -248,7 +248,7 @@ case "$command" in
lang_flags=C lang_flags=C
debug_flags="-g" debug_flags="-g"
;; ;;
c++|CC|g++|clang++|armclang++|icpc|icpx|dpcpp|pgc++|nvc++|xlc++|xlc++_r|FCC|amdclang++|crayCC) c++|CC|g++|clang++|armclang++|icpc|icpx|pgc++|nvc++|xlc++|xlc++_r|FCC|amdclang++|crayCC)
command="$SPACK_CXX" command="$SPACK_CXX"
language="C++" language="C++"
comp="CXX" comp="CXX"
@@ -913,4 +913,3 @@ fi
# Execute the full command, preserving spaces with IFS set # Execute the full command, preserving spaces with IFS set
# to the alarm bell separator. # to the alarm bell separator.
IFS="$lsep"; exec $full_command_list IFS="$lsep"; exec $full_command_list

View File

@@ -434,11 +434,6 @@ def _do_patch_libtool(self):
r"crtendS\.o", r"crtendS\.o",
]: ]:
x.filter(regex=(rehead + o), repl="") x.filter(regex=(rehead + o), repl="")
elif self.pkg.compiler.name == "dpcpp":
# Hack to filter out spurious predep_objects when building with Intel dpcpp
# (see https://github.com/spack/spack/issues/32863):
x.filter(regex=r"^(predep_objects=.*)/tmp/conftest-[0-9A-Fa-f]+\.o", repl=r"\1")
x.filter(regex=r"^(predep_objects=.*)/tmp/a-[0-9A-Fa-f]+\.o", repl=r"\1")
elif self.pkg.compiler.name == "nag": elif self.pkg.compiler.name == "nag":
for tag in ["fc", "f77"]: for tag in ["fc", "f77"]:
marker = markers[tag] marker = markers[tag]

View File

@@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import collections.abc import collections.abc
import os import os
import re
from typing import Tuple from typing import Tuple
import llnl.util.filesystem as fs import llnl.util.filesystem as fs
@@ -15,6 +16,12 @@
from .cmake import CMakeBuilder, CMakePackage from .cmake import CMakeBuilder, CMakePackage
def spec_uses_toolchain(spec):
gcc_toolchain_regex = re.compile(".*gcc-toolchain.*")
using_toolchain = list(filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]))
return using_toolchain
def cmake_cache_path(name, value, comment="", force=False): def cmake_cache_path(name, value, comment="", force=False):
"""Generate a string for a cmake cache variable""" """Generate a string for a cmake cache variable"""
force_str = " FORCE" if force else "" force_str = " FORCE" if force else ""
@@ -132,6 +139,11 @@ def initconfig_compiler_entries(self):
"endif()\n", "endif()\n",
] ]
# We defined hipcc as top-level compiler for packages when +rocm.
# This avoid problems coming from rocm flags being applied to another compiler.
if "+rocm" in spec:
entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc))
flags = spec.compiler_flags flags = spec.compiler_flags
# use global spack compiler flags # use global spack compiler flags
@@ -213,7 +225,7 @@ def initconfig_mpi_entries(self):
else: else:
# starting with cmake 3.10, FindMPI expects MPIEXEC_EXECUTABLE # starting with cmake 3.10, FindMPI expects MPIEXEC_EXECUTABLE
# vs the older versions which expect MPIEXEC # vs the older versions which expect MPIEXEC
if self.pkg.spec["cmake"].satisfies("@3.10:"): if spec["cmake"].satisfies("@3.10:"):
entries.append(cmake_cache_path("MPIEXEC_EXECUTABLE", mpiexec)) entries.append(cmake_cache_path("MPIEXEC_EXECUTABLE", mpiexec))
else: else:
entries.append(cmake_cache_path("MPIEXEC", mpiexec)) entries.append(cmake_cache_path("MPIEXEC", mpiexec))
@@ -248,12 +260,17 @@ def initconfig_hardware_entries(self):
# Include the deprecated CUDA_TOOLKIT_ROOT_DIR for supporting BLT packages # Include the deprecated CUDA_TOOLKIT_ROOT_DIR for supporting BLT packages
entries.append(cmake_cache_path("CUDA_TOOLKIT_ROOT_DIR", cudatoolkitdir)) entries.append(cmake_cache_path("CUDA_TOOLKIT_ROOT_DIR", cudatoolkitdir))
archs = spec.variants["cuda_arch"].value # CUDA_FLAGS
if archs[0] != "none": cuda_flags = []
arch_str = ";".join(archs)
entries.append( if not spec.satisfies("cuda_arch=none"):
cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", "{0}".format(arch_str)) cuda_archs = ";".join(spec.variants["cuda_arch"].value)
) entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs))
if spec_uses_toolchain(spec):
cuda_flags.append("-Xcompiler {}".format(spec_uses_toolchain(spec)[0]))
entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags)))
if "+rocm" in spec: if "+rocm" in spec:
entries.append("#------------------{0}".format("-" * 30)) entries.append("#------------------{0}".format("-" * 30))
@@ -262,9 +279,6 @@ def initconfig_hardware_entries(self):
# Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary # Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix))) entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
entries.append(
cmake_cache_path("HIP_CXX_COMPILER", "{0}".format(self.spec["hip"].hipcc))
)
llvm_bin = spec["llvm-amdgpu"].prefix.bin llvm_bin = spec["llvm-amdgpu"].prefix.bin
llvm_prefix = spec["llvm-amdgpu"].prefix llvm_prefix = spec["llvm-amdgpu"].prefix
# Some ROCm systems seem to point to /<path>/rocm-<ver>/ and # Some ROCm systems seem to point to /<path>/rocm-<ver>/ and
@@ -277,11 +291,9 @@ def initconfig_hardware_entries(self):
archs = self.spec.variants["amdgpu_target"].value archs = self.spec.variants["amdgpu_target"].value
if archs[0] != "none": if archs[0] != "none":
arch_str = ";".join(archs) arch_str = ";".join(archs)
entries.append( entries.append(cmake_cache_string("CMAKE_HIP_ARCHITECTURES", arch_str))
cmake_cache_string("CMAKE_HIP_ARCHITECTURES", "{0}".format(arch_str)) entries.append(cmake_cache_string("AMDGPU_TARGETS", arch_str))
) entries.append(cmake_cache_string("GPU_TARGETS", arch_str))
entries.append(cmake_cache_string("AMDGPU_TARGETS", "{0}".format(arch_str)))
entries.append(cmake_cache_string("GPU_TARGETS", "{0}".format(arch_str)))
return entries return entries

View File

@@ -14,7 +14,7 @@
from llnl.util.link_tree import LinkTree from llnl.util.link_tree import LinkTree
from spack.build_environment import dso_suffix from spack.build_environment import dso_suffix
from spack.directives import conflicts, variant from spack.directives import conflicts, license, variant
from spack.package_base import InstallError from spack.package_base import InstallError
from spack.util.environment import EnvironmentModifications from spack.util.environment import EnvironmentModifications
from spack.util.executable import Executable from spack.util.executable import Executable
@@ -26,6 +26,7 @@ class IntelOneApiPackage(Package):
"""Base class for Intel oneAPI packages.""" """Base class for Intel oneAPI packages."""
homepage = "https://software.intel.com/oneapi" homepage = "https://software.intel.com/oneapi"
license("https://intel.ly/393CijO")
# oneAPI license does not allow mirroring outside of the # oneAPI license does not allow mirroring outside of the
# organization (e.g. University/Company). # organization (e.g. University/Company).

View File

@@ -1947,9 +1947,9 @@ def reproduce_ci_job(url, work_dir, autostart, gpg_url, runtime):
entrypoint_script.append(["echo", f"Re-run install script using:\n\t{install_mechanism}"]) entrypoint_script.append(["echo", f"Re-run install script using:\n\t{install_mechanism}"])
# Allow interactive # Allow interactive
if IS_WINDOWS: if IS_WINDOWS:
entrypoint_script.extend(["&", "($args -Join ' ')", "-NoExit"]) entrypoint_script.append(["&", "($args -Join ' ')", "-NoExit"])
else: else:
entrypoint_script.extend(["exec", "$@"]) entrypoint_script.append(["exec", "$@"])
process_command( process_command(
"entrypoint", entrypoint_script, work_dir, run=False, exit_on_failure=False "entrypoint", entrypoint_script, work_dir, run=False, exit_on_failure=False

View File

@@ -420,8 +420,7 @@ def install_with_active_env(env: ev.Environment, args, install_kwargs, reporter_
with reporter_factory(specs_to_install): with reporter_factory(specs_to_install):
env.install_specs(specs_to_install, **install_kwargs) env.install_specs(specs_to_install, **install_kwargs)
finally: finally:
# TODO: this is doing way too much to trigger if env.views:
# views and modules to be generated.
with env.write_transaction(): with env.write_transaction():
env.write(regenerate=True) env.write(regenerate=True)

View File

@@ -1,34 +0,0 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import spack.compilers.oneapi
class Dpcpp(spack.compilers.oneapi.Oneapi):
"""This is the same as the oneAPI compiler but uses dpcpp instead of
icpx (for DPC++ source files). It explicitly refers to dpcpp, so that
CMake test files which check the compiler name (e.g. CMAKE_CXX_COMPILER)
detect it as dpcpp.
Ideally we could switch out icpx for dpcpp where needed in the oneAPI
compiler definition, but two things are needed for that: (a) a way to
tell the compiler that it should be using dpcpp and (b) a way to
customize the link_paths
See also: https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compiler-setup/using-the-command-line/invoking-the-compiler.html
"""
# Subclasses use possible names of C++ compiler
cxx_names = ["dpcpp"]
# Named wrapper links within build_env_path
link_paths = {
"cc": os.path.join("oneapi", "icx"),
"cxx": os.path.join("oneapi", "dpcpp"),
"f77": os.path.join("oneapi", "ifx"),
"fc": os.path.join("oneapi", "ifx"),
}

View File

@@ -199,7 +199,7 @@ def __init__(self, *args, **kwargs):
# for a fortran compiler # for a fortran compiler
if paths[2]: if paths[2]:
# If this found, it sets all the vars # If this found, it sets all the vars
oneapi_root = os.getenv("ONEAPI_ROOT") oneapi_root = os.path.join(self.cc, "../../..")
oneapi_root_setvars = os.path.join(oneapi_root, "setvars.bat") oneapi_root_setvars = os.path.join(oneapi_root, "setvars.bat")
oneapi_version_setvars = os.path.join( oneapi_version_setvars = os.path.join(
oneapi_root, "compiler", str(self.ifx_version), "env", "vars.bat" oneapi_root, "compiler", str(self.ifx_version), "env", "vars.bat"

View File

@@ -119,7 +119,7 @@ def __init__(self, pkg_count: int):
self.pkg_ids: Set[str] = set() self.pkg_ids: Set[str] = set()
def next_pkg(self, pkg: "spack.package_base.PackageBase"): def next_pkg(self, pkg: "spack.package_base.PackageBase"):
pkg_id = package_id(pkg) pkg_id = package_id(pkg.spec)
if pkg_id not in self.pkg_ids: if pkg_id not in self.pkg_ids:
self.pkg_num += 1 self.pkg_num += 1
@@ -221,12 +221,12 @@ def _handle_external_and_upstream(pkg: "spack.package_base.PackageBase", explici
# consists in module file generation and registration in the DB. # consists in module file generation and registration in the DB.
if pkg.spec.external: if pkg.spec.external:
_process_external_package(pkg, explicit) _process_external_package(pkg, explicit)
_print_installed_pkg(f"{pkg.prefix} (external {package_id(pkg)})") _print_installed_pkg(f"{pkg.prefix} (external {package_id(pkg.spec)})")
return True return True
if pkg.spec.installed_upstream: if pkg.spec.installed_upstream:
tty.verbose( tty.verbose(
f"{package_id(pkg)} is installed in an upstream Spack instance at " f"{package_id(pkg.spec)} is installed in an upstream Spack instance at "
f"{pkg.spec.prefix}" f"{pkg.spec.prefix}"
) )
_print_installed_pkg(pkg.prefix) _print_installed_pkg(pkg.prefix)
@@ -403,7 +403,7 @@ def _install_from_cache(
return False return False
t.stop() t.stop()
pkg_id = package_id(pkg) pkg_id = package_id(pkg.spec)
tty.debug(f"Successfully extracted {pkg_id} from binary cache") tty.debug(f"Successfully extracted {pkg_id} from binary cache")
_write_timer_json(pkg, t, True) _write_timer_json(pkg, t, True)
@@ -484,7 +484,7 @@ def _process_binary_cache_tarball(
if download_result is None: if download_result is None:
return False return False
tty.msg(f"Extracting {package_id(pkg)} from binary cache") tty.msg(f"Extracting {package_id(pkg.spec)} from binary cache")
with timer.measure("install"), spack.util.path.filter_padding(): with timer.measure("install"), spack.util.path.filter_padding():
binary_distribution.extract_tarball(pkg.spec, download_result, force=False, timer=timer) binary_distribution.extract_tarball(pkg.spec, download_result, force=False, timer=timer)
@@ -513,7 +513,7 @@ def _try_install_from_binary_cache(
if not spack.mirror.MirrorCollection(binary=True): if not spack.mirror.MirrorCollection(binary=True):
return False return False
tty.debug(f"Searching for binary cache of {package_id(pkg)}") tty.debug(f"Searching for binary cache of {package_id(pkg.spec)}")
with timer.measure("search"): with timer.measure("search"):
matches = binary_distribution.get_mirrors_for_spec(pkg.spec, index_only=True) matches = binary_distribution.get_mirrors_for_spec(pkg.spec, index_only=True)
@@ -610,7 +610,7 @@ def get_dependent_ids(spec: "spack.spec.Spec") -> List[str]:
Returns: list of package ids Returns: list of package ids
""" """
return [package_id(d.package) for d in spec.dependents()] return [package_id(d) for d in spec.dependents()]
def install_msg(name: str, pid: int, install_status: InstallStatus) -> str: def install_msg(name: str, pid: int, install_status: InstallStatus) -> str:
@@ -720,7 +720,7 @@ def log(pkg: "spack.package_base.PackageBase") -> None:
dump_packages(pkg.spec, packages_dir) dump_packages(pkg.spec, packages_dir)
def package_id(pkg: "spack.package_base.PackageBase") -> str: def package_id(spec: "spack.spec.Spec") -> str:
"""A "unique" package identifier for installation purposes """A "unique" package identifier for installation purposes
The identifier is used to track build tasks, locks, install, and The identifier is used to track build tasks, locks, install, and
@@ -732,10 +732,10 @@ def package_id(pkg: "spack.package_base.PackageBase") -> str:
Args: Args:
pkg: the package from which the identifier is derived pkg: the package from which the identifier is derived
""" """
if not pkg.spec.concrete: if not spec.concrete:
raise ValueError("Cannot provide a unique, readable id when the spec is not concretized.") raise ValueError("Cannot provide a unique, readable id when the spec is not concretized.")
return f"{pkg.name}-{pkg.version}-{pkg.spec.dag_hash()}" return f"{spec.name}-{spec.version}-{spec.dag_hash()}"
class BuildRequest: class BuildRequest:
@@ -765,7 +765,7 @@ def __init__(self, pkg: "spack.package_base.PackageBase", install_args: dict):
self.pkg.last_phase = install_args.pop("stop_at", None) # type: ignore[attr-defined] self.pkg.last_phase = install_args.pop("stop_at", None) # type: ignore[attr-defined]
# Cache the package id for convenience # Cache the package id for convenience
self.pkg_id = package_id(pkg) self.pkg_id = package_id(pkg.spec)
# Save off the original install arguments plus standard defaults # Save off the original install arguments plus standard defaults
# since they apply to the requested package *and* dependencies. # since they apply to the requested package *and* dependencies.
@@ -780,9 +780,9 @@ def __init__(self, pkg: "spack.package_base.PackageBase", install_args: dict):
# are not able to return full dependents for all packages across # are not able to return full dependents for all packages across
# environment specs. # environment specs.
self.dependencies = set( self.dependencies = set(
package_id(d.package) package_id(d)
for d in self.pkg.spec.dependencies(deptype=self.get_depflags(self.pkg)) for d in self.pkg.spec.dependencies(deptype=self.get_depflags(self.pkg))
if package_id(d.package) != self.pkg_id if package_id(d) != self.pkg_id
) )
def __repr__(self) -> str: def __repr__(self) -> str:
@@ -832,7 +832,7 @@ def get_depflags(self, pkg: "spack.package_base.PackageBase") -> int:
depflag = dt.LINK | dt.RUN depflag = dt.LINK | dt.RUN
include_build_deps = self.install_args.get("include_build_deps") include_build_deps = self.install_args.get("include_build_deps")
if self.pkg_id == package_id(pkg): if self.pkg_id == package_id(pkg.spec):
cache_only = self.install_args.get("package_cache_only") cache_only = self.install_args.get("package_cache_only")
else: else:
cache_only = self.install_args.get("dependencies_cache_only") cache_only = self.install_args.get("dependencies_cache_only")
@@ -927,7 +927,7 @@ def __init__(
raise ValueError(f"{self.pkg.name} must have a concrete spec") raise ValueError(f"{self.pkg.name} must have a concrete spec")
# The "unique" identifier for the task's package # The "unique" identifier for the task's package
self.pkg_id = package_id(self.pkg) self.pkg_id = package_id(self.pkg.spec)
# The explicit build request associated with the package # The explicit build request associated with the package
if not isinstance(request, BuildRequest): if not isinstance(request, BuildRequest):
@@ -965,9 +965,9 @@ def __init__(
# if use traverse for transitive dependencies, then must remove # if use traverse for transitive dependencies, then must remove
# transitive dependents on failure. # transitive dependents on failure.
self.dependencies = set( self.dependencies = set(
package_id(d.package) package_id(d)
for d in self.pkg.spec.dependencies(deptype=self.request.get_depflags(self.pkg)) for d in self.pkg.spec.dependencies(deptype=self.request.get_depflags(self.pkg))
if package_id(d.package) != self.pkg_id if package_id(d) != self.pkg_id
) )
# Handle bootstrapped compiler # Handle bootstrapped compiler
@@ -983,7 +983,7 @@ def __init__(
dep.constrain(f"os={str(arch_spec.os)}") dep.constrain(f"os={str(arch_spec.os)}")
dep.constrain(f"target={arch_spec.target.microarchitecture.family.name}:") dep.constrain(f"target={arch_spec.target.microarchitecture.family.name}:")
dep.concretize() dep.concretize()
dep_id = package_id(dep.package) dep_id = package_id(dep)
self.dependencies.add(dep_id) self.dependencies.add(dep_id)
# List of uninstalled dependencies, which is used to establish # List of uninstalled dependencies, which is used to establish
@@ -1194,7 +1194,7 @@ def _add_bootstrap_compilers(
""" """
packages = _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs) packages = _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs)
for comp_pkg, is_compiler in packages: for comp_pkg, is_compiler in packages:
pkgid = package_id(comp_pkg) pkgid = package_id(comp_pkg.spec)
if pkgid not in self.build_tasks: if pkgid not in self.build_tasks:
self._add_init_task(comp_pkg, request, is_compiler, all_deps) self._add_init_task(comp_pkg, request, is_compiler, all_deps)
elif is_compiler: elif is_compiler:
@@ -1241,7 +1241,7 @@ def _add_init_task(
""" """
task = BuildTask(pkg, request, is_compiler, 0, 0, STATUS_ADDED, self.installed) task = BuildTask(pkg, request, is_compiler, 0, 0, STATUS_ADDED, self.installed)
for dep_id in task.dependencies: for dep_id in task.dependencies:
all_deps[dep_id].add(package_id(pkg)) all_deps[dep_id].add(package_id(pkg.spec))
self._push_task(task) self._push_task(task)
@@ -1276,7 +1276,7 @@ def _check_deps_status(self, request: BuildRequest) -> None:
err = "Cannot proceed with {0}: {1}" err = "Cannot proceed with {0}: {1}"
for dep in request.traverse_dependencies(): for dep in request.traverse_dependencies():
dep_pkg = dep.package dep_pkg = dep.package
dep_id = package_id(dep_pkg) dep_id = package_id(dep)
# Check for failure since a prefix lock is not required # Check for failure since a prefix lock is not required
if spack.store.STORE.failure_tracker.has_failed(dep): if spack.store.STORE.failure_tracker.has_failed(dep):
@@ -1409,7 +1409,7 @@ def _cleanup_task(self, pkg: "spack.package_base.PackageBase") -> None:
Args: Args:
pkg: the package being installed pkg: the package being installed
""" """
self._remove_task(package_id(pkg)) self._remove_task(package_id(pkg.spec))
# Ensure we have a read lock to prevent others from uninstalling the # Ensure we have a read lock to prevent others from uninstalling the
# spec during our installation. # spec during our installation.
@@ -1423,7 +1423,7 @@ def _ensure_install_ready(self, pkg: "spack.package_base.PackageBase") -> None:
Args: Args:
pkg: the package being locally installed pkg: the package being locally installed
""" """
pkg_id = package_id(pkg) pkg_id = package_id(pkg.spec)
pre = f"{pkg_id} cannot be installed locally:" pre = f"{pkg_id} cannot be installed locally:"
# External packages cannot be installed locally. # External packages cannot be installed locally.
@@ -1465,7 +1465,7 @@ def _ensure_locked(
"write", "write",
], f'"{lock_type}" is not a supported package management lock type' ], f'"{lock_type}" is not a supported package management lock type'
pkg_id = package_id(pkg) pkg_id = package_id(pkg.spec)
ltype, lock = self.locks.get(pkg_id, (lock_type, None)) ltype, lock = self.locks.get(pkg_id, (lock_type, None))
if lock and ltype == lock_type: if lock and ltype == lock_type:
return ltype, lock return ltype, lock
@@ -1601,7 +1601,7 @@ def _add_tasks(self, request: BuildRequest, all_deps):
for dep in request.traverse_dependencies(): for dep in request.traverse_dependencies():
dep_pkg = dep.package dep_pkg = dep.package
dep_id = package_id(dep_pkg) dep_id = package_id(dep)
if dep_id not in self.build_tasks: if dep_id not in self.build_tasks:
self._add_init_task(dep_pkg, request, False, all_deps) self._add_init_task(dep_pkg, request, False, all_deps)
@@ -1913,7 +1913,7 @@ def _flag_installed(
dependent_ids: set of the package's dependent ids, or None if the dependent ids are dependent_ids: set of the package's dependent ids, or None if the dependent ids are
limited to those maintained in the package (dependency DAG) limited to those maintained in the package (dependency DAG)
""" """
pkg_id = package_id(pkg) pkg_id = package_id(pkg.spec)
if pkg_id in self.installed: if pkg_id in self.installed:
# Already determined the package has been installed # Already determined the package has been installed
@@ -2309,7 +2309,7 @@ def __init__(self, pkg: "spack.package_base.PackageBase", install_args: dict):
# info/debug information # info/debug information
self.pre = _log_prefix(pkg.name) self.pre = _log_prefix(pkg.name)
self.pkg_id = package_id(pkg) self.pkg_id = package_id(pkg.spec)
def run(self) -> bool: def run(self) -> bool:
"""Main entry point from ``build_process`` to kick off install in child.""" """Main entry point from ``build_process`` to kick off install in child."""

View File

@@ -3371,7 +3371,7 @@ def _is_reusable(spec: spack.spec.Spec, packages, local: bool) -> bool:
return False return False
if not spec.external: if not spec.external:
return True return _has_runtime_dependencies(spec)
# Cray external manifest externals are always reusable # Cray external manifest externals are always reusable
if local: if local:
@@ -3396,6 +3396,19 @@ def _is_reusable(spec: spack.spec.Spec, packages, local: bool) -> bool:
return False return False
def _has_runtime_dependencies(spec: spack.spec.Spec) -> bool:
if not WITH_RUNTIME:
return True
if spec.compiler.name == "gcc" and not spec.dependencies("gcc-runtime"):
return False
if spec.compiler.name == "oneapi" and not spec.dependencies("intel-oneapi-runtime"):
return False
return True
class Solver: class Solver:
"""This is the main external interface class for solving. """This is the main external interface class for solving.

View File

@@ -80,6 +80,7 @@ unification_set(SetID, VirtualNode)
#defined multiple_unification_sets/1. #defined multiple_unification_sets/1.
#defined runtime/1.
%---- %----
% Rules to break symmetry and speed-up searches % Rules to break symmetry and speed-up searches
@@ -1494,18 +1495,20 @@ opt_criterion(40, "compiler mismatches that are not from CLI").
#minimize{ 0@240: #true }. #minimize{ 0@240: #true }.
#minimize{ 0@40: #true }. #minimize{ 0@40: #true }.
#minimize{ #minimize{
1@40+Priority,PackageNode,DependencyNode 1@40+Priority,PackageNode,node(ID, Dependency)
: compiler_mismatch(PackageNode, DependencyNode), : compiler_mismatch(PackageNode, node(ID, Dependency)),
build_priority(PackageNode, Priority) build_priority(node(ID, Dependency), Priority),
not runtime(Dependency)
}. }.
opt_criterion(39, "compiler mismatches that are not from CLI"). opt_criterion(39, "compiler mismatches that are not from CLI").
#minimize{ 0@239: #true }. #minimize{ 0@239: #true }.
#minimize{ 0@39: #true }. #minimize{ 0@39: #true }.
#minimize{ #minimize{
1@39+Priority,PackageNode,DependencyNode 1@39+Priority,PackageNode,node(ID, Dependency)
: compiler_mismatch_required(PackageNode, DependencyNode), : compiler_mismatch_required(PackageNode, node(ID, Dependency)),
build_priority(PackageNode, Priority) build_priority(node(ID, Dependency), Priority),
not runtime(Dependency)
}. }.
opt_criterion(30, "non-preferred OS's"). opt_criterion(30, "non-preferred OS's").
@@ -1522,9 +1525,10 @@ opt_criterion(25, "version badness").
#minimize{ 0@225: #true }. #minimize{ 0@225: #true }.
#minimize{ 0@25: #true }. #minimize{ 0@25: #true }.
#minimize{ #minimize{
Weight@25+Priority,PackageNode Weight@25+Priority,node(X, Package)
: version_weight(PackageNode, Weight), : version_weight(node(X, Package), Weight),
build_priority(PackageNode, Priority) build_priority(node(X, Package), Priority),
not runtime(Package)
}. }.
% Try to use all the default values of variants % Try to use all the default values of variants
@@ -1543,9 +1547,10 @@ opt_criterion(15, "non-preferred compilers").
#minimize{ 0@215: #true }. #minimize{ 0@215: #true }.
#minimize{ 0@15: #true }. #minimize{ 0@15: #true }.
#minimize{ #minimize{
Weight@15+Priority,PackageNode Weight@15+Priority,node(X, Package)
: node_compiler_weight(PackageNode, Weight), : node_compiler_weight(node(X, Package), Weight),
build_priority(PackageNode, Priority) build_priority(node(X, Package), Priority),
not runtime(Package)
}. }.
% Minimize the number of mismatches for targets in the DAG, try % Minimize the number of mismatches for targets in the DAG, try
@@ -1554,18 +1559,55 @@ opt_criterion(10, "target mismatches").
#minimize{ 0@210: #true }. #minimize{ 0@210: #true }.
#minimize{ 0@10: #true }. #minimize{ 0@10: #true }.
#minimize{ #minimize{
1@10+Priority,PackageNode,Dependency 1@10+Priority,PackageNode,node(ID, Dependency)
: node_target_mismatch(PackageNode, Dependency), : node_target_mismatch(PackageNode, node(ID, Dependency)),
build_priority(PackageNode, Priority) build_priority(node(ID, Dependency), Priority),
not runtime(Dependency)
}. }.
opt_criterion(5, "non-preferred targets"). opt_criterion(5, "non-preferred targets").
#minimize{ 0@205: #true }. #minimize{ 0@205: #true }.
#minimize{ 0@5: #true }. #minimize{ 0@5: #true }.
#minimize{ #minimize{
Weight@5+Priority,PackageNode Weight@5+Priority,node(X, Package)
: node_target_weight(PackageNode, Weight), : node_target_weight(node(X, Package), Weight),
build_priority(PackageNode, Priority) build_priority(node(X, Package), Priority),
not runtime(Package)
}.
% Minimize the number of compiler mismatches for runtimes
opt_criterion(4, "compiler mismatches (runtimes)").
#minimize{ 0@204: #true }.
#minimize{ 0@4: #true }.
#minimize{
1@4,PackageNode,node(ID, Dependency)
: compiler_mismatch(PackageNode, node(ID, Dependency)), runtime(Dependency)
}.
#minimize{
1@4,PackageNode,node(ID, Dependency)
: compiler_mismatch_required(PackageNode, node(ID, Dependency)), runtime(Dependency)
}.
% Choose more recent versions for runtimes
opt_criterion(3, "version badness (runtimes)").
#minimize{ 0@203: #true }.
#minimize{ 0@3: #true }.
#minimize{
Weight@3,node(X, Package)
: version_weight(node(X, Package), Weight),
runtime(Package)
}.
% Choose best target for runtimes
opt_criterion(2, "non-preferred targets (runtimes)").
#minimize{ 0@202: #true }.
#minimize{ 0@2: #true }.
#minimize{
Weight@2,node(X, Package)
: node_target_weight(node(X, Package), Weight),
runtime(Package)
}. }.
% Choose more recent versions for nodes % Choose more recent versions for nodes

View File

@@ -142,7 +142,7 @@ def optimization_flags(self, compiler):
# custom spec. # custom spec.
compiler_version = compiler.version compiler_version = compiler.version
version_number, suffix = archspec.cpu.version_components(compiler.version) version_number, suffix = archspec.cpu.version_components(compiler.version)
if not version_number or suffix not in ("", "apple"): if not version_number or suffix:
# Try to deduce the underlying version of the compiler, regardless # Try to deduce the underlying version of the compiler, regardless
# of its name in compilers.yaml. Depending on where this function # of its name in compilers.yaml. Depending on where this function
# is called we might get either a CompilerSpec or a fully fledged # is called we might get either a CompilerSpec or a fully fledged

View File

@@ -112,10 +112,10 @@ def test_compiler_find_no_apple_gcc(no_compilers_yaml, working_env, mock_executa
@pytest.mark.regression("37996") @pytest.mark.regression("37996")
def test_compiler_remove(mutable_config, mock_packages): def test_compiler_remove(mutable_config, mock_packages):
"""Tests that we can remove a compiler from configuration.""" """Tests that we can remove a compiler from configuration."""
assert spack.spec.CompilerSpec("gcc@=4.8.0") in spack.compilers.all_compiler_specs() assert spack.spec.CompilerSpec("gcc@=9.4.0") in spack.compilers.all_compiler_specs()
args = spack.util.pattern.Bunch(all=True, compiler_spec="gcc@4.8.0", add_paths=[], scope=None) args = spack.util.pattern.Bunch(all=True, compiler_spec="gcc@9.4.0", add_paths=[], scope=None)
spack.cmd.compiler.compiler_remove(args) spack.cmd.compiler.compiler_remove(args)
assert spack.spec.CompilerSpec("gcc@=4.8.0") not in spack.compilers.all_compiler_specs() assert spack.spec.CompilerSpec("gcc@=9.4.0") not in spack.compilers.all_compiler_specs()
@pytest.mark.regression("37996") @pytest.mark.regression("37996")
@@ -124,10 +124,10 @@ def test_removing_compilers_from_multiple_scopes(mutable_config, mock_packages):
site_config = spack.config.get("compilers", scope="site") site_config = spack.config.get("compilers", scope="site")
spack.config.set("compilers", site_config, scope="user") spack.config.set("compilers", site_config, scope="user")
assert spack.spec.CompilerSpec("gcc@=4.8.0") in spack.compilers.all_compiler_specs() assert spack.spec.CompilerSpec("gcc@=9.4.0") in spack.compilers.all_compiler_specs()
args = spack.util.pattern.Bunch(all=True, compiler_spec="gcc@4.8.0", add_paths=[], scope=None) args = spack.util.pattern.Bunch(all=True, compiler_spec="gcc@9.4.0", add_paths=[], scope=None)
spack.cmd.compiler.compiler_remove(args) spack.cmd.compiler.compiler_remove(args)
assert spack.spec.CompilerSpec("gcc@=4.8.0") not in spack.compilers.all_compiler_specs() assert spack.spec.CompilerSpec("gcc@=9.4.0") not in spack.compilers.all_compiler_specs()
@pytest.mark.not_on_windows("Cannot execute bash script on Windows") @pytest.mark.not_on_windows("Cannot execute bash script on Windows")

View File

@@ -31,7 +31,7 @@ def test_spec():
@pytest.mark.only_clingo("Known failure of the original concretizer") @pytest.mark.only_clingo("Known failure of the original concretizer")
def test_spec_concretizer_args(mutable_config, mutable_database): def test_spec_concretizer_args(mutable_config, mutable_database, do_not_check_runtimes_on_reuse):
"""End-to-end test of CLI concretizer prefs. """End-to-end test of CLI concretizer prefs.
It's here to make sure that everything works from CLI It's here to make sure that everything works from CLI

View File

@@ -254,7 +254,7 @@ def gcc11_with_flags(compiler_factory):
# This must use the mutable_config fixture because the test # This must use the mutable_config fixture because the test
# adjusting_default_target_based_on_compiler uses the current_host fixture, # adjusting_default_target_based_on_compiler uses the current_host fixture,
# which changes the config. # which changes the config.
@pytest.mark.usefixtures("mutable_config", "mock_packages") @pytest.mark.usefixtures("mutable_config", "mock_packages", "do_not_check_runtimes_on_reuse")
class TestConcretize: class TestConcretize:
def test_concretize(self, spec): def test_concretize(self, spec):
check_concretize(spec) check_concretize(spec)
@@ -614,7 +614,7 @@ def test_my_dep_depends_on_provider_of_my_virtual_dep(self):
spec.normalize() spec.normalize()
spec.concretize() spec.concretize()
@pytest.mark.parametrize("compiler_str", ["clang", "gcc", "gcc@10.2.1", "clang@:12.0.0"]) @pytest.mark.parametrize("compiler_str", ["clang", "gcc", "gcc@10.2.1", "clang@:15.0.0"])
def test_compiler_inheritance(self, compiler_str): def test_compiler_inheritance(self, compiler_str):
spec_str = "mpileaks %{0}".format(compiler_str) spec_str = "mpileaks %{0}".format(compiler_str)
spec = Spec(spec_str).concretized() spec = Spec(spec_str).concretized()
@@ -877,7 +877,7 @@ def test_concretize_anonymous_dep(self, spec_str):
# Unconstrained versions select default compiler (gcc@4.5.0) # Unconstrained versions select default compiler (gcc@4.5.0)
("bowtie@1.4.0", "%gcc@10.2.1"), ("bowtie@1.4.0", "%gcc@10.2.1"),
# Version with conflicts and no valid gcc select another compiler # Version with conflicts and no valid gcc select another compiler
("bowtie@1.3.0", "%clang@12.0.0"), ("bowtie@1.3.0", "%clang@15.0.0"),
# If a higher gcc is available still prefer that # If a higher gcc is available still prefer that
("bowtie@1.2.2 os=redhat6", "%gcc@11.1.0"), ("bowtie@1.2.2 os=redhat6", "%gcc@11.1.0"),
], ],
@@ -1439,7 +1439,7 @@ def test_os_selection_when_multiple_choices_are_possible(
@pytest.mark.regression("22718") @pytest.mark.regression("22718")
@pytest.mark.parametrize( @pytest.mark.parametrize(
"spec_str,expected_compiler", "spec_str,expected_compiler",
[("mpileaks", "%gcc@10.2.1"), ("mpileaks ^mpich%clang@12.0.0", "%clang@12.0.0")], [("mpileaks", "%gcc@10.2.1"), ("mpileaks ^mpich%clang@15.0.0", "%clang@15.0.0")],
) )
def test_compiler_is_unique(self, spec_str, expected_compiler): def test_compiler_is_unique(self, spec_str, expected_compiler):
s = Spec(spec_str).concretized() s = Spec(spec_str).concretized()
@@ -1727,7 +1727,7 @@ def test_reuse_with_unknown_package_dont_raise(self, tmpdir, temporary_store, mo
[ [
(["libelf", "libelf@0.8.10"], 1), (["libelf", "libelf@0.8.10"], 1),
(["libdwarf%gcc", "libelf%clang"], 2), (["libdwarf%gcc", "libelf%clang"], 2),
(["libdwarf%gcc", "libdwarf%clang"], 4), (["libdwarf%gcc", "libdwarf%clang"], 3),
(["libdwarf^libelf@0.8.12", "libdwarf^libelf@0.8.13"], 4), (["libdwarf^libelf@0.8.12", "libdwarf^libelf@0.8.13"], 4),
(["hdf5", "zmpi"], 3), (["hdf5", "zmpi"], 3),
(["hdf5", "mpich"], 2), (["hdf5", "mpich"], 2),

View File

@@ -7,6 +7,8 @@
import pytest import pytest
import archspec.cpu
import spack.paths import spack.paths
import spack.repo import spack.repo
import spack.solver.asp import spack.solver.asp
@@ -24,9 +26,7 @@ def _concretize_with_reuse(*, root_str, reused_str):
reused_spec = spack.spec.Spec(reused_str).concretized() reused_spec = spack.spec.Spec(reused_str).concretized()
setup = spack.solver.asp.SpackSolverSetup(tests=False) setup = spack.solver.asp.SpackSolverSetup(tests=False)
driver = spack.solver.asp.PyclingoDriver() driver = spack.solver.asp.PyclingoDriver()
result, _, _ = driver.solve( result, _, _ = driver.solve(setup, [spack.spec.Spec(f"{root_str}")], reuse=[reused_spec])
setup, [spack.spec.Spec(f"{root_str} ^{reused_str}")], reuse=[reused_spec]
)
root = result.specs[0] root = result.specs[0]
return root, reused_spec return root, reused_spec
@@ -47,7 +47,7 @@ def enable_runtimes():
def test_correct_gcc_runtime_is_injected_as_dependency(runtime_repo): def test_correct_gcc_runtime_is_injected_as_dependency(runtime_repo):
s = spack.spec.Spec("a%gcc@10.2.1 ^b%gcc@4.8.0").concretized() s = spack.spec.Spec("a%gcc@10.2.1 ^b%gcc@9.4.0").concretized()
a, b = s["a"], s["b"] a, b = s["a"], s["b"]
# Both a and b should depend on the same gcc-runtime directly # Both a and b should depend on the same gcc-runtime directly
@@ -78,9 +78,28 @@ def test_external_nodes_do_not_have_runtimes(runtime_repo, mutable_config, tmp_p
"root_str,reused_str,expected,nruntime", "root_str,reused_str,expected,nruntime",
[ [
# The reused runtime is older than we need, thus we'll add a more recent one for a # The reused runtime is older than we need, thus we'll add a more recent one for a
("a%gcc@10.2.1", "b%gcc@4.8.0", {"a": "gcc-runtime@10.2.1", "b": "gcc-runtime@4.8.0"}, 2), ("a%gcc@10.2.1", "b%gcc@9.4.0", {"a": "gcc-runtime@10.2.1", "b": "gcc-runtime@9.4.0"}, 2),
# The root is compiled with an older compiler, thus we'll reuse the runtime from b # The root is compiled with an older compiler, thus we'll reuse the runtime from b
("a%gcc@4.8.0", "b%gcc@10.2.1", {"a": "gcc-runtime@10.2.1", "b": "gcc-runtime@10.2.1"}, 1), ("a%gcc@9.4.0", "b%gcc@10.2.1", {"a": "gcc-runtime@10.2.1", "b": "gcc-runtime@10.2.1"}, 1),
# Same as before, but tests that we can reuse from a more generic target
pytest.param(
"a%gcc@9.4.0",
"b%gcc@10.2.1 target=x86_64",
{"a": "gcc-runtime@10.2.1 target=x86_64", "b": "gcc-runtime@10.2.1 target=x86_64"},
1,
marks=pytest.mark.skipif(
str(archspec.cpu.host().family) != "x86_64", reason="test data is x86_64 specific"
),
),
pytest.param(
"a%gcc@10.2.1",
"b%gcc@9.4.0 target=x86_64",
{"a": "gcc-runtime@10.2.1 target=x86_64", "b": "gcc-runtime@9.4.0 target=x86_64"},
2,
marks=pytest.mark.skipif(
str(archspec.cpu.host().family) != "x86_64", reason="test data is x86_64 specific"
),
),
], ],
) )
def test_reusing_specs_with_gcc_runtime(root_str, reused_str, expected, nruntime, runtime_repo): def test_reusing_specs_with_gcc_runtime(root_str, reused_str, expected, nruntime, runtime_repo):
@@ -104,8 +123,8 @@ def test_reusing_specs_with_gcc_runtime(root_str, reused_str, expected, nruntime
[ [
# Ensure that, whether we have multiple runtimes in the DAG or not, # Ensure that, whether we have multiple runtimes in the DAG or not,
# we always link only the latest version # we always link only the latest version
("a%gcc@10.2.1", "b%gcc@4.8.0", ["gcc-runtime@10.2.1"], ["gcc-runtime@4.8.0"]), ("a%gcc@10.2.1", "b%gcc@9.4.0", ["gcc-runtime@10.2.1"], ["gcc-runtime@9.4.0"]),
("a%gcc@4.8.0", "b%gcc@10.2.1", ["gcc-runtime@10.2.1"], ["gcc-runtime@4.8.0"]), ("a%gcc@9.4.0", "b%gcc@10.2.1", ["gcc-runtime@10.2.1"], ["gcc-runtime@9.4.0"]),
], ],
) )
def test_views_can_handle_duplicate_runtime_nodes( def test_views_can_handle_duplicate_runtime_nodes(

View File

@@ -105,7 +105,7 @@ def test_preferred_variants_from_wildcard(self):
@pytest.mark.parametrize( @pytest.mark.parametrize(
"compiler_str,spec_str", "compiler_str,spec_str",
[("gcc@=4.8.0", "mpileaks"), ("clang@=12.0.0", "mpileaks"), ("gcc@=4.8.0", "openmpi")], [("gcc@=9.4.0", "mpileaks"), ("clang@=15.0.0", "mpileaks"), ("gcc@=9.4.0", "openmpi")],
) )
def test_preferred_compilers(self, compiler_str, spec_str): def test_preferred_compilers(self, compiler_str, spec_str):
"""Test preferred compilers are applied correctly""" """Test preferred compilers are applied correctly"""

View File

@@ -2013,3 +2013,12 @@ def _factory(*, spec, operating_system):
def host_architecture_str(): def host_architecture_str():
"""Returns the broad architecture family (x86_64, aarch64, etc.)""" """Returns the broad architecture family (x86_64, aarch64, etc.)"""
return str(archspec.cpu.host().family) return str(archspec.cpu.host().family)
def _true(x):
return True
@pytest.fixture()
def do_not_check_runtimes_on_reuse(monkeypatch):
monkeypatch.setattr(spack.solver.asp, "_has_runtime_dependencies", _true)

View File

@@ -1,6 +1,6 @@
compilers: compilers:
- compiler: - compiler:
spec: gcc@=4.8.0 spec: gcc@=9.4.0
operating_system: {linux_os.name}{linux_os.version} operating_system: {linux_os.name}{linux_os.version}
paths: paths:
cc: /path/to/gcc cc: /path/to/gcc
@@ -10,7 +10,7 @@ compilers:
modules: [] modules: []
target: {target} target: {target}
- compiler: - compiler:
spec: gcc@=4.8.0 spec: gcc@=9.4.0
operating_system: redhat6 operating_system: redhat6
paths: paths:
cc: /path/to/gcc cc: /path/to/gcc
@@ -20,7 +20,7 @@ compilers:
modules: [] modules: []
target: {target} target: {target}
- compiler: - compiler:
spec: clang@=12.0.0 spec: clang@=15.0.0
operating_system: {linux_os.name}{linux_os.version} operating_system: {linux_os.name}{linux_os.version}
paths: paths:
cc: /path/to/clang cc: /path/to/clang

View File

@@ -16,7 +16,7 @@ packages:
externalvirtual: externalvirtual:
buildable: False buildable: False
externals: externals:
- spec: externalvirtual@2.0%clang@12.0.0 - spec: externalvirtual@2.0%clang@15.0.0
prefix: /path/to/external_virtual_clang prefix: /path/to/external_virtual_clang
- spec: externalvirtual@1.0%gcc@10.2.1 - spec: externalvirtual@1.0%gcc@10.2.1
prefix: /path/to/external_virtual_gcc prefix: /path/to/external_virtual_gcc

View File

@@ -4,7 +4,7 @@ lmod:
hash_length: 0 hash_length: 0
core_compilers: core_compilers:
- 'clang@12.0.0' - 'clang@15.0.0'
core_specs: core_specs:
- 'mpich@3.0.1' - 'mpich@3.0.1'

View File

@@ -2,4 +2,4 @@ enable:
- lmod - lmod
lmod: lmod:
core_compilers: core_compilers:
- 'clang@12.0.0' - 'clang@15.0.0'

View File

@@ -2,4 +2,4 @@ enable:
- lmod - lmod
lmod: lmod:
core_compilers: core_compilers:
- 'clang@=12.0.0' - 'clang@=15.0.0'

View File

@@ -136,7 +136,7 @@ def test_get_dependent_ids(install_mockery, mock_packages):
spec.concretize() spec.concretize()
assert spec.concrete assert spec.concrete
pkg_id = inst.package_id(spec.package) pkg_id = inst.package_id(spec)
# Grab the sole dependency of 'a', which is 'b' # Grab the sole dependency of 'a', which is 'b'
dep = spec.dependencies()[0] dep = spec.dependencies()[0]
@@ -385,7 +385,7 @@ def test_ensure_locked_have(install_mockery, tmpdir, capsys):
const_arg = installer_args(["trivial-install-test-package"], {}) const_arg = installer_args(["trivial-install-test-package"], {})
installer = create_installer(const_arg) installer = create_installer(const_arg)
spec = installer.build_requests[0].pkg.spec spec = installer.build_requests[0].pkg.spec
pkg_id = inst.package_id(spec.package) pkg_id = inst.package_id(spec)
with tmpdir.as_cwd(): with tmpdir.as_cwd():
# Test "downgrade" of a read lock (to a read lock) # Test "downgrade" of a read lock (to a read lock)
@@ -456,17 +456,15 @@ def _pl(db, spec, timeout):
def test_package_id_err(install_mockery): def test_package_id_err(install_mockery):
s = spack.spec.Spec("trivial-install-test-package") s = spack.spec.Spec("trivial-install-test-package")
pkg_cls = spack.repo.PATH.get_pkg_class(s.name)
with pytest.raises(ValueError, match="spec is not concretized"): with pytest.raises(ValueError, match="spec is not concretized"):
inst.package_id(pkg_cls(s)) inst.package_id(s)
def test_package_id_ok(install_mockery): def test_package_id_ok(install_mockery):
spec = spack.spec.Spec("trivial-install-test-package") spec = spack.spec.Spec("trivial-install-test-package")
spec.concretize() spec.concretize()
assert spec.concrete assert spec.concrete
pkg = spec.package assert spec.name in inst.package_id(spec)
assert pkg.name in inst.package_id(pkg)
def test_fake_install(install_mockery): def test_fake_install(install_mockery):
@@ -726,7 +724,7 @@ def test_check_deps_status_external(install_mockery, monkeypatch):
installer._check_deps_status(request) installer._check_deps_status(request)
for dep in request.spec.traverse(root=False): for dep in request.spec.traverse(root=False):
assert inst.package_id(dep.package) in installer.installed assert inst.package_id(dep) in installer.installed
def test_check_deps_status_upstream(install_mockery, monkeypatch): def test_check_deps_status_upstream(install_mockery, monkeypatch):
@@ -739,7 +737,7 @@ def test_check_deps_status_upstream(install_mockery, monkeypatch):
installer._check_deps_status(request) installer._check_deps_status(request)
for dep in request.spec.traverse(root=False): for dep in request.spec.traverse(root=False):
assert inst.package_id(dep.package) in installer.installed assert inst.package_id(dep) in installer.installed
def test_add_bootstrap_compilers(install_mockery, monkeypatch): def test_add_bootstrap_compilers(install_mockery, monkeypatch):
@@ -1111,7 +1109,7 @@ def test_install_fail_fast_on_detect(install_mockery, monkeypatch, capsys):
const_arg = installer_args(["b"], {"fail_fast": False}) const_arg = installer_args(["b"], {"fail_fast": False})
const_arg.extend(installer_args(["c"], {"fail_fast": True})) const_arg.extend(installer_args(["c"], {"fail_fast": True}))
installer = create_installer(const_arg) installer = create_installer(const_arg)
pkg_ids = [inst.package_id(spec.package) for spec, _ in const_arg] pkg_ids = [inst.package_id(spec) for spec, _ in const_arg]
# Make sure all packages are identified as failed # Make sure all packages are identified as failed
# #
@@ -1186,7 +1184,7 @@ def test_install_lock_installed_requeue(install_mockery, monkeypatch, capfd):
const_arg = installer_args(["b"], {}) const_arg = installer_args(["b"], {})
b, _ = const_arg[0] b, _ = const_arg[0]
installer = create_installer(const_arg) installer = create_installer(const_arg)
b_pkg_id = inst.package_id(b.package) b_pkg_id = inst.package_id(b)
def _prep(installer, task): def _prep(installer, task):
installer.installed.add(b_pkg_id) installer.installed.add(b_pkg_id)
@@ -1196,7 +1194,7 @@ def _prep(installer, task):
monkeypatch.setattr(inst.PackageInstaller, "_ensure_locked", _not_locked) monkeypatch.setattr(inst.PackageInstaller, "_ensure_locked", _not_locked)
def _requeued(installer, task, install_status): def _requeued(installer, task, install_status):
tty.msg("requeued {0}".format(inst.package_id(task.pkg))) tty.msg("requeued {0}".format(inst.package_id(task.pkg.spec)))
# Flag the package as installed # Flag the package as installed
monkeypatch.setattr(inst.PackageInstaller, "_prepare_for_install", _prep) monkeypatch.setattr(inst.PackageInstaller, "_prepare_for_install", _prep)
@@ -1262,7 +1260,7 @@ def test_install_skip_patch(install_mockery, mock_fetch):
installer.install() installer.install()
spec, install_args = const_arg[0] spec, install_args = const_arg[0]
assert inst.package_id(spec.package) in installer.installed assert inst.package_id(spec) in installer.installed
def test_install_implicit(install_mockery, mock_fetch): def test_install_implicit(install_mockery, mock_fetch):

View File

@@ -29,7 +29,7 @@
] ]
@pytest.fixture(params=["clang@=12.0.0", "gcc@=10.2.1"]) @pytest.fixture(params=["clang@=15.0.0", "gcc@=10.2.1"])
def compiler(request): def compiler(request):
return request.param return request.param
@@ -59,7 +59,7 @@ def test_layout_for_specs_compiled_with_core_compilers(
we can use both ``compiler@version`` and ``compiler@=version`` to specify a core compiler. we can use both ``compiler@version`` and ``compiler@=version`` to specify a core compiler.
""" """
module_configuration(modules_config) module_configuration(modules_config)
module, spec = factory("libelf%clang@12.0.0") module, spec = factory("libelf%clang@15.0.0")
assert "Core" in module.layout.available_path_parts assert "Core" in module.layout.available_path_parts
def test_file_layout(self, compiler, provider, factory, module_configuration): def test_file_layout(self, compiler, provider, factory, module_configuration):
@@ -78,7 +78,7 @@ def test_file_layout(self, compiler, provider, factory, module_configuration):
# is transformed to r"Core" if the compiler is listed among core # is transformed to r"Core" if the compiler is listed among core
# compilers # compilers
# Check that specs listed as core_specs are transformed to "Core" # Check that specs listed as core_specs are transformed to "Core"
if compiler == "clang@=12.0.0" or spec_string == "mpich@3.0.1": if compiler == "clang@=15.0.0" or spec_string == "mpich@3.0.1":
assert "Core" in layout.available_path_parts assert "Core" in layout.available_path_parts
else: else:
assert compiler.replace("@=", "/") in layout.available_path_parts assert compiler.replace("@=", "/") in layout.available_path_parts

View File

@@ -116,8 +116,8 @@ def append_curl_env_for_ssl_certs(curl):
"CURL config:ssl_certs " "CURL config:ssl_certs "
"resolves to {}. This is not a file so default certs will be used.".format(certs) "resolves to {}. This is not a file so default certs will be used.".format(certs)
) )
else:
tty.debug(dbg_msg_no_ssl_cert_config) tty.debug(dbg_msg_no_ssl_cert_config)
return curl
def _urlopen(): def _urlopen():
@@ -348,7 +348,8 @@ def _curl(curl=None):
except CommandNotFoundError as exc: except CommandNotFoundError as exc:
tty.error(str(exc)) tty.error(str(exc))
raise spack.error.FetchError("Missing required curl fetch method") raise spack.error.FetchError("Missing required curl fetch method")
return append_curl_env_for_ssl_certs(curl) append_curl_env_for_ssl_certs(curl)
return curl
def fetch_url_text(url, curl=None, dest_dir="."): def fetch_url_text(url, curl=None, dest_dir="."):

View File

@@ -27,12 +27,12 @@ ci:
- - spack config blame mirrors - - spack config blame mirrors
- spack --color=always --backtrace ci rebuild --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2) - spack --color=always --backtrace ci rebuild --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2)
after_script: after_script:
- - ./bin/spack python ${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/scripts/common/aggregate_package_logs.spack.py
--prefix /home/software/spack:${CI_PROJECT_DIR}/opt/spack
--log install_times.json
${SPACK_ARTIFACTS_ROOT}/user_data/install_times.json
- - cat /proc/loadavg || true - - cat /proc/loadavg || true
- cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true
- - time python ${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/scripts/common/aggregate_package_logs.spack.py
--prefix /home/software/spack:${CI_PROJECT_DIR}/opt/spack
--log install_times.json
${SPACK_ARTIFACTS_ROOT}/user_data/install_times.json || true
variables: variables:
CI_JOB_SIZE: "default" CI_JOB_SIZE: "default"
CI_GPG_KEY_ROOT: /mnt/key CI_GPG_KEY_ROOT: /mnt/key

View File

@@ -37,10 +37,14 @@ def find_logs(prefix, filename):
# Look in the list of prefixes for logs # Look in the list of prefixes for logs
for prefix in prefixes: for prefix in prefixes:
logs = find_logs(prefix, args.log) print(f"Walking {prefix}")
logs = [log for log in find_logs(prefix, args.log)]
print(f" * found {len(logs)} logs")
for log in logs: for log in logs:
print(f" * appending data for {log}")
with open(log) as fd: with open(log) as fd:
data.append(json.load(fd)) data.append(json.load(fd))
print(f"Writing {args.output_file}")
with open(args.output_file, "w") as fd: with open(args.output_file, "w") as fd:
json.dump(data, fd) json.dump(data, fd)

View File

@@ -1,6 +1,8 @@
spack: spack:
view: false view: false
packages: packages:
all:
require: target=x86_64_v3
cmake: cmake:
variants: ~ownlibs variants: ~ownlibs
ecp-data-vis-sdk: ecp-data-vis-sdk:
@@ -20,8 +22,6 @@ spack:
require: '@14:' require: '@14:'
# Minimize LLVM # Minimize LLVM
variants: ~lldb~lld~libomptarget~polly~gold libunwind=none compiler-rt=none variants: ~lldb~lld~libomptarget~polly~gold libunwind=none compiler-rt=none
all:
require: target=x86_64_v3
definitions: definitions:
- paraview_specs: - paraview_specs:

View File

@@ -81,7 +81,7 @@ spack:
- boost +python +filesystem +iostreams +system - boost +python +filesystem +iostreams +system
- cabana - cabana
- caliper - caliper
- chai ~benchmarks ~tests - chai
- charliecloud - charliecloud
- conduit - conduit
# - cp2k +mpi # libxsmm: ftn-78 ftn: ERROR in command linel; The -f option has an invalid argument, "tree-vectorize". # - cp2k +mpi # libxsmm: ftn-78 ftn: ERROR in command linel; The -f option has an invalid argument, "tree-vectorize".

View File

@@ -71,7 +71,7 @@ spack:
- butterflypack - butterflypack
- boost +python +filesystem +iostreams +system - boost +python +filesystem +iostreams +system
- cabana - cabana
- chai ~benchmarks ~tests - chai
- conduit - conduit
# - cp2k +mpi # cp2k: Error: Type mismatch between actual argument at (1) and actual argument at (2) (LOGICAL(4)/COMPLEX(4)). # - cp2k +mpi # cp2k: Error: Type mismatch between actual argument at (1) and actual argument at (2) (LOGICAL(4)/COMPLEX(4)).
- datatransferkit - datatransferkit

View File

@@ -64,7 +64,7 @@ spack:
- butterflypack - butterflypack
- cabana - cabana
- caliper - caliper
- chai ~benchmarks ~tests - chai
- charliecloud - charliecloud
- conduit - conduit
- cp2k +mpi - cp2k +mpi
@@ -214,7 +214,7 @@ spack:
- arborx +cuda cuda_arch=75 ^kokkos +wrapper - arborx +cuda cuda_arch=75 ^kokkos +wrapper
- cabana +cuda cuda_arch=75 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=75 - cabana +cuda cuda_arch=75 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=75
- caliper +cuda cuda_arch=75 - caliper +cuda cuda_arch=75
- chai ~benchmarks ~tests +cuda cuda_arch=75 ^umpire ~shared - chai +cuda cuda_arch=75 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=75 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80') # - cp2k +mpi +cuda cuda_arch=75 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80')
- flecsi +cuda cuda_arch=75 - flecsi +cuda cuda_arch=75
- ginkgo +cuda cuda_arch=75 - ginkgo +cuda cuda_arch=75
@@ -261,7 +261,7 @@ spack:
- arborx +cuda cuda_arch=80 ^kokkos +wrapper - arborx +cuda cuda_arch=80 ^kokkos +wrapper
- cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80 - cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80
- caliper +cuda cuda_arch=80 - caliper +cuda cuda_arch=80
- chai ~benchmarks ~tests +cuda cuda_arch=80 ^umpire ~shared - chai +cuda cuda_arch=80 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=80 # cp2k: Error: KeyError: 'Point environment variable LIBSMM_PATH to the absolute path of the libsmm.a file' # - cp2k +mpi +cuda cuda_arch=80 # cp2k: Error: KeyError: 'Point environment variable LIBSMM_PATH to the absolute path of the libsmm.a file'
- flecsi +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80
- ginkgo +cuda cuda_arch=80 - ginkgo +cuda cuda_arch=80
@@ -308,7 +308,7 @@ spack:
- arborx +cuda cuda_arch=90 ^kokkos +wrapper - arborx +cuda cuda_arch=90 ^kokkos +wrapper
- cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90 - cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90
- caliper +cuda cuda_arch=90 - caliper +cuda cuda_arch=90
- chai ~benchmarks ~tests +cuda cuda_arch=90 ^umpire ~shared - chai +cuda cuda_arch=90 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=90 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80') # - cp2k +mpi +cuda cuda_arch=90 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80')
- flecsi +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90
- ginkgo +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90

View File

@@ -64,7 +64,7 @@ spack:
- butterflypack - butterflypack
- cabana - cabana
- caliper - caliper
- chai ~benchmarks ~tests - chai
- charliecloud - charliecloud
- conduit - conduit
- cp2k +mpi - cp2k +mpi
@@ -214,7 +214,7 @@ spack:
- arborx +cuda cuda_arch=75 ^kokkos +wrapper - arborx +cuda cuda_arch=75 ^kokkos +wrapper
- cabana +cuda cuda_arch=75 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=75 - cabana +cuda cuda_arch=75 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=75
- caliper +cuda cuda_arch=75 - caliper +cuda cuda_arch=75
- chai ~benchmarks ~tests +cuda cuda_arch=75 ^umpire ~shared - chai +cuda cuda_arch=75 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=75 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80') # - cp2k +mpi +cuda cuda_arch=75 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80')
- flecsi +cuda cuda_arch=75 - flecsi +cuda cuda_arch=75
- ginkgo +cuda cuda_arch=75 - ginkgo +cuda cuda_arch=75
@@ -240,7 +240,6 @@ spack:
- umpire ~shared +cuda cuda_arch=75 - umpire ~shared +cuda cuda_arch=75
# INCLUDED IN ECP DAV CUDA # INCLUDED IN ECP DAV CUDA
- adios2 +cuda cuda_arch=75 - adios2 +cuda cuda_arch=75
- paraview +cuda cuda_arch=75
- vtk-m +cuda cuda_arch=75 - vtk-m +cuda cuda_arch=75
- zfp +cuda cuda_arch=75 - zfp +cuda cuda_arch=75
# -- # --
@@ -248,6 +247,7 @@ spack:
# - axom +cuda cuda_arch=75 # axom: https://github.com/spack/spack/issues/29520 # - axom +cuda cuda_arch=75 # axom: https://github.com/spack/spack/issues/29520
# - cusz +cuda cuda_arch=75 # cusz: https://github.com/spack/spack/issues/38787 # - cusz +cuda cuda_arch=75 # cusz: https://github.com/spack/spack/issues/38787
# - dealii +cuda cuda_arch=75 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'. # - dealii +cuda cuda_arch=75 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
# - paraview +cuda cuda_arch=75 # Error building some cuda componets in paraview
# - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=75 # embree: https://github.com/spack/spack/issues/39534 # - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=75 # embree: https://github.com/spack/spack/issues/39534
# - lammps +cuda cuda_arch=75 # lammps: needs NVIDIA driver # - lammps +cuda cuda_arch=75 # lammps: needs NVIDIA driver
# - lbann +cuda cuda_arch=75 # lbann: https://github.com/spack/spack/issues/38788 # - lbann +cuda cuda_arch=75 # lbann: https://github.com/spack/spack/issues/38788
@@ -261,7 +261,7 @@ spack:
- arborx +cuda cuda_arch=80 ^kokkos +wrapper - arborx +cuda cuda_arch=80 ^kokkos +wrapper
- cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80 - cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80
- caliper +cuda cuda_arch=80 - caliper +cuda cuda_arch=80
- chai ~benchmarks ~tests +cuda cuda_arch=80 ^umpire ~shared - chai +cuda cuda_arch=80 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=80 # cp2k: Error: KeyError: 'Point environment variable LIBSMM_PATH to the absolute path of the libsmm.a file' # - cp2k +mpi +cuda cuda_arch=80 # cp2k: Error: KeyError: 'Point environment variable LIBSMM_PATH to the absolute path of the libsmm.a file'
- flecsi +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80
- ginkgo +cuda cuda_arch=80 - ginkgo +cuda cuda_arch=80
@@ -287,7 +287,6 @@ spack:
- umpire ~shared +cuda cuda_arch=80 - umpire ~shared +cuda cuda_arch=80
# INCLUDED IN ECP DAV CUDA # INCLUDED IN ECP DAV CUDA
- adios2 +cuda cuda_arch=80 - adios2 +cuda cuda_arch=80
- paraview +cuda cuda_arch=80
- vtk-m +cuda cuda_arch=80 - vtk-m +cuda cuda_arch=80
- zfp +cuda cuda_arch=80 - zfp +cuda cuda_arch=80
# -- # --
@@ -295,6 +294,7 @@ spack:
# - axom +cuda cuda_arch=80 # axom: https://github.com/spack/spack/issues/29520 # - axom +cuda cuda_arch=80 # axom: https://github.com/spack/spack/issues/29520
# - cusz +cuda cuda_arch=80 # cusz: https://github.com/spack/spack/issues/38787 # - cusz +cuda cuda_arch=80 # cusz: https://github.com/spack/spack/issues/38787
# - dealii +cuda cuda_arch=80 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'. # - dealii +cuda cuda_arch=80 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
# - paraview +cuda cuda_arch=80 # Error building some cuda componets in paraview
# - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # embree: https://github.com/spack/spack/issues/39534 # - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # embree: https://github.com/spack/spack/issues/39534
# - lammps +cuda cuda_arch=80 # lammps: needs NVIDIA driver # - lammps +cuda cuda_arch=80 # lammps: needs NVIDIA driver
# - lbann +cuda cuda_arch=80 # lbann: https://github.com/spack/spack/issues/38788 # - lbann +cuda cuda_arch=80 # lbann: https://github.com/spack/spack/issues/38788
@@ -308,7 +308,7 @@ spack:
- arborx +cuda cuda_arch=90 ^kokkos +wrapper - arborx +cuda cuda_arch=90 ^kokkos +wrapper
- cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90 - cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90
- caliper +cuda cuda_arch=90 - caliper +cuda cuda_arch=90
- chai ~benchmarks ~tests +cuda cuda_arch=90 ^umpire ~shared - chai +cuda cuda_arch=90 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=90 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80') # - cp2k +mpi +cuda cuda_arch=90 # cp2k: cp2k only supports cuda_arch ('35', '37', '60', '70', '80')
- flecsi +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90
- ginkgo +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90

View File

@@ -76,7 +76,7 @@ spack:
- butterflypack - butterflypack
- cabana - cabana
- caliper - caliper
- chai ~benchmarks ~tests - chai
- charliecloud - charliecloud
- conduit - conduit
# - cp2k +mpi # dbcsr # - cp2k +mpi # dbcsr

View File

@@ -65,7 +65,7 @@ spack:
- butterflypack - butterflypack
- cabana - cabana
- caliper - caliper
- chai ~benchmarks ~tests - chai
- charliecloud - charliecloud
- conduit - conduit
- cp2k +mpi - cp2k +mpi
@@ -218,7 +218,7 @@ spack:
- amrex +cuda cuda_arch=70 - amrex +cuda cuda_arch=70
- arborx +cuda cuda_arch=70 ^kokkos +wrapper - arborx +cuda cuda_arch=70 ^kokkos +wrapper
- caliper +cuda cuda_arch=70 - caliper +cuda cuda_arch=70
- chai ~benchmarks ~tests +cuda cuda_arch=70 ^umpire ~shared - chai +cuda cuda_arch=70 ^umpire ~shared
# - cp2k +mpi +cuda cuda_arch=70 # dbcsr # - cp2k +mpi +cuda cuda_arch=70 # dbcsr
- ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=70 - ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=70
- exago +mpi +python +raja +hiop ~rocm +cuda cuda_arch=70 ~ipopt ^hiop@1.0.0 ~sparse +mpi +raja ~rocm +cuda cuda_arch=70 #^raja@0.14.0 - exago +mpi +python +raja +hiop ~rocm +cuda cuda_arch=70 ~ipopt ^hiop@1.0.0 ~sparse +mpi +raja ~rocm +cuda cuda_arch=70 #^raja@0.14.0

View File

@@ -214,7 +214,7 @@ spack:
- arborx +rocm amdgpu_target=gfx908 - arborx +rocm amdgpu_target=gfx908
- cabana +rocm amdgpu_target=gfx908 - cabana +rocm amdgpu_target=gfx908
- caliper +rocm amdgpu_target=gfx908 - caliper +rocm amdgpu_target=gfx908
- chai ~benchmarks +rocm amdgpu_target=gfx908 - chai +rocm amdgpu_target=gfx908
# - cp2k +mpi +rocm amdgpu_target=gfx908 # cp2k: Error: KeyError: 'No spec with name rocm in... "-L{}".format(spec["rocm"].libs.directories[0]), # - cp2k +mpi +rocm amdgpu_target=gfx908 # cp2k: Error: KeyError: 'No spec with name rocm in... "-L{}".format(spec["rocm"].libs.directories[0]),
- ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908 - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908
- exago +mpi +python +raja +hiop +rocm amdgpu_target=gfx908 ~ipopt cxxflags="-Wno-error=non-pod-varargs" ^hiop@1.0.0 ~sparse +mpi +raja +rocm amdgpu_target=gfx908 - exago +mpi +python +raja +hiop +rocm amdgpu_target=gfx908 ~ipopt cxxflags="-Wno-error=non-pod-varargs" ^hiop@1.0.0 ~sparse +mpi +raja +rocm amdgpu_target=gfx908
@@ -256,7 +256,7 @@ spack:
- arborx +rocm amdgpu_target=gfx90a - arborx +rocm amdgpu_target=gfx90a
- cabana +rocm amdgpu_target=gfx90a - cabana +rocm amdgpu_target=gfx90a
- caliper +rocm amdgpu_target=gfx90a - caliper +rocm amdgpu_target=gfx90a
- chai ~benchmarks +rocm amdgpu_target=gfx90a - chai +rocm amdgpu_target=gfx90a
# - cp2k +mpi +rocm amdgpu_target=gfx90a # cp2k: Error: KeyError: 'No spec with name rocm in... "-L{}".format(spec["rocm"].libs.directories[0]), # - cp2k +mpi +rocm amdgpu_target=gfx90a # cp2k: Error: KeyError: 'No spec with name rocm in... "-L{}".format(spec["rocm"].libs.directories[0]),
- ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a
- exago +mpi +python +raja +hiop +rocm amdgpu_target=gfx90a ~ipopt cxxflags="-Wno-error=non-pod-varargs" ^hiop@1.0.0 ~sparse +mpi +raja +rocm amdgpu_target=gfx90a - exago +mpi +python +raja +hiop +rocm amdgpu_target=gfx90a ~ipopt cxxflags="-Wno-error=non-pod-varargs" ^hiop@1.0.0 ~sparse +mpi +raja +rocm amdgpu_target=gfx90a

View File

@@ -69,7 +69,7 @@ spack:
- butterflypack - butterflypack
- cabana - cabana
- caliper - caliper
- chai ~benchmarks ~tests - chai
- charliecloud - charliecloud
- conduit - conduit
- cp2k +mpi - cp2k +mpi
@@ -103,7 +103,7 @@ spack:
- kokkos +openmp - kokkos +openmp
- kokkos-kernels +openmp - kokkos-kernels +openmp
- laghos - laghos
- lammps - lammps +amoeba +asphere +bocs +body +bpm +brownian +cg-dna +cg-spica +class2 +colloid +colvars +compress +coreshell +dielectric +diffraction +dipole +dpd-basic +dpd-meso +dpd-react +dpd-smooth +drude +eff +electrode +extra-compute +extra-dump +extra-fix +extra-molecule +extra-pair +fep +granular +interlayer +kspace +lepton +machdyn +manybody +mc +meam +mesont +misc +ml-iap +ml-pod +ml-snap +mofff +molecule +openmp-package +opt +orient +peri +phonon +plugin +poems +qeq +reaction +reaxff +replica +rigid +shock +sph +spin +srd +tally +uef +voronoi +yaff
- lbann - lbann
- legion - legion
- libnrm - libnrm
@@ -119,6 +119,7 @@ spack:
- mpifileutils ~xattr - mpifileutils ~xattr
- nccmp - nccmp
- nco - nco
- nekbone +mpi
- netlib-scalapack - netlib-scalapack
- nrm - nrm
- nvhpc - nvhpc
@@ -186,6 +187,7 @@ spack:
# -- # --
# - geopm # geopm: https://github.com/spack/spack/issues/38795 # - geopm # geopm: https://github.com/spack/spack/issues/38795
# - glvis # glvis: https://github.com/spack/spack/issues/42839 # - glvis # glvis: https://github.com/spack/spack/issues/42839
# - nek5000 +mpi +visit # nek5000: Error: AttributeError: 'str' object has no attribute 'propagate': 'VISIT_INSTALL="' + spec["visit"].prefix.bin + '"',
# PYTHON PACKAGES # PYTHON PACKAGES
- opencv +python3 - opencv +python3
@@ -207,6 +209,7 @@ spack:
- py-seaborn - py-seaborn
- py-tensorflow - py-tensorflow
- py-torch - py-torch
- py-deephyper
# # CUDA NOARCH # # CUDA NOARCH
# - bricks +cuda # - bricks +cuda
@@ -222,7 +225,7 @@ spack:
# - arborx +cuda cuda_arch=80 ^kokkos +wrapper # - arborx +cuda cuda_arch=80 ^kokkos +wrapper
# - cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80 # - cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80
# - caliper +cuda cuda_arch=80 # - caliper +cuda cuda_arch=80
# - chai ~benchmarks ~tests +cuda cuda_arch=80 ^umpire ~shared # - chai +cuda cuda_arch=80 ^umpire ~shared
# - cusz +cuda cuda_arch=80 # - cusz +cuda cuda_arch=80
# - dealii +cuda cuda_arch=80 # - dealii +cuda cuda_arch=80
# - ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # +ascent fails because fides fetch error # - ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # +ascent fails because fides fetch error
@@ -269,7 +272,7 @@ spack:
# - arborx +cuda cuda_arch=90 ^kokkos +wrapper # - arborx +cuda cuda_arch=90 ^kokkos +wrapper
# - cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90 # - cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90
# - caliper +cuda cuda_arch=90 # - caliper +cuda cuda_arch=90
# - chai ~benchmarks ~tests +cuda cuda_arch=90 ^umpire ~shared # - chai +cuda cuda_arch=90 ^umpire ~shared
# - cusz +cuda cuda_arch=90 # - cusz +cuda cuda_arch=90
# - flecsi +cuda cuda_arch=90 # - flecsi +cuda cuda_arch=90
# - ginkgo +cuda cuda_arch=90 # - ginkgo +cuda cuda_arch=90
@@ -320,7 +323,7 @@ spack:
# - arborx +rocm amdgpu_target=gfx908 # - arborx +rocm amdgpu_target=gfx908
# - cabana +rocm amdgpu_target=gfx908 # - cabana +rocm amdgpu_target=gfx908
# - caliper +rocm amdgpu_target=gfx908 # - caliper +rocm amdgpu_target=gfx908
# - chai ~benchmarks +rocm amdgpu_target=gfx908 # - chai +rocm amdgpu_target=gfx908
# - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908 # - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908
# - gasnet +rocm amdgpu_target=gfx908 # - gasnet +rocm amdgpu_target=gfx908
# - ginkgo +rocm amdgpu_target=gfx908 # - ginkgo +rocm amdgpu_target=gfx908
@@ -361,7 +364,7 @@ spack:
# - arborx +rocm amdgpu_target=gfx90a # - arborx +rocm amdgpu_target=gfx90a
# - cabana +rocm amdgpu_target=gfx90a # - cabana +rocm amdgpu_target=gfx90a
# - caliper +rocm amdgpu_target=gfx90a # - caliper +rocm amdgpu_target=gfx90a
# - chai ~benchmarks +rocm amdgpu_target=gfx90a # - chai +rocm amdgpu_target=gfx90a
# - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a # - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a
# - gasnet +rocm amdgpu_target=gfx90a # - gasnet +rocm amdgpu_target=gfx90a
# - ginkgo +rocm amdgpu_target=gfx90a # - ginkgo +rocm amdgpu_target=gfx90a

View File

@@ -18,7 +18,7 @@ spack:
- blt - blt
- caliper - caliper
#- care ## ~benchmarks ~examples ~tests #- care ## ~benchmarks ~examples ~tests
#- chai ## ~benchmarks ~examples ~tests #- chai ## ~examples
- conduit # ^hdf5+shared - conduit # ^hdf5+shared
- flux-core - flux-core
#- flux-sched #- flux-sched

View File

@@ -26,13 +26,11 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage):
version("master", branch="master") version("master", branch="master")
version( version(
"2.10.0-rc1", sha256="8b72142bd5aabfb80c7963f524df11b8721c09ef20caea6df5fb00c31a7747c0" "2.10.0",
) sha256="e5984de488bda546553dd2f46f047e539333891e63b9fe73944782ba6c2d95e4",
version(
"2.9.2",
sha256="78309297c82a95ee38ed3224c98b93d330128c753a43893f63bbe969320e4979",
preferred=True, preferred=True,
) )
version("2.9.2", sha256="78309297c82a95ee38ed3224c98b93d330128c753a43893f63bbe969320e4979")
version("2.9.1", sha256="ddfa32c14494250ee8a48ef1c97a1bf6442c15484bbbd4669228a0f90242f4f9") version("2.9.1", sha256="ddfa32c14494250ee8a48ef1c97a1bf6442c15484bbbd4669228a0f90242f4f9")
version("2.9.0", sha256="69f98ef58c818bb5410133e1891ac192653b0ec96eb9468590140f2552b6e5d1") version("2.9.0", sha256="69f98ef58c818bb5410133e1891ac192653b0ec96eb9468590140f2552b6e5d1")
version("2.8.3", sha256="4906ab1899721c41dd918dddb039ba2848a1fb0cf84f3a563a1179b9d6ee0d9f") version("2.8.3", sha256="4906ab1899721c41dd918dddb039ba2848a1fb0cf84f3a563a1179b9d6ee0d9f")
@@ -225,7 +223,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage):
# cmake: find threads package first # cmake: find threads package first
# https://github.com/ornladios/ADIOS2/pull/3893 # https://github.com/ornladios/ADIOS2/pull/3893
patch("2.9.2-cmake-find-threads-package-first.patch", when="@2.9.2:") patch("2.9.2-cmake-find-threads-package-first.patch", when="@2.9")
@when("%fj") @when("%fj")
def patch(self): def patch(self):

View File

@@ -20,6 +20,7 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("main", branch="main", submodules=True) version("main", branch="main", submodules=True)
version("0.9.0", tag="v0.9.0", submodules=True)
variant("hypre", default=True, description="Enable Hypre integration") variant("hypre", default=True, description="Enable Hypre integration")
variant("ascent", default=False, description="Enable Ascent integration") variant("ascent", default=False, description="Enable Ascent integration")
@@ -31,9 +32,22 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage):
variant("shared", default=True, description="Build shared libraries") variant("shared", default=True, description="Build shared libraries")
variant("tests", default=True, description="Activate regression tests") variant("tests", default=True, description="Activate regression tests")
variant("tiny_profile", default=False, description="Activate tiny profile") variant("tiny_profile", default=False, description="Activate tiny profile")
variant("hdf5", default=False, description="Enable HDF5 plots with ZFP compression")
variant("umpire", default=False, description="Enable Umpire")
variant("sycl", default=False, description="Enable SYCL backend")
variant("gpu-aware-mpi", default=False, description="gpu-aware-mpi")
depends_on("hypre~int64@2.20.0:", when="+hypre") depends_on("hypre~int64@2.20.0:", when="+hypre")
depends_on("hypre+mpi", when="+hypre+mpi") depends_on("hypre+mpi", when="+hypre+mpi")
depends_on("hdf5~mpi", when="+hdf5~mpi")
depends_on("hdf5+mpi", when="+hdf5+mpi")
depends_on("h5z-zfp", when="+hdf5")
depends_on("zfp", when="+hdf5")
depends_on("hypre+umpire", when="+umpire")
depends_on("hypre+sycl", when="+sycl")
depends_on("hypre+gpu-aware-mpi", when="+gpu-aware-mpi")
depends_on("hypre@2.29.0:", when="@0.9.0:+hypre")
for arch in CudaPackage.cuda_arch_values: for arch in CudaPackage.cuda_arch_values:
depends_on("hypre+cuda cuda_arch=%s" % arch, when="+cuda+hypre cuda_arch=%s" % arch) depends_on("hypre+cuda cuda_arch=%s" % arch, when="+cuda+hypre cuda_arch=%s" % arch)
for arch in ROCmPackage.amdgpu_targets: for arch in ROCmPackage.amdgpu_targets:
@@ -88,6 +102,13 @@ def cmake_args(self):
if "+mpi" in self.spec: if "+mpi" in self.spec:
args.append(define("MPI_HOME", self.spec["mpi"].prefix)) args.append(define("MPI_HOME", self.spec["mpi"].prefix))
if "+hdf5" in self.spec:
cmake_options.append(self.define("AMR_WIND_ENABLE_HDF5", True))
cmake_options.append(self.define("AMR_WIND_ENABLE_HDF5_ZFP", True))
# Help AMReX understand if HDF5 is parallel or not.
# Building HDF5 with CMake as Spack does, causes this inspection to break.
cmake_options.append(self.define("HDF5_IS_PARALLEL", spec.satisfies("+mpi")))
if "+cuda" in self.spec: if "+cuda" in self.spec:
amrex_arch = [ amrex_arch = [
"{0:.1f}".format(float(i) / 10.0) for i in self.spec.variants["cuda_arch"].value "{0:.1f}".format(float(i) / 10.0) for i in self.spec.variants["cuda_arch"].value
@@ -100,4 +121,16 @@ def cmake_args(self):
targets = self.spec.variants["amdgpu_target"].value targets = self.spec.variants["amdgpu_target"].value
args.append("-DAMReX_AMD_ARCH=" + ";".join(str(x) for x in targets)) args.append("-DAMReX_AMD_ARCH=" + ";".join(str(x) for x in targets))
if "+sycl" in self.spec:
cmake_options.append(self.define("AMR_WIND_ENABLE_SYCL", True))
requires(
"%dpcpp",
"%oneapi",
policy="one_of",
msg=(
"AMReX's SYCL GPU Backend requires DPC++ (dpcpp) "
"or the oneAPI CXX (icpx) compiler."
),
)
return args return args

View File

@@ -26,6 +26,7 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("develop", branch="development") version("develop", branch="development")
version("24.04", sha256="77a91e75ad0106324a44ca514e1e8abc54f2fc2d453406441c871075726a8167")
version("24.03", sha256="024876fe65838d1021fcbf8530b992bff8d9be1d3f08a1723c4e2e5f7c28b427") version("24.03", sha256="024876fe65838d1021fcbf8530b992bff8d9be1d3f08a1723c4e2e5f7c28b427")
version("24.02", sha256="286cc3ca29daa69c8eafc1cd7a572662dec9eb78631ac3d33a1260868fdc6996") version("24.02", sha256="286cc3ca29daa69c8eafc1cd7a572662dec9eb78631ac3d33a1260868fdc6996")
version("24.01", sha256="83dbd4dad6dc51fa4a80aad0347b15ee5a6d816cf4abcd87f7b0e2987d8131b7") version("24.01", sha256="83dbd4dad6dc51fa4a80aad0347b15ee5a6d816cf4abcd87f7b0e2987d8131b7")
@@ -300,11 +301,10 @@ def cmake_args(self):
if "+sycl" in self.spec: if "+sycl" in self.spec:
args.append("-DAMReX_GPU_BACKEND=SYCL") args.append("-DAMReX_GPU_BACKEND=SYCL")
# SYCL GPU backend only supported with Intel's oneAPI or DPC++ compilers # SYCL GPU backend only supported with Intel's oneAPI or DPC++ compilers
sycl_compatible_compilers = ["dpcpp", "icpx"] sycl_compatible_compilers = ["icpx"]
if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers): if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers):
raise InstallError( raise InstallError(
"AMReX's SYCL GPU Backend requires DPC++ (dpcpp)" "AMReX's SYCL GPU Backend requires the oneAPI CXX (icpx) compiler."
+ " or the oneAPI CXX (icpx) compiler."
) )
return args return args

View File

@@ -185,7 +185,10 @@ class Ascent(CMakePackage, CudaPackage):
# RAJA and Umpire # RAJA and Umpire
####################### #######################
depends_on("raja", when="+raja") depends_on("raja", when="+raja")
depends_on("raja+openmp", when="+raja +openmp")
depends_on("raja~openmp", when="+raja ~openmp")
depends_on("umpire", when="+umpire") depends_on("umpire", when="+umpire")
depends_on("umpire@:2023.06.0", when="@:0.9.2 +umpire")
####################### #######################
# BabelFlow # BabelFlow

View File

@@ -104,7 +104,7 @@ class Axom(CachedCMakePackage, CudaPackage, ROCmPackage):
depends_on("cmake@3.21:", type="build", when="+rocm") depends_on("cmake@3.21:", type="build", when="+rocm")
depends_on("blt", type="build") depends_on("blt", type="build")
depends_on("blt@0.5.1:", type="build", when="@0.6.1:") depends_on("blt@0.5.1:0.5.3", type="build", when="@0.6.1:")
depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpi")
@@ -122,13 +122,13 @@ class Axom(CachedCMakePackage, CudaPackage, ROCmPackage):
depends_on("scr~fortran", when="+scr~fortran") depends_on("scr~fortran", when="+scr~fortran")
with when("+umpire"): with when("+umpire"):
depends_on("umpire@2022.03.0:", when="@0.7.0:") depends_on("umpire@2022.03.0:2023.06", when="@0.7.0:")
depends_on("umpire@6.0.0", when="@0.6.0") depends_on("umpire@6.0.0", when="@0.6.0")
depends_on("umpire@5:5.0.1", when="@:0.5.0") depends_on("umpire@5:5.0.1", when="@:0.5.0")
depends_on("umpire +openmp", when="+openmp") depends_on("umpire +openmp", when="+openmp")
with when("+raja"): with when("+raja"):
depends_on("raja@2022.03.0:", when="@0.7.0:") depends_on("raja@2022.03.0:2023.06", when="@0.7.0:")
depends_on("raja@0.14.0", when="@0.6.0") depends_on("raja@0.14.0", when="@0.6.0")
depends_on("raja@:0.13.0", when="@:0.5.0") depends_on("raja@:0.13.0", when="@:0.5.0")
depends_on("raja~openmp", when="~openmp") depends_on("raja~openmp", when="~openmp")

View File

@@ -131,6 +131,8 @@ class Bazel(Package):
# Bazel-4.0.0 does not compile with gcc-11 # Bazel-4.0.0 does not compile with gcc-11
# Newer versions of grpc and abseil dependencies are needed but are not in bazel-4.0.0 # Newer versions of grpc and abseil dependencies are needed but are not in bazel-4.0.0
conflicts("@4.0.0", when="%gcc@11:") conflicts("@4.0.0", when="%gcc@11:")
# https://github.com/bazelbuild/bazel/issues/18642
conflicts("@:6", when="%gcc@13:")
executables = ["^bazel$"] executables = ["^bazel$"]

View File

@@ -3,9 +3,57 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import re
from spack.package import * from spack.package import *
def spec_uses_toolchain(spec):
gcc_toolchain_regex = re.compile(".*gcc-toolchain.*")
using_toolchain = list(filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]))
return using_toolchain
def spec_uses_gccname(spec):
gcc_name_regex = re.compile(".*gcc-name.*")
using_gcc_name = list(filter(gcc_name_regex.match, spec.compiler_flags["cxxflags"]))
return using_gcc_name
def llnl_link_helpers(options, spec, compiler):
# From local package:
if compiler.fc:
fortran_compilers = ["gfortran", "xlf"]
if any(f_comp in compiler.fc for f_comp in fortran_compilers) and (
"clang" in compiler.cxx
):
# Pass fortran compiler lib as rpath to find missing libstdc++
libdir = os.path.join(os.path.dirname(os.path.dirname(compiler.fc)), "lib")
flags = ""
for _libpath in [libdir, libdir + "64"]:
if os.path.exists(_libpath):
flags += " -Wl,-rpath,{0}".format(_libpath)
description = "Adds a missing libstdc++ rpath"
if flags:
options.append(cmake_cache_string("BLT_EXE_LINKER_FLAGS", flags, description))
if "cce" in compiler.cxx:
description = "Adds a missing rpath for libraries " "associated with the fortran compiler"
# Here is where to find libs that work for fortran
libdir = "/opt/cray/pe/cce/{0}/cce-clang/x86_64/lib".format(compiler.version)
linker_flags = "${{BLT_EXE_LINKER_FLAGS}} -Wl,-rpath,{0}".format(libdir)
version = "{0}".format(compiler.version)
if version == "16.0.0" or version == "16.0.1":
# Here is another directory added by cce@16.0.0 and cce@16.0.1
libdir = os.path.join(libdir, "x86_64-unknown-linux-gnu")
linker_flags += " -Wl,-rpath,{0}".format(libdir)
options.append(cmake_cache_string("BLT_EXE_LINKER_FLAGS", linker_flags, description))
class Blt(Package): class Blt(Package):
"""BLT is a streamlined CMake-based foundation for Building, Linking and """BLT is a streamlined CMake-based foundation for Building, Linking and
Testing large-scale high performance computing (HPC) applications.""" Testing large-scale high performance computing (HPC) applications."""

View File

@@ -18,4 +18,5 @@ class Byfl(CMakePackage):
version("1.8.0", sha256="45a9640ba2d77153a425c72349c18b124754123b30c411707b71abd217bbfce0") version("1.8.0", sha256="45a9640ba2d77153a425c72349c18b124754123b30c411707b71abd217bbfce0")
depends_on("llvm@:13.9999") # llvm-13 builds, but doesnt work
depends_on("llvm@:12.9999")

View File

@@ -78,7 +78,7 @@ class Caliper(CMakePackage, CudaPackage, ROCmPackage):
is_linux = sys.platform.startswith("linux") is_linux = sys.platform.startswith("linux")
variant("shared", default=True, description="Build shared libraries") variant("shared", default=True, description="Build shared libraries")
variant("adiak", default=True, description="Enable Adiak support") variant("adiak", default=True, description="Enable Adiak support")
variant("mpi", default=True, description="Enable MPI wrappers") variant("mpi", default=True, description="Enable MPI support")
# libunwind has some issues on Mac # libunwind has some issues on Mac
variant( variant(
"libunwind", default=sys.platform != "darwin", description="Enable stack unwind support" "libunwind", default=sys.platform != "darwin", description="Enable stack unwind support"
@@ -94,6 +94,7 @@ class Caliper(CMakePackage, CudaPackage, ROCmPackage):
variant("fortran", default=False, description="Enable Fortran support") variant("fortran", default=False, description="Enable Fortran support")
variant("variorum", default=False, description="Enable Variorum support") variant("variorum", default=False, description="Enable Variorum support")
variant("kokkos", default=True, when="@2.3.0:", description="Enable Kokkos profiling support") variant("kokkos", default=True, when="@2.3.0:", description="Enable Kokkos profiling support")
variant("tests", default=False, description="Enable tests")
depends_on("adiak@0.1:0", when="@2.2: +adiak") depends_on("adiak@0.1:0", when="@2.2: +adiak")

View File

@@ -3,29 +3,9 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import glob
from spack.package import * from spack.package import *
def hip_repair_options(options, spec):
# there is only one dir like this, but the version component is unknown
options.append(
"-DHIP_CLANG_INCLUDE_PATH="
+ glob.glob("{}/lib/clang/*/include".format(spec["llvm-amdgpu"].prefix))[0]
)
def hip_repair_cache(options, spec):
# there is only one dir like this, but the version component is unknown
options.append(
cmake_cache_path(
"HIP_CLANG_INCLUDE_PATH",
glob.glob("{}/lib/clang/*/include".format(spec["llvm-amdgpu"].prefix))[0],
)
)
class Camp(CMakePackage, CudaPackage, ROCmPackage): class Camp(CMakePackage, CudaPackage, ROCmPackage):
""" """
Compiler agnostic metaprogramming library providing concepts, Compiler agnostic metaprogramming library providing concepts,
@@ -40,8 +20,21 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("main", branch="main", submodules="True") version("main", branch="main", submodules=False)
version(
"2024.02.0",
tag="v2024.02.0",
commit="03c80a6c6ab4f97e76a52639563daec71435a277",
submodules=False,
)
version(
"2023.06.0",
tag="v2023.06.0",
commit="ac34c25b722a06b138bc045d38bfa5e8fa3ec9c5",
submodules=False,
)
version("2022.10.1", sha256="2d12f1a46f5a6d01880fc075cfbd332e2cf296816a7c1aa12d4ee5644d386f02") version("2022.10.1", sha256="2d12f1a46f5a6d01880fc075cfbd332e2cf296816a7c1aa12d4ee5644d386f02")
version("2022.10.0", sha256="3561c3ef00bbcb61fe3183c53d49b110e54910f47e7fc689ad9ccce57e55d6b8")
version("2022.03.2", sha256="bc4aaeacfe8f2912e28f7a36fc731ab9e481bee15f2c6daf0cb208eed3f201eb") version("2022.03.2", sha256="bc4aaeacfe8f2912e28f7a36fc731ab9e481bee15f2c6daf0cb208eed3f201eb")
version("2022.03.0", sha256="e9090d5ee191ea3a8e36b47a8fe78f3ac95d51804f1d986d931e85b8f8dad721") version("2022.03.0", sha256="e9090d5ee191ea3a8e36b47a8fe78f3ac95d51804f1d986d931e85b8f8dad721")
version("0.3.0", sha256="129431a049ca5825443038ad5a37a86ba6d09b2618d5fe65d35f83136575afdb") version("0.3.0", sha256="129431a049ca5825443038ad5a37a86ba6d09b2618d5fe65d35f83136575afdb")
@@ -51,12 +44,13 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage):
# TODO: figure out gtest dependency and then set this default True. # TODO: figure out gtest dependency and then set this default True.
variant("tests", default=False, description="Build tests") variant("tests", default=False, description="Build tests")
variant("openmp", default=False, description="Build OpenMP support") variant("openmp", default=False, description="Build with OpenMP support")
depends_on("cub", when="+cuda") depends_on("cub", when="+cuda")
depends_on("blt", type="build") depends_on("blt", type="build")
depends_on("blt@0.5.0:0.5.3", type="build", when="@2022.03.0:") depends_on("blt@0.6.1:", type="build", when="@2024.02.0:")
depends_on("blt@0.5.0:0.5.3", type="build", when="@2022.03.0:2023.06.0")
patch("libstdc++-13-missing-header.patch", when="@:2022.10") patch("libstdc++-13-missing-header.patch", when="@:2022.10")
@@ -69,11 +63,9 @@ def cmake_args(self):
options.append("-DBLT_SOURCE_DIR={0}".format(spec["blt"].prefix)) options.append("-DBLT_SOURCE_DIR={0}".format(spec["blt"].prefix))
options.append("-DENABLE_OPENMP=" + ("On" if "+openmp" in spec else "Off")) options.append(self.define_from_variant("ENABLE_CUDA", "cuda"))
if "+cuda" in spec: if "+cuda" in spec:
options.extend( options.append("-DCUDA_TOOLKIT_ROOT_DIR={0}".format(spec["cuda"].prefix))
["-DENABLE_CUDA=ON", "-DCUDA_TOOLKIT_ROOT_DIR=%s" % (spec["cuda"].prefix)]
)
if not spec.satisfies("cuda_arch=none"): if not spec.satisfies("cuda_arch=none"):
cuda_arch = spec.variants["cuda_arch"].value cuda_arch = spec.variants["cuda_arch"].value
@@ -81,21 +73,17 @@ def cmake_args(self):
options.append("-DCUDA_ARCH=sm_{0}".format(cuda_arch[0])) options.append("-DCUDA_ARCH=sm_{0}".format(cuda_arch[0]))
flag = "-arch sm_{0}".format(cuda_arch[0]) flag = "-arch sm_{0}".format(cuda_arch[0])
options.append("-DCMAKE_CUDA_FLAGS:STRING={0}".format(flag)) options.append("-DCMAKE_CUDA_FLAGS:STRING={0}".format(flag))
else:
options.append("-DENABLE_CUDA=OFF")
options.append(self.define_from_variant("ENABLE_HIP", "rocm"))
if "+rocm" in spec: if "+rocm" in spec:
options.extend(["-DENABLE_HIP=ON", "-DHIP_ROOT_DIR={0}".format(spec["hip"].prefix)]) options.append("-DHIP_ROOT_DIR={0}".format(spec["hip"].prefix))
hip_repair_options(options, spec)
archs = self.spec.variants["amdgpu_target"].value archs = self.spec.variants["amdgpu_target"].value
if archs != "none": options.append("-DCMAKE_HIP_ARCHITECTURES={0}".format(archs))
arch_str = ",".join(archs) options.append("-DGPU_TARGETS={0}".format(archs))
options.append("-DHIP_HIPCC_FLAGS=--amdgpu-target={0}".format(arch_str)) options.append("-DAMDGPU_TARGETS={0}".format(archs))
else:
options.append("-DENABLE_HIP=OFF")
options.append(self.define_from_variant("ENABLE_OPENMP", "openmp"))
options.append(self.define_from_variant("ENABLE_TESTS", "tests")) options.append(self.define_from_variant("ENABLE_TESTS", "tests"))
return options return options

View File

@@ -45,7 +45,7 @@ class Care(CMakePackage, CudaPackage, ROCmPackage):
depends_on("camp") depends_on("camp")
depends_on("umpire@develop") depends_on("umpire@develop")
depends_on("raja@develop") depends_on("raja@develop")
depends_on("chai@develop+enable_pick~benchmarks") depends_on("chai@develop+enable_pick")
# WARNING: this package currently only supports an internal cub # WARNING: this package currently only supports an internal cub
# package. This will cause a race condition if compiled with another # package. This will cause a race condition if compiled with another

View File

@@ -0,0 +1,13 @@
diff --git a/cmake/thirdparty/SetupChaiThirdparty.cmake b/cmake/thirdparty/SetupChaiThirdparty.cmake
index d0be864..a8b33f0 100644
--- a/cmake/thirdparty/SetupChaiThirdparty.cmake
+++ b/cmake/thirdparty/SetupChaiThirdparty.cmake
@@ -12,7 +12,7 @@ if (NOT TARGET umpire)
find_package(umpire REQUIRED)
if (ENABLE_MPI)
- set(UMPIRE_DEPENDS mpi)
+ set(UMPIRE_DEPENDS MPI::MPI_CXX)
else()
set(UMPIRE_DEPENDS)
endif()

View File

@@ -7,6 +7,8 @@
from spack.package import * from spack.package import *
from .blt import llnl_link_helpers
class Chai(CachedCMakePackage, CudaPackage, ROCmPackage): class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
""" """
@@ -22,7 +24,24 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("develop", branch="develop", submodules=False) version("develop", branch="develop", submodules=False)
version("main", branch="main", submodules=False) version(
"2024.02.0",
tag="v2024.02.0",
commit="31773a2f0d30f3f64c82939f60fc4da32cf33261",
submodules=False,
)
version(
"2023.06.0",
tag="v2023.06.0",
commit="6fe3470ad020303530af2f3dbbfe18826bd3319b",
submodules=False,
)
version(
"2022.10.0",
tag="v2022.10.0",
commit="9510efd33b06e4443b15447eebb7dad761822654",
submodules=False,
)
version( version(
"2022.03.0", "2022.03.0",
tag="v2022.03.0", tag="v2022.03.0",
@@ -61,6 +80,10 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
) )
version("1.0", tag="v1.0", commit="501a098ad879dc8deb4a74fcfe8c08c283a10627", submodules=True) version("1.0", tag="v1.0", commit="501a098ad879dc8deb4a74fcfe8c08c283a10627", submodules=True)
# Patching Umpire for dual BLT targets import changed MPI target name in Umpire link interface
# We propagate the patch here.
patch("change_mpi_target_name_umpire_patch.patch", when="@2022.10.0:2023.06.0")
variant("enable_pick", default=False, description="Enable pick method") variant("enable_pick", default=False, description="Enable pick method")
variant( variant(
"separable_compilation", "separable_compilation",
@@ -68,29 +91,43 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
description="Build with CUDA_SEPARABLE_COMPILATION flag on ", description="Build with CUDA_SEPARABLE_COMPILATION flag on ",
) )
variant("shared", default=True, description="Build Shared Libs") variant("shared", default=True, description="Build Shared Libs")
variant("mpi", default=False, description="Enable MPI support")
variant("raja", default=False, description="Build plugin for RAJA") variant("raja", default=False, description="Build plugin for RAJA")
variant("benchmarks", default=False, description="Build benchmarks.")
variant("examples", default=True, description="Build examples.") variant("examples", default=True, description="Build examples.")
variant("openmp", default=False, description="Build using OpenMP") variant("openmp", default=False, description="Build using OpenMP")
# TODO: figure out gtest dependency and then set this default True # TODO: figure out gtest dependency and then set this default True
# and remove the +tests conflict below. # and remove the +tests conflict below.
variant("tests", default=False, description="Build tests") variant(
"tests",
default="none",
values=("none", "basic", "benchmarks"),
multi=False,
description="Tests to run",
)
depends_on("cmake@3.8:", type="build") depends_on("cmake@3.8:", type="build")
depends_on("cmake@3.9:", type="build", when="+cuda") depends_on("cmake@3.9:", type="build", when="+cuda")
depends_on("cmake@3.14:", when="@2022.03.0:") depends_on("cmake@3.14:", type="build", when="@2022.03.0:")
depends_on("blt@0.5.0:", type="build", when="@2022.03.0:") depends_on("blt")
depends_on("blt@0.4.1:", type="build", when="@2.4.0:") depends_on("blt@0.6.1:", type="build", when="@2024.02.0:")
depends_on("blt@0.4.0:", type="build", when="@2.3.0") depends_on("blt@0.5.3", type="build", when="@2023.06.0")
depends_on("blt@0.3.6:", type="build", when="@:2.2.2") depends_on("blt@0.5.2:0.5.3", type="build", when="@2022.10.0")
depends_on("blt@0.5.0:0.5.3", type="build", when="@2022.03.0")
depends_on("blt@0.4.1:0.5.3", type="build", when="@2.4.0")
depends_on("blt@0.4.0:0.5.3", type="build", when="@2.3.0")
depends_on("blt@0.3.6:0.5.3", type="build", when="@:2.2.2")
conflicts("^blt@:0.3.6", when="+rocm") conflicts("^blt@:0.3.6", when="+rocm")
depends_on("umpire") depends_on("umpire")
depends_on("umpire@2022.03.0:", when="@2022.03.0:") depends_on("umpire@2024.02.0:", when="@2024.02.0:")
depends_on("umpire@2023.06.0", when="@2023.06.0")
depends_on("umpire@2022.10.0:2023.06.0", when="@2022.10.0")
depends_on("umpire@2022.03.0:2023.06.0", when="@2022.03.0")
depends_on("umpire@6.0.0", when="@2.4.0") depends_on("umpire@6.0.0", when="@2.4.0")
depends_on("umpire@4.1.2", when="@2.2.0:2.3.0") depends_on("umpire@4.1.2", when="@2.2.0:2.3.0")
depends_on("umpire@main", when="@main")
depends_on("umpire+mpi", when="+mpi")
with when("+cuda"): with when("+cuda"):
depends_on("umpire+cuda") depends_on("umpire+cuda")
@@ -107,11 +144,13 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
with when("+raja"): with when("+raja"):
depends_on("raja~openmp", when="~openmp") depends_on("raja~openmp", when="~openmp")
depends_on("raja+openmp", when="+openmp") depends_on("raja+openmp", when="+openmp")
depends_on("raja@0.14.0", when="@2.4.0") depends_on("raja@2024.02.0:", when="@2024.02.0:")
depends_on("raja@0.13.0", when="@2.3.0") depends_on("raja@2023.06.0", when="@2023.06.0")
depends_on("raja@2022.10.0:2023.06.0", when="@2022.10.0")
depends_on("raja@2022.03.0:2023.06.0", when="@2022.03.0")
depends_on("raja@0.12.0", when="@2.2.0:2.2.2") depends_on("raja@0.12.0", when="@2.2.0:2.2.2")
depends_on("raja@2022.03.0:", when="@2022.03.0:") depends_on("raja@0.13.0", when="@2.3.0")
depends_on("raja@main", when="@main") depends_on("raja@0.14.0", when="@2.4.0")
with when("+cuda"): with when("+cuda"):
depends_on("raja+cuda") depends_on("raja+cuda")
@@ -125,7 +164,7 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage):
when="amdgpu_target={0}".format(arch), when="amdgpu_target={0}".format(arch),
) )
conflicts("+benchmarks", when="~tests") depends_on("mpi", when="+mpi")
def _get_sys_type(self, spec): def _get_sys_type(self, spec):
sys_type = spec.architecture sys_type = spec.architecture
@@ -138,25 +177,31 @@ def cache_name(self):
hostname = socket.gethostname() hostname = socket.gethostname()
if "SYS_TYPE" in env: if "SYS_TYPE" in env:
hostname = hostname.rstrip("1234567890") hostname = hostname.rstrip("1234567890")
return "{0}-{1}-{2}@{3}.cmake".format( return "{0}-{1}-{2}@{3}-{4}.cmake".format(
hostname, hostname,
self._get_sys_type(self.spec), self._get_sys_type(self.spec),
self.spec.compiler.name, self.spec.compiler.name,
self.spec.compiler.version, self.spec.compiler.version,
self.spec.dag_hash(8),
) )
def initconfig_compiler_entries(self): def initconfig_compiler_entries(self):
spec = self.spec spec = self.spec
compiler = self.compiler
# Default entries are already defined in CachedCMakePackage, inherit them:
entries = super().initconfig_compiler_entries() entries = super().initconfig_compiler_entries()
if "+rocm" in spec:
entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", spec["hip"].hipcc)) llnl_link_helpers(entries, spec, compiler)
return entries return entries
def initconfig_hardware_entries(self): def initconfig_hardware_entries(self):
spec = self.spec spec = self.spec
entries = super().initconfig_hardware_entries() entries = super().initconfig_hardware_entries()
entries.append(cmake_cache_option("ENABLE_OPENMP", "+openmp" in spec)) entries.append("#------------------{0}".format("-" * 30))
entries.append("# Package custom hardware settings")
entries.append("#------------------{0}\n".format("-" * 30))
if "+cuda" in spec: if "+cuda" in spec:
entries.append(cmake_cache_option("ENABLE_CUDA", True)) entries.append(cmake_cache_option("ENABLE_CUDA", True))
@@ -164,54 +209,67 @@ def initconfig_hardware_entries(self):
entries.append(cmake_cache_option("CMAKE_CUDA_SEPARABLE_COMPILATION", True)) entries.append(cmake_cache_option("CMAKE_CUDA_SEPARABLE_COMPILATION", True))
entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION", True)) entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION", True))
if not spec.satisfies("cuda_arch=none"):
cuda_arch = spec.variants["cuda_arch"].value
entries.append(cmake_cache_string("CUDA_ARCH", "sm_{0}".format(cuda_arch[0])))
entries.append(
cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", "{0}".format(cuda_arch[0]))
)
flag = "-arch sm_{0}".format(cuda_arch[0])
entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", "{0}".format(flag)))
else: else:
entries.append(cmake_cache_option("ENABLE_CUDA", False)) entries.append(cmake_cache_option("ENABLE_CUDA", False))
if "+rocm" in spec: if "+rocm" in spec:
entries.append(cmake_cache_option("ENABLE_HIP", True)) entries.append(cmake_cache_option("ENABLE_HIP", True))
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
archs = self.spec.variants["amdgpu_target"].value
if archs != "none":
arch_str = ",".join(archs)
entries.append(
cmake_cache_string("HIP_HIPCC_FLAGS", "--amdgpu-target={0}".format(arch_str))
)
else: else:
entries.append(cmake_cache_option("ENABLE_HIP", False)) entries.append(cmake_cache_option("ENABLE_HIP", False))
return entries return entries
def initconfig_mpi_entries(self):
spec = self.spec
entries = super(Chai, self).initconfig_mpi_entries()
entries.append(cmake_cache_option("ENABLE_MPI", "+mpi" in spec))
return entries
def initconfig_package_entries(self): def initconfig_package_entries(self):
spec = self.spec spec = self.spec
entries = [] entries = []
option_prefix = "CHAI_" if spec.satisfies("@2022.03.0:") else "" option_prefix = "CHAI_" if spec.satisfies("@2022.03.0:") else ""
# TPL locations
entries.append("#------------------{0}".format("-" * 60))
entries.append("# TPLs")
entries.append("#------------------{0}\n".format("-" * 60))
entries.append(cmake_cache_path("BLT_SOURCE_DIR", spec["blt"].prefix)) entries.append(cmake_cache_path("BLT_SOURCE_DIR", spec["blt"].prefix))
if "+raja" in spec: if "+raja" in spec:
entries.append(cmake_cache_option("{}ENABLE_RAJA_PLUGIN".format(option_prefix), True)) entries.append(cmake_cache_option("{}ENABLE_RAJA_PLUGIN".format(option_prefix), True))
entries.append(cmake_cache_path("RAJA_DIR", spec["raja"].prefix)) entries.append(cmake_cache_path("RAJA_DIR", spec["raja"].prefix))
entries.append(cmake_cache_path("umpire_DIR", spec["umpire"].prefix))
# Build options
entries.append("#------------------{0}".format("-" * 60))
entries.append("# Build Options")
entries.append("#------------------{0}\n".format("-" * 60))
# Build options
entries.append(cmake_cache_string("CMAKE_BUILD_TYPE", spec.variants["build_type"].value))
entries.append(cmake_cache_option("BUILD_SHARED_LIBS", "+shared" in spec))
# Generic options that have a prefixed equivalent in CHAI CMake
entries.append(cmake_cache_option("ENABLE_OPENMP", "+openmp" in spec))
entries.append(cmake_cache_option("ENABLE_EXAMPLES", "+examples" in spec))
entries.append(cmake_cache_option("ENABLE_DOCS", False))
if "tests=benchmarks" in spec:
# BLT requires ENABLE_TESTS=True to enable benchmarks
entries.append(cmake_cache_option("ENABLE_BENCHMARKS", True))
entries.append(cmake_cache_option("ENABLE_TESTS", True))
else:
entries.append(cmake_cache_option("ENABLE_TESTS", "tests=none" not in spec))
# Prefixed options that used to be name without one
entries.append( entries.append(
cmake_cache_option("{}ENABLE_PICK".format(option_prefix), "+enable_pick" in spec) cmake_cache_option("{}ENABLE_PICK".format(option_prefix), "+enable_pick" in spec)
) )
entries.append(cmake_cache_path("umpire_DIR", spec["umpire"].prefix.share.umpire.cmake))
entries.append(cmake_cache_option("ENABLE_TESTS", "+tests" in spec))
entries.append(cmake_cache_option("ENABLE_BENCHMARKS", "+benchmarks" in spec))
entries.append(
cmake_cache_option("{}ENABLE_EXAMPLES".format(option_prefix), "+examples" in spec)
)
entries.append(cmake_cache_option("BUILD_SHARED_LIBS", "+shared" in spec))
return entries return entries
def cmake_args(self): def cmake_args(self):
options = [] return []
return options

View File

@@ -43,7 +43,7 @@ class Datatransferkit(CMakePackage):
depends_on("trilinos+openmp", when="+openmp") depends_on("trilinos+openmp", when="+openmp")
depends_on("trilinos+stratimikos+belos", when="@master") depends_on("trilinos+stratimikos+belos", when="@master")
depends_on("trilinos@13:13.4.1", when="@3.1-rc2:3.1-rc3") depends_on("trilinos@13:13.4.1", when="@3.1-rc2:3.1-rc3")
depends_on("trilinos@14:", when="@3.1.0:") depends_on("trilinos@14.2:", when="@3.1.0:")
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec

View File

@@ -41,10 +41,8 @@ class DoubleBatchedFftLibrary(CMakePackage):
def cmake_args(self): def cmake_args(self):
cxx_compiler = os.path.basename(self.compiler.cxx) cxx_compiler = os.path.basename(self.compiler.cxx)
if self.spec.satisfies("+sycl") and cxx_compiler not in ["icpx", "dpcpp"]: if self.spec.satisfies("+sycl") and cxx_compiler not in ["icpx"]:
raise InstallError( raise InstallError("The Double-Batched FFT Library requires the oneapi C++ Compiler")
"The Double-Batched FFT Library requires the oneapi DPC++/C++ Compiler"
)
return [ return [
self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("BUILD_SHARED_LIBS", "shared"),

View File

@@ -1,166 +0,0 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack.package import *
class Dpcpp(CMakePackage):
"""Data Parallel C++ compiler: Intel's implementation of SYCL programming model"""
homepage = "https://intel.github.io/llvm-docs/"
git = "https://github.com/intel/llvm.git"
license("Apache-2.0")
version("develop", branch="sycl")
version("2021.09", commit="bd68232bb96386bf7649345c0557ba520e73c02d")
version("2021.12", commit="27f59d8906fcc8aece7ff6aa570ccdee52168c2d")
maintainers("ravil-mobile")
variant("cuda", default=False, description="switch from OpenCL to CUDA")
variant("rocm", default=False, description="switch from OpenCL to ROCm")
variant(
"rocm-platform",
default="AMD",
values=("AMD", "NVIDIA"),
multi=False,
description="choose ROCm backend",
)
variant("openmp", default=False, description="build with OpenMP without target offloading")
variant("esimd-cpu", default=False, description="build with ESIMD_CPU support")
variant("assertions", default=False, description="build with assertions")
variant("docs", default=False, description="build Doxygen documentation")
variant("werror", default=False, description="treat warnings as errors")
variant("shared", default=False, description="build shared libraries")
variant("remangle_libclc", default=True, description="remangle libclc gen. variants")
variant("lld", default=False, description="use LLD linker for build")
depends_on("cmake@3.16.2:", type="build")
depends_on("ninja@1.10.0:", type="build")
depends_on("cuda@10.2.0:11.4.999", when="+cuda")
# NOTE: AMD HIP needs to be tested; it will be done in the next update
# depends_on('cuda@10.2.0:10.2.999', when='rocm-platform=NVIDIA', type='build')
# depends_on('hip@4.0.0:', when='+rocm', type='build')
root_cmakelists_dir = "llvm"
def cmake_args(self):
llvm_external_projects = "sycl;llvm-spirv;opencl;libdevice;xpti;xptifw"
if "+openmp" in self.spec:
llvm_external_projects += ";openmp"
sycl_dir = os.path.join(self.stage.source_path, "sycl")
spirv_dir = os.path.join(self.stage.source_path, "llvm-spirv")
xpti_dir = os.path.join(self.stage.source_path, "xpti")
xptifw_dir = os.path.join(self.stage.source_path, "xptifw")
libdevice_dir = os.path.join(self.stage.source_path, "libdevice")
llvm_enable_projects = "clang;" + llvm_external_projects
libclc_targets_to_build = ""
sycl_build_pi_rocm_platform = self.spec.variants["rocm-platform"].value
if self.spec.satisfies("target=x86_64:"):
llvm_targets_to_build = "X86"
elif self.spec.satisfies("target=aarch64:"):
llvm_targets_to_build = "ARM;AArch64"
else:
raise InstallError(
"target is not supported. " "This package only works on x86_64 or aarch64"
)
is_cuda = "+cuda" in self.spec
is_rocm = "+rocm" in self.spec
if is_cuda or is_rocm:
llvm_enable_projects += ";libclc"
if is_cuda:
llvm_targets_to_build += ";NVPTX"
libclc_targets_to_build = "nvptx64--;nvptx64--nvidiacl"
if is_rocm:
if sycl_build_pi_rocm_platform == "AMD":
llvm_targets_to_build += ";AMDGPU"
libclc_targets_to_build += ";amdgcn--;amdgcn--amdhsa"
elif sycl_build_pi_rocm_platform and not is_cuda:
llvm_targets_to_build += ";NVPTX"
libclc_targets_to_build += ";nvptx64--;nvptx64--nvidiacl"
args = [
self.define_from_variant("LLVM_ENABLE_ASSERTIONS", "assertions"),
self.define("LLVM_TARGETS_TO_BUILD", llvm_targets_to_build),
self.define("LLVM_EXTERNAL_PROJECTS", llvm_external_projects),
self.define("LLVM_EXTERNAL_SYCL_SOURCE_DIR", sycl_dir),
self.define("LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR", spirv_dir),
self.define("LLVM_EXTERNAL_XPTI_SOURCE_DIR", xpti_dir),
self.define("XPTI_SOURCE_DIR", xpti_dir),
self.define("LLVM_EXTERNAL_XPTIFW_SOURCE_DIR", xptifw_dir),
self.define("LLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR", libdevice_dir),
self.define("LLVM_ENABLE_PROJECTS", llvm_enable_projects),
self.define("LIBCLC_TARGETS_TO_BUILD", libclc_targets_to_build),
self.define_from_variant("SYCL_BUILD_PI_CUDA", "cuda"),
self.define_from_variant("SYCL_BUILD_PI_ROCM", "rocm"),
self.define("SYCL_BUILD_PI_ROCM_PLATFORM", sycl_build_pi_rocm_platform),
self.define("LLVM_BUILD_TOOLS", True),
self.define_from_variant("SYCL_ENABLE_WERROR", "werror"),
self.define("SYCL_INCLUDE_TESTS", True),
self.define_from_variant("LIBCLC_GENERATE_REMANGLED_VARIANTS", "remangle_libclc"),
self.define_from_variant("LLVM_ENABLE_DOXYGEN", "docs"),
self.define_from_variant("LLVM_ENABLE_SPHINX", "docs"),
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define("SYCL_ENABLE_XPTI_TRACING", "ON"),
self.define_from_variant("LLVM_ENABLE_LLD", "lld"),
self.define_from_variant("SYCL_BUILD_PI_ESIMD_CPU", "esimd-cpu"),
]
if is_cuda or (is_rocm and sycl_build_pi_rocm_platform == "NVIDIA"):
args.append(self.define("CUDA_TOOLKIT_ROOT_DIR", self.spec["cuda"].prefix))
if "+openmp" in self.spec:
omp_dir = os.path.join(self.stage.source_path, "openmp")
args.extend(
[
self.define("LLVM_EXTERNAL_OPENMP_SOURCE_DIR", omp_dir),
self.define("OPENMP_ENABLE_LIBOMPTARGET", False),
]
)
if self.compiler.name == "gcc":
gcc_prefix = ancestor(self.compiler.cc, 2)
args.append(self.define("GCC_INSTALL_PREFIX", gcc_prefix))
return args
def setup_build_environment(self, env):
if "+cuda" in self.spec:
env.set("CUDA_LIB_PATH", "{0}/lib64/stubs".format(self.spec["cuda"].prefix))
@run_after("install")
def post_install(self):
clang_cpp_path = os.path.join(self.spec.prefix.bin, "clang++")
dpcpp_path = os.path.join(self.spec.prefix.bin, "dpcpp")
real_clang_cpp_path = os.path.realpath(clang_cpp_path)
os.symlink(real_clang_cpp_path, dpcpp_path)
def setup_run_environment(self, env):
bin_path = self.spec.prefix.bin
for env_var_name, compiler in zip(["CC", "CXX"], ["clang", "clang++"]):
env.set(env_var_name, os.path.join(bin_path, compiler))
include_env_vars = ["C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH", "INCLUDE"]
for var in include_env_vars:
env.prepend_path(var, self.prefix.include)
env.prepend_path(var, self.prefix.include.sycl)
sycl_build_pi_rocm_platform = self.spec.variants["rocm-platform"].value
if "+cuda" in self.spec or sycl_build_pi_rocm_platform == "NVIDIA":
env.prepend_path("PATH", self.spec["cuda"].prefix.bin)
env.set("CUDA_TOOLKIT_ROOT_DIR", self.spec["cuda"].prefix)

View File

@@ -81,9 +81,10 @@ class Dray(Package, CudaPackage):
depends_on("apcomp~shared", when="~shared") depends_on("apcomp~shared", when="~shared")
depends_on("apcomp+shared", when="+shared") depends_on("apcomp+shared", when="+shared")
depends_on("raja@0.12.0:") depends_on("raja@0.14.0:0.14", when="@0.1.8:")
depends_on("raja@:0.14", when="@0.1.7:") depends_on("raja@:0.14", when="@0.1.7:")
depends_on("raja@:0.13", when="@:0.1.6") depends_on("raja@:0.13", when="@:0.1.6")
depends_on("raja@0.12.0:")
depends_on("raja~cuda", when="~cuda") depends_on("raja~cuda", when="~cuda")
depends_on("raja+cuda", when="+cuda") depends_on("raja+cuda", when="+cuda")
propagate_cuda_arch("raja") propagate_cuda_arch("raja")

View File

@@ -23,8 +23,18 @@ class Eospac(Package):
# - alpha and beta versions are marked with 'deprecated=True' to help # - alpha and beta versions are marked with 'deprecated=True' to help
# spack's version comparison. # spack's version comparison.
version( version(
"6.5.7", "6.5.9",
preferred=True, preferred=True,
sha256="54df29b1dc3b35c654ef2ebfbfa42d960a230cfb2d3c04a75ba93d3a789a312a",
url="https://laws.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.5.9_4c633156bacc7b721bdd2735e40e09984a4d60a3.tgz",
)
version(
"6.5.8",
sha256="4e2c5db150bf7f45b5615c034848b9256f8659bcde95f097e446c226c70c6d96",
url="https://laws.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.5.8_052127ccd65148632bd1258764f455c692a4dfc1.tgz",
)
version(
"6.5.7",
sha256="e59bd449bf97ce977309c6fc8a54fa30f4db9b2ca3e21f996095d78e23799e42", sha256="e59bd449bf97ce977309c6fc8a54fa30f4db9b2ca3e21f996095d78e23799e42",
url="https://laws.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.5.7_9a867a15ae4137d22e1b52199d6a46b486fc4376.tgz", url="https://laws.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.5.7_9a867a15ae4137d22e1b52199d6a46b486fc4376.tgz",
) )

View File

@@ -156,7 +156,7 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
# This is duplicated from HiOp # This is duplicated from HiOp
# RAJA > 0.14 and Umpire > 6.0 require c++ std 14 # RAJA > 0.14 and Umpire > 6.0 require c++ std 14
# We are working on supporting newer Umpire/RAJA versions # We are working on supporting newer Umpire/RAJA versions
depends_on("raja@0.14.0:0.14", when="@1.1.0:+raja") depends_on("raja@0.14.0:0.14 +shared", when="@1.1.0:+raja")
depends_on("umpire@6.0.0:6", when="@1.1.0:+raja") depends_on("umpire@6.0.0:6", when="@1.1.0:+raja")
depends_on("camp@0.2.3:0.2", when="@1.1.0:+raja") depends_on("camp@0.2.3:0.2", when="@1.1.0:+raja")
# This is no longer a requirement in RAJA > 0.14 # This is no longer a requirement in RAJA > 0.14

View File

@@ -6,37 +6,93 @@
from spack.package import * from spack.package import *
class Exawind(CMakePackage): class Exawind(CMakePackage, CudaPackage, ROCmPackage):
"""Multi-application driver for Exawind project.""" """Multi-application driver for Exawind project."""
homepage = "https://github.com/Exawind/exawind-driver" homepage = "https://github.com/Exawind/exawind-driver"
git = "https://github.com/Exawind/exawind-driver.git" git = "https://github.com/Exawind/exawind-driver.git"
maintainers("jrood-nrel", "psakievich") maintainers("jrood-nrel")
tags = ["ecp", "ecp-apps"] tags = ["ecp", "ecp-apps"]
# Testing is currently always enabled, but should be optional in the future
# to avoid cloning the mesh submodule
version("master", branch="main", submodules=True)
version("1.0.0", tag="v1.0.0", submodules=True)
license("Apache-2.0") license("Apache-2.0")
version("master", branch="main") variant("openfast", default=False, description="Enable OpenFAST integration")
variant("hypre", default=True, description="Enable hypre solver")
variant("stk_simd", default=False, description="Enable SIMD in STK")
variant("umpire", default=False, description="Enable Umpire")
variant("tiny_profile", default=False, description="Turn on AMR-wind with tiny profile")
variant("sycl", default=False, description="Enable SYCL backend for AMR-Wind")
variant("gpu-aware-mpi", default=False, description="gpu-aware-mpi")
depends_on("trilinos+stk") conflicts("amr-wind+hypre", when="+sycl")
depends_on("tioga+shared~nodegid")
depends_on("nalu-wind+hypre+openfast+tioga+wind-utils") for arch in CudaPackage.cuda_arch_values:
depends_on("amr-wind+hypre+mpi+netcdf+openfast") depends_on("amr-wind+cuda cuda_arch=%s" % arch, when="+cuda cuda_arch=%s" % arch)
depends_on("openfast+cxx+shared@2.6.0:") depends_on("nalu-wind+cuda cuda_arch=%s" % arch, when="+cuda cuda_arch=%s" % arch)
for arch in ROCmPackage.amdgpu_targets:
depends_on("amr-wind+rocm amdgpu_target=%s" % arch, when="+rocm amdgpu_target=%s" % arch)
depends_on("nalu-wind+rocm amdgpu_target=%s" % arch, when="+rocm amdgpu_target=%s" % arch)
depends_on("nalu-wind+tioga")
depends_on("amr-wind+netcdf+mpi")
depends_on("tioga~nodegid")
depends_on("yaml-cpp@0.6:") depends_on("yaml-cpp@0.6:")
depends_on("nalu-wind+openfast", when="+openfast")
depends_on("amr-wind+hypre", when="+hypre~sycl")
depends_on("amr-wind~hypre", when="~hypre")
depends_on("nalu-wind+hypre", when="+hypre")
depends_on("nalu-wind~hypre", when="~hypre")
depends_on("amr-wind+sycl", when="+sycl")
depends_on("nalu-wind+umpire", when="+umpire")
depends_on("amr-wind+umpire", when="+umpire")
depends_on("amr-wind+tiny_profile", when="+tiny_profile")
depends_on("nalu-wind+gpu-aware-mpi", when="+gpu-aware-mpi")
depends_on("amr-wind+gpu-aware-mpi", when="+gpu-aware-mpi")
depends_on("nalu-wind@2.0.0:", when="@1.0.0:")
depends_on("amr-wind@0.9.0:", when="@1.0.0:")
depends_on("tioga@1.0.0:", when="@1.0.0:")
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec
args = [ args = [self.define("MPI_HOME", spec["mpi"].prefix)]
self.define("Trilinos_DIR", spec["trilinos"].prefix),
self.define("TIOGA_DIR", spec["tioga"].prefix), if "+umpire" in self.spec:
self.define("Nalu-Wind_DIR", spec["nalu-wind"].prefix), args.append(self.define_from_variant("EXAWIND_ENABLE_UMPIRE", "umpire"))
self.define("AMR-Wind_DIR", spec["amr-wind"].prefix), args.append(self.define("UMPIRE_DIR", self.spec["umpire"].prefix))
self.define("OpenFAST_DIR", spec["openfast"].prefix),
self.define("YAML-CPP_DIR", spec["yaml-cpp"].prefix), if spec.satisfies("+cuda"):
] args.append(self.define("EXAWIND_ENABLE_CUDA", True))
args.append(self.define("CUDAToolkit_ROOT", self.spec["cuda"].prefix))
args.append(self.define("EXAWIND_CUDA_ARCH", self.spec.variants["cuda_arch"].value))
if spec.satisfies("+rocm"):
targets = self.spec.variants["amdgpu_target"].value
args.append(self.define("EXAWIND_ENABLE_ROCM", True))
args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc))
args.append(self.define("CMAKE_HIP_ARCHITECTURES", ";".join(str(x) for x in targets)))
args.append(self.define("AMDGPU_TARGETS", ";".join(str(x) for x in targets)))
args.append(self.define("GPU_TARGETS", ";".join(str(x) for x in targets)))
if spec.satisfies("^amr-wind+hdf5"):
args.append(self.define("H5Z_ZFP_USE_STATIC_LIBS", True))
if spec.satisfies("^amr-wind+ascent"):
args.append(self.define("CMAKE_EXE_LINKER_FLAGS", self.compiler.openmp_flag))
return args return args
def setup_build_environment(self, env):
if "~stk_simd" in self.spec:
env.append_flags("CXXFLAGS", "-DUSE_STK_SIMD_NONE")
if "+rocm" in self.spec:
env.set("OMPI_CXX", self.spec["hip"].hipcc)
env.set("MPICH_CXX", self.spec["hip"].hipcc)
env.set("MPICXX_CXX", self.spec["hip"].hipcc)

View File

@@ -31,6 +31,9 @@ class Exodusii(CMakePackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("master", branch="master") version("master", branch="master")
version(
"2024-04-03", sha256="72b095bae64b2b6c232630f79de763c6ade00c9b1199fc6980800891b2ab3751"
)
version( version(
"2024-03-11", sha256="5d417aa652e4ec8d66e27714c63b8cb5a7f878fb7b2ec55f629636fcff7c0f00" "2024-03-11", sha256="5d417aa652e4ec8d66e27714c63b8cb5a7f878fb7b2ec55f629636fcff7c0f00"
) )
@@ -59,39 +62,61 @@ class Exodusii(CMakePackage):
"2022-01-27", sha256="d21c14b9b30f773cef8e2029773f3cc35da021eebe9060298231f95021eb814f" "2022-01-27", sha256="d21c14b9b30f773cef8e2029773f3cc35da021eebe9060298231f95021eb814f"
) )
version( version(
"2021-10-11", sha256="5c04d252e1c4a10b037aa352b89487e581ec6b52bdb46e9e85f101bbdcd9c388" "2021-10-11",
sha256="5c04d252e1c4a10b037aa352b89487e581ec6b52bdb46e9e85f101bbdcd9c388",
deprecated=True,
) )
version( version(
"2021-04-05", sha256="f40d318674753287b8b28d2b4e5cca872cd772d4c7383af4a8f3eeb48fcc7ec0" "2021-04-05",
sha256="f40d318674753287b8b28d2b4e5cca872cd772d4c7383af4a8f3eeb48fcc7ec0",
deprecated=True,
) )
version( version(
"2021-04-02", sha256="811037a68eaff0daf9f34bd31b2ab1c9b8f028dfcb998ab01fbcb80d9458257c" "2021-04-02",
sha256="811037a68eaff0daf9f34bd31b2ab1c9b8f028dfcb998ab01fbcb80d9458257c",
deprecated=True,
) )
version( version(
"2021-01-20", sha256="6ff7c3f0651138f2e2305b5270108ca45f96346a739b35a126a0a260c91cbe64" "2021-01-20",
sha256="6ff7c3f0651138f2e2305b5270108ca45f96346a739b35a126a0a260c91cbe64",
deprecated=True,
) )
version( version(
"2021-01-06", sha256="69cafef17d8e624c2d9871f3a281ff3690116a6f82162fe5c1507bb4ecd6a32a" "2021-01-06",
sha256="69cafef17d8e624c2d9871f3a281ff3690116a6f82162fe5c1507bb4ecd6a32a",
deprecated=True,
) )
version( version(
"2020-08-13", sha256="5b128a8ad9b0a69cff4fe937828d6d1702f1fe8aa80d4751e6522939afe62957" "2020-08-13",
sha256="5b128a8ad9b0a69cff4fe937828d6d1702f1fe8aa80d4751e6522939afe62957",
deprecated=True,
) )
version( version(
"2020-05-12", sha256="0402facf6cf23d903d878fb924b5d57e9f279dead5b92cf986953a6b91a6e81f" "2020-05-12",
sha256="0402facf6cf23d903d878fb924b5d57e9f279dead5b92cf986953a6b91a6e81f",
deprecated=True,
) )
version( version(
"2020-03-16", sha256="ed1d42c8c657931ecd45367a465cf9c00255772d9cd0811fc9baacdb67fc71fa" "2020-03-16",
sha256="ed1d42c8c657931ecd45367a465cf9c00255772d9cd0811fc9baacdb67fc71fa",
deprecated=True,
) )
version( version(
"2020-01-16", sha256="db69dca25595e88a40c00db0ccf2afed1ecd6008ba30bb478a4e1c5dd61998b8" "2020-01-16",
sha256="db69dca25595e88a40c00db0ccf2afed1ecd6008ba30bb478a4e1c5dd61998b8",
deprecated=True,
) )
version( version(
"2019-12-18", sha256="88a71de836aa26fd63756cf3ffbf3978612edc5b6c61fa8de32fe9d638007774" "2019-12-18",
sha256="88a71de836aa26fd63756cf3ffbf3978612edc5b6c61fa8de32fe9d638007774",
deprecated=True,
) )
version( version(
"2019-10-14", sha256="f143d90e8a7516d25979d1416e580dea638332db723f26ae94a712dfe4052e8f" "2019-10-14",
sha256="f143d90e8a7516d25979d1416e580dea638332db723f26ae94a712dfe4052e8f",
deprecated=True,
) )
version("2016-08-09", commit="2ffeb1bd39454ad5aa230e12969ce976f3d1c92b") version("2016-08-09", commit="2ffeb1bd39454ad5aa230e12969ce976f3d1c92b", deprecated=True)
patch("Fix-ioss-tpl.patch", when="@2021-10-11:") patch("Fix-ioss-tpl.patch", when="@2021-10-11:")

View File

@@ -25,6 +25,7 @@ class FftwBase(AutotoolsPackage):
) )
variant("openmp", default=False, description="Enable OpenMP support.") variant("openmp", default=False, description="Enable OpenMP support.")
variant("mpi", default=True, description="Activate MPI support") variant("mpi", default=True, description="Activate MPI support")
variant("shared", default=True, description="Build shared libraries")
depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpi")
depends_on("llvm-openmp", when="%apple-clang +openmp") depends_on("llvm-openmp", when="%apple-clang +openmp")
@@ -104,7 +105,9 @@ def setup_build_environment(self, env):
def configure(self, spec, prefix): def configure(self, spec, prefix):
# Base options # Base options
options = ["--prefix={0}".format(prefix), "--enable-shared", "--enable-threads"] options = ["--prefix={0}".format(prefix), "--enable-threads"]
options.extend(self.enable_or_disable("shared"))
if not self.compiler.f77 or not self.compiler.fc: if not self.compiler.f77 or not self.compiler.fc:
options.append("--disable-fortran") options.append("--disable-fortran")
if spec.satisfies("@:2"): if spec.satisfies("@:2"):

View File

@@ -22,6 +22,7 @@ class FluxCore(AutotoolsPackage):
license("LGPL-3.0-only") license("LGPL-3.0-only")
version("master", branch="master") version("master", branch="master")
version("0.61.0", sha256="02cedc6abb12816cbb01f2195c1acf7b6552c1d8b9029f899148df48a7cd05e2")
version("0.60.0", sha256="f96025204a20f94c2821db47fe010b2c19e076ef93281ac7d308e82853e135ff") version("0.60.0", sha256="f96025204a20f94c2821db47fe010b2c19e076ef93281ac7d308e82853e135ff")
version("0.59.0", sha256="465d24294b92962d156ad49768ea804ff848d5c0b3470d80e07ebf24cd255f2d") version("0.59.0", sha256="465d24294b92962d156ad49768ea804ff848d5c0b3470d80e07ebf24cd255f2d")
version("0.58.0", sha256="3125ace7d4d3c99b362290344f97db74c06c37b5510cfcb746e1bf48e1dc1389") version("0.58.0", sha256="3125ace7d4d3c99b362290344f97db74c06c37b5510cfcb746e1bf48e1dc1389")

View File

@@ -0,0 +1,22 @@
diff --git a/include/fmt/format.h b/include/fmt/format.h
index 7637c8a0..c9d7b6cc 100644
--- a/include/fmt/format.h
+++ b/include/fmt/format.h
@@ -1332,7 +1332,7 @@ template <typename Char, typename UInt, typename Iterator,
FMT_CONSTEXPR inline auto format_decimal(Iterator out, UInt value, int size)
-> format_decimal_result<Iterator> {
// Buffer is large enough to hold all digits (digits10 + 1).
- Char buffer[digits10<UInt>() + 1] = {};
+ Char buffer[digits10<UInt>() + 1];
auto end = format_decimal(buffer, value, size).end;
return {out, detail::copy_str_noinline<Char>(buffer, end, out)};
}
@@ -1359,7 +1359,7 @@ FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
return out;
}
// Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
- char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
+ char buffer[num_bits<UInt>() / BASE_BITS + 1];
format_uint<BASE_BITS>(buffer, value, num_digits, upper);
return detail::copy_str_noinline<Char>(buffer, buffer + num_digits, out);
}

View File

@@ -94,6 +94,14 @@ class Fmt(CMakePackage):
when="@10.0.0:10.1.1", when="@10.0.0:10.1.1",
) )
# Fix 'variable "buffer" may not be initialized' compiler error
patch(
"fmt-no-variable-initialize_10.0.0.patch", when="@10.0.0:10.2.1%clang@12.0.1.ibm.gcc.8.3.1"
)
patch(
"fmt-no-variable-initialize_10.0.0.patch", when="@10.0.0:10.2.1%clang@14.0.5.ibm.gcc.8.3.1"
)
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec
args = [] args = []

View File

@@ -20,6 +20,7 @@ class G2(CMakePackage):
maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett") maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett")
version("develop", branch="develop") version("develop", branch="develop")
version("3.4.9", sha256="6edc33091f6bd2acb191182831499c226a1c3992c3acc104d6363528b12dfbae")
version("3.4.8", sha256="071a6f799c4c4fdfd5d0478152a0cbb9d668d12d71c78d5bda71845fc5580a7f") version("3.4.8", sha256="071a6f799c4c4fdfd5d0478152a0cbb9d668d12d71c78d5bda71845fc5580a7f")
version("3.4.7", sha256="d6530611e3a515122f11ed4aeede7641f6f8932ef9ee0d4828786572767304dc") version("3.4.7", sha256="d6530611e3a515122f11ed4aeede7641f6f8932ef9ee0d4828786572767304dc")
version("3.4.6", sha256="c4b03946365ce0bacf1e10e8412a5debd72d8671d1696aa4fb3f3adb119175fe") version("3.4.6", sha256="c4b03946365ce0bacf1e10e8412a5debd72d8671d1696aa4fb3f3adb119175fe")

View File

@@ -18,6 +18,7 @@ class G2c(CMakePackage):
maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett") maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett")
version("develop", branch="develop") version("develop", branch="develop")
version("1.9.0", sha256="5554276e18bdcddf387a08c2dd23f9da310c6598905df6a2a244516c22ded9aa")
version("1.8.0", sha256="4ce9f5a7cb0950699fe08ebc5a463ab4d09ef550c050391a319308a2494f971f") version("1.8.0", sha256="4ce9f5a7cb0950699fe08ebc5a463ab4d09ef550c050391a319308a2494f971f")
version("1.7.0", sha256="73afba9da382fed73ed8692d77fa037bb313280879cd4012a5e5697dccf55175") version("1.7.0", sha256="73afba9da382fed73ed8692d77fa037bb313280879cd4012a5e5697dccf55175")
version("1.6.4", sha256="5129a772572a358296b05fbe846bd390c6a501254588c6a223623649aefacb9d") version("1.6.4", sha256="5129a772572a358296b05fbe846bd390c6a501254588c6a223623649aefacb9d")

View File

@@ -18,6 +18,20 @@ class G2tmpl(CMakePackage):
maintainers("edwardhartnett", "AlexanderRichert-NOAA", "Hang-Lei-NOAA") maintainers("edwardhartnett", "AlexanderRichert-NOAA", "Hang-Lei-NOAA")
version("develop", branch="develop") version("develop", branch="develop")
version("1.11.0", sha256="00fde3b37c6b4d1f0eaf60f230159298ffcb47349a076c3bd6afa20c7ed791a9")
version("1.10.2", sha256="4063361369f3691f75288c801fa9d1a2414908b7d6c07bbf69d4165802e2a7fc") version("1.10.2", sha256="4063361369f3691f75288c801fa9d1a2414908b7d6c07bbf69d4165802e2a7fc")
version("1.10.1", sha256="0be425e5128fabb89915a92261aa75c27a46a3e115e00c686fc311321e5d1e2a") version("1.10.1", sha256="0be425e5128fabb89915a92261aa75c27a46a3e115e00c686fc311321e5d1e2a")
version("1.10.0", sha256="dcc0e40b8952f91d518c59df7af64e099131c17d85d910075bfa474c8822649d") version("1.10.0", sha256="dcc0e40b8952f91d518c59df7af64e099131c17d85d910075bfa474c8822649d")
variant("shared", default=False, description="Build shared library")
def cmake_args(self):
args = [
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define("BUILD_TESTING", self.run_tests),
]
return args
def check(self):
with working_dir(self.builder.build_directory):
make("test")

View File

@@ -32,6 +32,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension):
license("MIT") license("MIT")
version("3.8.5", sha256="e8b4df2a8a7d25272f867455c0c230459545972f81f0eff2ddbf6a6f60dcb1e4")
version("3.8.4", sha256="0c53ced95d29474236487202709b49015854f8e02e35e44ed0f4f4e12a7966ce") version("3.8.4", sha256="0c53ced95d29474236487202709b49015854f8e02e35e44ed0f4f4e12a7966ce")
version("3.8.3", sha256="ae2d160f65016e208eca34ff14490ec4511f1fa03fd386ac130449d15e82929d") version("3.8.3", sha256="ae2d160f65016e208eca34ff14490ec4511f1fa03fd386ac130449d15e82929d")
version("3.8.2", sha256="dc2921ee1cf7a5c0498e94d15fb9ab9c9689c296363a1d021fc3293dd242b4db") version("3.8.2", sha256="dc2921ee1cf7a5c0498e94d15fb9ab9c9689c296363a1d021fc3293dd242b4db")

View File

@@ -85,6 +85,7 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage):
depends_on("xz", when="+xz") depends_on("xz", when="+xz")
depends_on("zlib-api") depends_on("zlib-api")
depends_on("zstd", when="@13.1:") depends_on("zstd", when="@13.1:")
depends_on("pkgconfig", type="build", when="@13.1:")
depends_on("source-highlight", when="+source-highlight") depends_on("source-highlight", when="+source-highlight")
depends_on("ncurses", when="+tui") depends_on("ncurses", when="+tui")
depends_on("gmp", when="@11.1:") depends_on("gmp", when="@11.1:")

View File

@@ -1,70 +0,0 @@
commit 83164570f0d3511d114114bcc2b02ad23b753ed0
Author: Yuhsiang M. Tsai <yhmtsai@gmail.com>
Date: Wed Oct 6 16:33:16 2021 +0200
syclstd 1.2.1 in new release to propagate subgroup
remove 64 subgroup in dense to avoid conj_trans issue on cpu temporarily
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ceb269b1cb..b47388a596 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,7 +67,8 @@ if(MSVC)
elseif(GINKGO_BUILD_DPCPP OR CMAKE_CXX_COMPILER MATCHES "dpcpp")
# For now always use `-ffp-model=precise` with DPC++. This can be removed when
# the floating point issues are fixed.
- set(GINKGO_COMPILER_FLAGS "-Wpedantic;-ffp-model=precise" CACHE STRING
+ # -sycl-std=1.2.1 (or -sycl-std=2017) is temporary workaround after 2021.4 to propagate subgroup setting correctly
+ set(GINKGO_COMPILER_FLAGS "-Wpedantic;-ffp-model=precise;-sycl-std=1.2.1" CACHE STRING
"Set the required CXX compiler flags, mainly used for warnings. Current default is `-Wpedantic;-ffp-model=precise`")
else()
set(GINKGO_COMPILER_FLAGS "-Wpedantic" CACHE STRING
diff --git a/cmake/create_test.cmake b/cmake/create_test.cmake
index 9d22406f9a..dcc452b293 100644
--- a/cmake/create_test.cmake
+++ b/cmake/create_test.cmake
@@ -40,6 +40,7 @@ function(ginkgo_create_dpcpp_test test_name)
add_executable(${test_target_name} ${test_name}.dp.cpp)
target_compile_features(${test_target_name} PUBLIC cxx_std_17)
target_compile_options(${test_target_name} PRIVATE "${GINKGO_DPCPP_FLAGS}")
+ target_compile_options(${test_target_name} PRIVATE "${GINKGO_COMPILER_FLAGS}")
target_link_options(${test_target_name} PRIVATE -fsycl-device-code-split=per_kernel)
ginkgo_set_test_target_properties(${test_name} ${test_target_name})
# Note: MKL_ENV is empty on linux. Maybe need to apply MKL_ENV to all test.
diff --git a/dpcpp/CMakeLists.txt b/dpcpp/CMakeLists.txt
index fee9ec3639..ce71fd5d3c 100644
--- a/dpcpp/CMakeLists.txt
+++ b/dpcpp/CMakeLists.txt
@@ -68,6 +68,7 @@ target_compile_definitions(ginkgo_dpcpp PRIVATE GKO_COMPILING_DPCPP)
set(GINKGO_DPCPP_FLAGS ${GINKGO_DPCPP_FLAGS} PARENT_SCOPE)
target_compile_options(ginkgo_dpcpp PRIVATE "${GINKGO_DPCPP_FLAGS}")
+target_compile_options(ginkgo_dpcpp PRIVATE "${GINKGO_COMPILER_FLAGS}")
# Note: add MKL as PRIVATE not PUBLIC (MKL example shows) to avoid propagating
# find_package(MKL) everywhere when linking ginkgo (see the MKL example
# https://software.intel.com/content/www/us/en/develop/documentation/onemkl-windows-developer-guide/top/getting-started/cmake-config-for-onemkl.html)
diff --git a/dpcpp/matrix/dense_kernels.dp.cpp b/dpcpp/matrix/dense_kernels.dp.cpp
index 0c89530d1d..9a86ab9cd1 100644
--- a/dpcpp/matrix/dense_kernels.dp.cpp
+++ b/dpcpp/matrix/dense_kernels.dp.cpp
@@ -69,14 +69,14 @@ namespace dpcpp {
namespace dense {
+// Disable the 64 subgroup. CPU supports 64 now, but conj_transpose will
+// lead CL_OUT_OF_RESOURCES. TODO: investigate this issue.
using KCFG_1D = ConfigSet<11, 7>;
constexpr auto kcfg_1d_list =
- syn::value_list<std::uint32_t, KCFG_1D::encode(512, 64),
- KCFG_1D::encode(512, 32), KCFG_1D::encode(512, 16),
- KCFG_1D::encode(256, 32), KCFG_1D::encode(256, 16),
- KCFG_1D::encode(256, 8)>();
-constexpr auto subgroup_list =
- syn::value_list<std::uint32_t, 64, 32, 16, 8, 4>();
+ syn::value_list<std::uint32_t, KCFG_1D::encode(512, 32),
+ KCFG_1D::encode(512, 16), KCFG_1D::encode(256, 32),
+ KCFG_1D::encode(256, 16), KCFG_1D::encode(256, 8)>();
+constexpr auto subgroup_list = syn::value_list<std::uint32_t, 32, 16, 8, 4>();
constexpr auto kcfg_1d_array = syn::as_array(kcfg_1d_list);
constexpr int default_block_size = 256;

View File

@@ -0,0 +1,19 @@
diff -ruN spack-src/dpcpp/components/intrinsics.dp.hpp spack-src-patched/dpcpp/components/intrinsics.dp.hpp
--- spack-src/dpcpp/components/intrinsics.dp.hpp 2024-04-03 18:53:42.724032846 +0000
+++ spack-src-patched/dpcpp/components/intrinsics.dp.hpp 2024-04-03 18:55:01.744543032 +0000
@@ -67,13 +67,13 @@
*/
__dpct_inline__ int ffs(uint32 mask)
{
- return (mask == 0) ? 0 : (sycl::ext::intel::ctz(mask) + 1);
+ return (mask == 0) ? 0 : (sycl::ctz(mask) + 1);
}
/** @copydoc ffs */
__dpct_inline__ int ffs(uint64 mask)
{
- return (mask == 0) ? 0 : (sycl::ext::intel::ctz(mask) + 1);
+ return (mask == 0) ? 0 : (sycl::ctz(mask) + 1);
}

View File

@@ -106,6 +106,9 @@ class Ginkgo(CMakePackage, CudaPackage, ROCmPackage):
# https://github.com/ginkgo-project/ginkgo/pull/1524 # https://github.com/ginkgo-project/ginkgo/pull/1524
patch("ginkgo-sycl-pr1524.patch", when="@1.7.0 +sycl %oneapi@2024:") patch("ginkgo-sycl-pr1524.patch", when="@1.7.0 +sycl %oneapi@2024:")
# https://github.com/ginkgo-project/ginkgo/pull/1585
patch("ginkgo-dpcpp-intrinsincs-oneapi-2024.1.patch", when="@1.7.0 +sycl %oneapi@2024.1:")
# Skip smoke tests if compatible hardware isn't found # Skip smoke tests if compatible hardware isn't found
patch("1.4.0_skip_invalid_smoke_tests.patch", when="@1.4.0") patch("1.4.0_skip_invalid_smoke_tests.patch", when="@1.4.0")
@@ -118,7 +121,7 @@ def setup_build_environment(self, env):
env.set("MKLROOT", join_path(spec["intel-oneapi-mkl"].prefix, "mkl", "latest")) env.set("MKLROOT", join_path(spec["intel-oneapi-mkl"].prefix, "mkl", "latest"))
env.set("DPL_ROOT", join_path(spec["intel-oneapi-dpl"].prefix, "dpl", "latest")) env.set("DPL_ROOT", join_path(spec["intel-oneapi-dpl"].prefix, "dpl", "latest"))
# The `IntelSYCLConfig.cmake` is broken with spack. By default, it # The `IntelSYCLConfig.cmake` is broken with spack. By default, it
# relies on the CMAKE_CXX_COMPILER being the real ipcx/dpcpp # relies on the CMAKE_CXX_COMPILER being the real ipcx
# compiler. If not, the variable SYCL_COMPILER of that script is # compiler. If not, the variable SYCL_COMPILER of that script is
# broken, and all the SYCL detection mechanism is wrong. We fix it # broken, and all the SYCL detection mechanism is wrong. We fix it
# by giving hint environment variables. # by giving hint environment variables.
@@ -197,9 +200,9 @@ def cmake_args(self):
) )
if "+sycl" in self.spec: if "+sycl" in self.spec:
sycl_compatible_compilers = ["dpcpp", "icpx"] sycl_compatible_compilers = ["icpx"]
if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers): if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers):
raise InstallError("ginkgo +sycl requires DPC++ (dpcpp) or icpx compiler.") raise InstallError("ginkgo +sycl requires icpx compiler.")
return args return args
@property @property

View File

@@ -22,6 +22,7 @@ class GribUtil(CMakePackage):
version("1.2.3", sha256="b17b08e12360bb8ad01298e615f1b4198e304b0443b6db35fe990a817e648ad5") version("1.2.3", sha256="b17b08e12360bb8ad01298e615f1b4198e304b0443b6db35fe990a817e648ad5")
variant("openmp", default=False, description="Use OpenMP multithreading") variant("openmp", default=False, description="Use OpenMP multithreading")
variant("tests", default=False, description="Enable this variant when installing with --test")
depends_on("jasper") depends_on("jasper")
depends_on("libpng") depends_on("libpng")
@@ -30,15 +31,19 @@ class GribUtil(CMakePackage):
requires("^w3emc precision=4,d", when="^w3emc@2.10:") requires("^w3emc precision=4,d", when="^w3emc@2.10:")
depends_on("w3nco", when="@:1.2.3") depends_on("w3nco", when="@:1.2.3")
depends_on("g2") depends_on("g2")
depends_on("g2c@1.8: +utils", when="+tests")
depends_on("bacio") depends_on("bacio")
depends_on("ip") depends_on("ip")
depends_on("ip@:3.3.3", when="@:1.2.4") requires("^ip precision=d", when="^ip@4.1:")
depends_on("sp") depends_on("ip@:3.3.3", when="@:1.2")
depends_on("sp", when="^ip@:4")
requires("^sp precision=d", when="^ip@:4 ^sp@2.4:")
def cmake_args(self): def cmake_args(self):
args = [ args = [
self.define_from_variant("OPENMP", "openmp"), self.define_from_variant("OPENMP", "openmp"),
self.define("BUILD_TESTING", self.run_tests), self.define("BUILD_TESTING", self.run_tests),
self.define("G2C_COMPARE", self.run_tests),
] ]
return args return args

View File

@@ -72,6 +72,7 @@ class Hypre(AutotoolsPackage, CudaPackage, ROCmPackage):
variant("int64", default=False, description="Use 64bit integers") variant("int64", default=False, description="Use 64bit integers")
variant("mixedint", default=False, description="Use 64bit integers while reducing memory use") variant("mixedint", default=False, description="Use 64bit integers while reducing memory use")
variant("complex", default=False, description="Use complex values") variant("complex", default=False, description="Use complex values")
variant("gpu-aware-mpi", default=False, description="Use gpu-aware mpi")
variant("mpi", default=True, description="Enable MPI support") variant("mpi", default=True, description="Enable MPI support")
variant("openmp", default=False, description="Enable OpenMP support") variant("openmp", default=False, description="Enable OpenMP support")
variant("debug", default=False, description="Build debug instead of optimized version") variant("debug", default=False, description="Build debug instead of optimized version")
@@ -286,11 +287,10 @@ def configure_args(self):
if spec.satisfies("+sycl"): if spec.satisfies("+sycl"):
configure_args.append("--with-sycl") configure_args.append("--with-sycl")
sycl_compatible_compilers = ["dpcpp", "icpx"] sycl_compatible_compilers = ["icpx"]
if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers): if not (os.path.basename(self.compiler.cxx) in sycl_compatible_compilers):
raise InstallError( raise InstallError(
"Hypre's SYCL GPU Backend requires DPC++ (dpcpp)" "Hypre's SYCL GPU Backend requires the oneAPI CXX (icpx) compiler."
+ " or the oneAPI CXX (icpx) compiler."
) )
if spec.satisfies("+unified-memory"): if spec.satisfies("+unified-memory"):
@@ -301,6 +301,9 @@ def configure_args(self):
configure_args.append("--with-magma-lib=%s" % spec["magma"].libs) configure_args.append("--with-magma-lib=%s" % spec["magma"].libs)
configure_args.append("--with-magma") configure_args.append("--with-magma")
if "+gpu-aware-mpi" in spec:
options.append("--enable-gpu-aware-mpi")
configure_args.extend(self.enable_or_disable("fortran")) configure_args.extend(self.enable_or_disable("fortran"))
return configure_args return configure_args

View File

@@ -223,10 +223,7 @@
@IntelOneApiPackage.update_description @IntelOneApiPackage.update_description
class IntelOneapiCompilers(IntelOneApiPackage): class IntelOneapiCompilers(IntelOneApiPackage):
"""Intel oneAPI Compilers. Includes: icc, icpc, ifort, icx, icpx, ifx, """Intel oneAPI Compilers. Includes: icc, icpc, ifort, icx, icpx, and ifx."""
and dpcpp.
"""
maintainers("rscohn2") maintainers("rscohn2")

View File

@@ -24,6 +24,12 @@ class IntelOneapiInspector(IntelOneApiLibraryPackageWithSdk):
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/inspector.html" homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/inspector.html"
version(
"2024.1.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/891acaab-a5b4-4a3c-9f36-60dca629e410/l_inspector_oneapi_p_2024.1.0.158_offline.sh",
sha256="b4e4e2e395ad98ce025a6bf26950fc39c2f54c905a1a9c88cb129109a5dd0936",
expand=False,
)
version( version(
"2024.0.0", "2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/44ae6846-719c-49bd-b196-b16ce5835a1e/l_inspector_oneapi_p_2024.0.0.49433_offline.sh", url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/44ae6846-719c-49bd-b196-b16ce5835a1e/l_inspector_oneapi_p_2024.0.0.49433_offline.sh",

View File

@@ -27,6 +27,12 @@ class IntelOneapiItac(IntelOneApiPackage):
maintainers("rscohn2") maintainers("rscohn2")
version(
"2022.1.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/644eec67-83d9-4bdd-be0d-d90587ec72ed/l_itac_oneapi_p_2022.1.0.158_offline.sh",
sha256="2a1f4be6b349d1629006ee72087b361a5f3e714bddd1ef932045d0c03c0b20e8",
expand=False,
)
version( version(
"2022.0.0", "2022.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/e83526f5-7e0f-4708-9e0d-47f1e65f29aa/l_itac_oneapi_p_2022.0.0.49690_offline.sh", url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/e83526f5-7e0f-4708-9e0d-47f1e65f29aa/l_itac_oneapi_p_2022.0.0.49690_offline.sh",

View File

@@ -15,6 +15,9 @@ class IntelOneapiRuntime(Package):
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi.html" homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi.html"
has_code = False has_code = False
license("https://intel.ly/393CijO")
maintainers("rscohn2")
tags = ["runtime"] tags = ["runtime"]

View File

@@ -64,7 +64,6 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage):
conflicts("+openmptarget", when="@:3.5") conflicts("+openmptarget", when="@:3.5")
# https://github.com/spack/spack/issues/29052 # https://github.com/spack/spack/issues/29052
conflicts("@:3.5 +sycl", when="%dpcpp@2022:")
conflicts("@:3.5 +sycl", when="%oneapi@2022:") conflicts("@:3.5 +sycl", when="%oneapi@2022:")
tpls_variants = { tpls_variants = {

View File

@@ -0,0 +1,36 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Libfort(CMakePackage):
"""libfort is a simple crossplatform library to create formatted text tables."""
homepage = "https://github.com/seleznevae/libfort"
url = "https://github.com/seleznevae/libfort/archive/refs/tags/v0.4.2.tar.gz"
license("MIT")
version("0.4.2", sha256="8f7b03f1aa526e50c9828f09490f3c844b73d5f9ca72493fe81931746f75e489")
variant("enable_astyle", default=False, description="Enable astyle")
variant("enable_wchar", default=True, description="Enable wchar support")
variant("enable_utf8", default=True, description="Enable utf8 support")
variant("enable_testing", default=True, description="Enables building tests and examples")
variant("shared", default=False, description="Build shared library")
depends_on("cmake@3.0.0:", type="build")
def cmake_args(self):
args = [
self.define_from_variant("FORT_ENABLE_ASTYLE", "enable_astyle"),
self.define_from_variant("FORT_ENABLE_WCHAR", "enable_wchar"),
self.define_from_variant("FORT_ENABLE_UTF8", "enable_utf8"),
self.define_from_variant("FORT_ENABLE_TESTING", "enable_testing"),
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
]
return args

View File

@@ -13,9 +13,9 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage):
current "Multicore+GPU" systems. current "Multicore+GPU" systems.
""" """
homepage = "https://icl.cs.utk.edu/magma/" homepage = "https://icl.utk.edu/magma/"
git = "https://bitbucket.org/icl/magma" git = "https://bitbucket.org/icl/magma"
url = "https://icl.cs.utk.edu/projectsfiles/magma/downloads/magma-2.2.0.tar.gz" url = "https://icl.utk.edu/projectsfiles/magma/downloads/magma-2.2.0.tar.gz"
maintainers("stomov", "luszczek", "G-Ragghianti") maintainers("stomov", "luszczek", "G-Ragghianti")
tags = ["e4s"] tags = ["e4s"]
@@ -23,6 +23,7 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage):
test_requires_compiler = True test_requires_compiler = True
version("master", branch="master") version("master", branch="master")
version("2.8.0", sha256="f4e5e75350743fe57f49b615247da2cc875e5193cc90c11b43554a7c82cc4348")
version("2.7.2", sha256="729bc1a70e518a7422fe7a3a54537a4741035a77be3349f66eac5c362576d560") version("2.7.2", sha256="729bc1a70e518a7422fe7a3a54537a4741035a77be3349f66eac5c362576d560")
version("2.7.1", sha256="d9c8711c047a38cae16efde74bee2eb3333217fd2711e1e9b8606cbbb4ae1a50") version("2.7.1", sha256="d9c8711c047a38cae16efde74bee2eb3333217fd2711e1e9b8606cbbb4ae1a50")
version("2.7.0", sha256="fda1cbc4607e77cacd8feb1c0f633c5826ba200a018f647f1c5436975b39fd18") version("2.7.0", sha256="fda1cbc4607e77cacd8feb1c0f633c5826ba200a018f647f1c5436975b39fd18")
@@ -47,6 +48,10 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage):
depends_on("cuda@8:", when="@2.5.1: +cuda") # See PR #14471 depends_on("cuda@8:", when="@2.5.1: +cuda") # See PR #14471
depends_on("hipblas", when="+rocm") depends_on("hipblas", when="+rocm")
depends_on("hipsparse", when="+rocm") depends_on("hipsparse", when="+rocm")
# This ensures that rocm-core matches the hip package version in the case that
# hip is an external package.
for ver in ["5.5.0", "5.5.1", "5.6.0", "5.6.1", "5.7.0", "5.7.1", "6.0.0", "6.0.2"]:
depends_on(f"rocm-core@{ver}", when=f"@2.8.0: +rocm ^hip@{ver}")
depends_on("python", when="@master", type="build") depends_on("python", when="@master", type="build")
conflicts("~cuda", when="~rocm", msg="magma: Either CUDA or HIP support must be enabled") conflicts("~cuda", when="~rocm", msg="magma: Either CUDA or HIP support must be enabled")
@@ -150,6 +155,8 @@ def cmake_args(self):
# See https://github.com/ROCm/rocFFT/issues/322 # See https://github.com/ROCm/rocFFT/issues/322
if spec.satisfies("^cmake@3.21.0:3.21.2"): if spec.satisfies("^cmake@3.21.0:3.21.2"):
options.append(define("__skip_rocmclang", True)) options.append(define("__skip_rocmclang", True))
if spec.satisfies("@2.8.0:"):
options.append(define("ROCM_CORE", spec["rocm-core"].prefix))
else: else:
options.append(define("MAGMA_ENABLE_CUDA", True)) options.append(define("MAGMA_ENABLE_CUDA", True))

View File

@@ -15,7 +15,7 @@ def _parse_float(val):
return False return False
class NaluWind(CMakePackage, CudaPackage): class NaluWind(CMakePackage, CudaPackage, ROCmPackage):
"""Nalu-Wind: Wind energy focused variant of Nalu.""" """Nalu-Wind: Wind energy focused variant of Nalu."""
homepage = "https://nalu-wind.readthedocs.io" homepage = "https://nalu-wind.readthedocs.io"
@@ -26,6 +26,7 @@ class NaluWind(CMakePackage, CudaPackage):
tags = ["ecp", "ecp-apps"] tags = ["ecp", "ecp-apps"]
version("master", branch="master") version("master", branch="master")
version("2.0.0", tag="v2.0.0")
variant("pic", default=True, description="Position independent code") variant("pic", default=True, description="Position independent code")
variant( variant(
@@ -45,12 +46,31 @@ class NaluWind(CMakePackage, CudaPackage):
variant("hypre", default=True, description="Compile with Hypre support") variant("hypre", default=True, description="Compile with Hypre support")
variant("trilinos-solvers", default=True, description="Compile with Trilinos Solvers support") variant("trilinos-solvers", default=True, description="Compile with Trilinos Solvers support")
variant("catalyst", default=False, description="Compile with Catalyst support") variant("catalyst", default=False, description="Compile with Catalyst support")
variant("shared", default=True, description="Build shared libraries")
variant("fftw", default=False, description="Compile with FFTW support") variant("fftw", default=False, description="Compile with FFTW support")
variant("fsi", default=False, description="Enable fluid-structure-interaction models")
variant("boost", default=False, description="Enable Boost integration") variant("boost", default=False, description="Enable Boost integration")
variant("gpu-aware-mpi", default=False, description="gpu-aware-mpi")
variant("wind-utils", default=False, description="Build wind-utils") variant("wind-utils", default=False, description="Build wind-utils")
variant("umpire", default=False, description="Enable Umpire")
conflicts(
"+shared",
when="+cuda",
msg="invalid device functions are generated with shared libs and cuda",
)
conflicts(
"+shared",
when="+rocm",
msg="invalid device functions are generated with shared libs and rocm",
)
conflicts("+cuda", when="+rocm")
conflicts("+rocm", when="+cuda")
depends_on("mpi") depends_on("mpi")
depends_on("yaml-cpp@0.5.3:") depends_on("yaml-cpp@0.5.3:")
depends_on("openfast@4.0.0:+cxx+netcdf", when="+fsi")
depends_on("trilinos@13.4.1+exodus+zoltan+stk", when="@=2.0.0")
depends_on("hypre@2.29.0:", when="@2.0.0:+hypre")
depends_on( depends_on(
"trilinos@13:+exodus+tpetra+zoltan+stk~superlu-dist~superlu+hdf5+shards~hypre+gtest" "trilinos@13:+exodus+tpetra+zoltan+stk~superlu-dist~superlu+hdf5+shards~hypre+gtest"
) )
@@ -76,12 +96,42 @@ class NaluWind(CMakePackage, CudaPackage):
"hypre@develop +mpi+cuda~int64~superlu-dist cuda_arch={0}".format(_arch), "hypre@develop +mpi+cuda~int64~superlu-dist cuda_arch={0}".format(_arch),
when="+hypre+cuda cuda_arch={0}".format(_arch), when="+hypre+cuda cuda_arch={0}".format(_arch),
) )
for _arch in ROCmPackage.amdgpu_targets:
depends_on(
"trilinos@13.4.0.2022.10.27: "
"~shared+exodus+tpetra+zoltan+stk~superlu-dist~superlu"
"+hdf5+shards~hypre+gtest+rocm amdgpu_target={0}".format(_arch),
when="+rocm amdgpu_target={0}".format(_arch),
)
depends_on(
"hypre+rocm amdgpu_target={0}".format(_arch),
when="+hypre+rocm amdgpu_target={0}".format(_arch),
)
depends_on("trilinos-catalyst-ioss-adapter", when="+catalyst") depends_on("trilinos-catalyst-ioss-adapter", when="+catalyst")
depends_on("fftw+mpi", when="+fftw") depends_on("fftw+mpi", when="+fftw")
depends_on("nccmp") depends_on("nccmp")
# indirect dependency needed to make original concretizer work # indirect dependency needed to make original concretizer work
depends_on("netcdf-c+parallel-netcdf") depends_on("netcdf-c+parallel-netcdf")
depends_on("boost +filesystem +iostreams cxxstd=14", when="+boost") depends_on("boost +filesystem +iostreams cxxstd=14", when="+boost")
supported_cxxstd = ["17"]
variant(
"cxxstd", default="17", values=supported_cxxstd, multi=False, description="cxx standard"
)
for std in supported_cxxstd:
depends_on("trilinos cxxstd=%s" % std, when="cxxstd=%s" % std)
def setup_build_environment(self, env):
if "~stk_simd" in self.spec:
env.append_flags("CXXFLAGS", "-DUSE_STK_SIMD_NONE")
if "+cuda" in self.spec:
env.set("CUDA_LAUNCH_BLOCKING", "1")
env.set("CUDA_MANAGED_FORCE_DEVICE_ALLOC", "1")
env.set("OMPI_CXX", self.spec["kokkos-nvcc-wrapper"].kokkos_cxx)
env.set("MPICH_CXX", self.spec["kokkos-nvcc-wrapper"].kokkos_cxx)
env.set("MPICXX_CXX", self.spec["kokkos-nvcc-wrapper"].kokkos_cxx)
if "+rocm" in self.spec:
env.append_flags("CXXFLAGS", "-fgpu-rdc")
def cmake_args(self): def cmake_args(self):
spec = self.spec spec = self.spec
@@ -95,22 +145,26 @@ def cmake_args(self):
self.define_from_variant("ENABLE_CUDA", "cuda"), self.define_from_variant("ENABLE_CUDA", "cuda"),
self.define_from_variant("ENABLE_WIND_UTILS", "wind-utils"), self.define_from_variant("ENABLE_WIND_UTILS", "wind-utils"),
self.define_from_variant("ENABLE_BOOST", "boost"), self.define_from_variant("ENABLE_BOOST", "boost"),
self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"),
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define_from_variant("ENABLE_OPENFAST", "openfast"),
self.define_from_variant("ENABLE_TIOGA", "tioga"),
self.define_from_variant("ENABLE_HYPRE", "hypre"),
self.define_from_variant("ENABLE_TRILINOS_SOLVERS", "trilinos-solvers"),
self.define_from_variant("ENABLE_PARAVIEW_CATALYST", "catalyst"),
self.define_from_variant("ENABLE_FFTW", "fftw"),
self.define_from_variant("ENABLE_UMPIRE", "umpire"),
] ]
args.append(self.define_from_variant("ENABLE_OPENFAST", "openfast"))
if "+openfast" in spec: if "+openfast" in spec:
args.append(self.define("OpenFAST_DIR", spec["openfast"].prefix)) args.append(self.define("OpenFAST_DIR", spec["openfast"].prefix))
args.append(self.define_from_variant("ENABLE_TIOGA", "tioga"))
if "+tioga" in spec: if "+tioga" in spec:
args.append(self.define("TIOGA_DIR", spec["tioga"].prefix)) args.append(self.define("TIOGA_DIR", spec["tioga"].prefix))
args.append(self.define_from_variant("ENABLE_HYPRE", "hypre"))
if "+hypre" in spec: if "+hypre" in spec:
args.append(self.define("HYPRE_DIR", spec["hypre"].prefix)) args.append(self.define("HYPRE_DIR", spec["hypre"].prefix))
args.append(self.define_from_variant("ENABLE_TRILINOS_SOLVERS", "trilinos-solvers"))
args.append(self.define_from_variant("ENABLE_PARAVIEW_CATALYST", "catalyst"))
if "+catalyst" in spec: if "+catalyst" in spec:
args.append( args.append(
self.define( self.define(
@@ -118,7 +172,6 @@ def cmake_args(self):
) )
) )
args.append(self.define_from_variant("ENABLE_FFTW", "fftw"))
if "+fftw" in spec: if "+fftw" in spec:
args.append(self.define("FFTW_DIR", spec["fftw"].prefix)) args.append(self.define("FFTW_DIR", spec["fftw"].prefix))
@@ -131,6 +184,15 @@ def cmake_args(self):
] ]
) )
if "+umpire" in spec:
args.append(self.define("UMPIRE_DIR", spec["umpire"].prefix))
if "+rocm" in spec:
args.append(self.define("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
args.append(self.define("ENABLE_ROCM", True))
targets = spec.variants["amdgpu_target"].value
args.append(self.define("GPU_TARGETS", ";".join(str(x) for x in targets)))
if "darwin" in spec.architecture: if "darwin" in spec.architecture:
args.append(self.define("CMAKE_MACOSX_RPATH", "ON")) args.append(self.define("CMAKE_MACOSX_RPATH", "ON"))

View File

@@ -85,7 +85,6 @@ class Onednn(CMakePackage):
"tbb", "tbb",
"seq", "seq",
conditional("threadpool", when="@1.4:"), conditional("threadpool", when="@1.4:"),
conditional("dpcpp", when="@2:"),
conditional("sycl", when="@2:"), conditional("sycl", when="@2:"),
), ),
multi=False, multi=False,
@@ -94,7 +93,7 @@ class Onednn(CMakePackage):
"gpu_runtime", "gpu_runtime",
default="none", default="none",
description="Runtime to use for GPU engines", description="Runtime to use for GPU engines",
values=("ocl", "none", conditional("dpcpp", when="@2:"), conditional("sycl", when="@2:")), values=("ocl", "none", conditional("sycl", when="@2:")),
multi=False, multi=False,
) )
variant( variant(

View File

@@ -0,0 +1,17 @@
diff --git a/modules/openfast-library/src/FAST_Solver.f90 b/modules/openfast-library/src/FAST_Solver.f90
index 364d0b78..10056965 100644
--- a/modules/openfast-library/src/FAST_Solver.f90
+++ b/modules/openfast-library/src/FAST_Solver.f90
@@ -607,9 +607,9 @@ SUBROUTINE AD_InputSolve_IfW( p_FAST, u_AD, y_IfW, y_OpFM, ErrStat, ErrMsg )
end if
if (u_AD%rotors(1)%NacelleMotion%NNodes > 0) then
- u_AD%rotors(1)%InflowOnNacelle(1) = y_OpFM%u(node)
- u_AD%rotors(1)%InflowOnNacelle(2) = y_OpFM%v(node)
- u_AD%rotors(1)%InflowOnNacelle(3) = y_OpFM%w(node)
+ u_AD%rotors(1)%InflowOnNacelle(1) = y_OpFM%u(1)
+ u_AD%rotors(1)%InflowOnNacelle(2) = y_OpFM%v(1)
+ u_AD%rotors(1)%InflowOnNacelle(3) = y_OpFM%w(1)
node = node + 1
else
u_AD%rotors(1)%InflowOnNacelle = 0.0_ReKi

View File

@@ -13,6 +13,7 @@ class Openfast(CMakePackage):
git = "https://github.com/OpenFAST/openfast.git" git = "https://github.com/OpenFAST/openfast.git"
maintainers("jrood-nrel") maintainers("jrood-nrel")
patch("hub_seg_fault.patch", when="@2.7:3.2")
license("Apache-2.0") license("Apache-2.0")

View File

@@ -0,0 +1,21 @@
From 65ec5b0604576474141def0ba7f0c7b94f6b32ee Mon Sep 17 00:00:00 2001
From: Ryan Krattiger <ryan.krattiger@kitware.com>
Date: Fri, 8 Mar 2024 09:17:03 -0600
---
VTK/IO/CatalystConduit/vtk.module | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/VTK/IO/CatalystConduit/vtk.module b/VTK/IO/CatalystConduit/vtk.module
index c67f5a099d5..18e706e8c9f 100644
--- a/VTK/IO/CatalystConduit/vtk.module
+++ b/VTK/IO/CatalystConduit/vtk.module
@@ -5,7 +5,7 @@ LIBRARY_NAME
DESCRIPTION
Catalyst implementation for VTK, including Conduit to/from VTK conversion.
KIT
- VTK::IO
+ VTK::Parallel
SPDX_LICENSE_IDENTIFIER
BSD-3-Clause
SPDX_COPYRIGHT_TEXT

View File

@@ -31,13 +31,11 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage):
version("master", branch="master", submodules=True) version("master", branch="master", submodules=True)
version( version(
"5.12.0-RC3", sha256="6aaa46ff295126707294482e6ba24bd0ec0d68cf6bb5f56f145f8bcc53fc3f70" "5.12.0",
) sha256="d289afe7b48533e2ca4a39a3b48d3874bfe67cf7f37fdd2131271c57e64de20d",
version(
"5.11.2",
sha256="5c5d2f922f30d91feefc43b4a729015dbb1459f54c938896c123d2ac289c7a1e",
preferred=True, preferred=True,
) )
version("5.11.2", sha256="5c5d2f922f30d91feefc43b4a729015dbb1459f54c938896c123d2ac289c7a1e")
version("5.11.1", sha256="5cc2209f7fa37cd3155d199ff6c3590620c12ca4da732ef7698dec37fa8dbb34") version("5.11.1", sha256="5cc2209f7fa37cd3155d199ff6c3590620c12ca4da732ef7698dec37fa8dbb34")
version("5.11.0", sha256="9a0b8fe8b1a2cdfd0ace9a87fa87e0ec21ee0f6f0bcb1fdde050f4f585a25165") version("5.11.0", sha256="9a0b8fe8b1a2cdfd0ace9a87fa87e0ec21ee0f6f0bcb1fdde050f4f585a25165")
version("5.10.1", sha256="520e3cdfba4f8592be477314c2f6c37ec73fb1d5b25ac30bdbd1c5214758b9c2") version("5.10.1", sha256="520e3cdfba4f8592be477314c2f6c37ec73fb1d5b25ac30bdbd1c5214758b9c2")
@@ -319,6 +317,8 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage):
patch("exodusII-netcdf4.9.0.patch", when="@5.10.0:5.10.2") patch("exodusII-netcdf4.9.0.patch", when="@5.10.0:5.10.2")
patch("kits_with_catalyst_5_12.patch", when="@5.12.0")
generator("ninja", "make", default="ninja") generator("ninja", "make", default="ninja")
# https://gitlab.kitware.com/paraview/paraview/-/issues/21223 # https://gitlab.kitware.com/paraview/paraview/-/issues/21223
conflicts("generator=ninja", when="%xl") conflicts("generator=ninja", when="%xl")

View File

@@ -0,0 +1,75 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Parthenon(CMakePackage):
"""A performance portable block-structured adaptive mesh refinement framework."""
homepage = "https://github.com/parthenon-hpc-lab/parthenon"
git = "https://github.com/parthenon-hpc-lab/parthenon.git"
url = "https://github.com/parthenon-hpc-lab/parthenon/archive/v0.8.0.tar.gz"
maintainers("pbrady", "pgrete")
version("develop", branch="develop")
version("24.03", sha256="ec9109c6bf442237641e627f301567527eb5e756b6959b6747d35315d041727c")
version("23.11", sha256="76f79fb7d6556d94052829a8ac71f53cbda76f37fabd9233c5c0cd47ef561aee")
version("0.8.0", sha256="9ed7c9ebdc84927a43b86c1e061f925b57cef9b567c7275f22779ed4d98e858d")
# ------------------------------------------------------------#
# Variants
# ------------------------------------------------------------#
variant("single", default=False, description="Run in single precision")
variant("mpi", default=True, description="Enable mpi")
variant(
"host_comm_buffers", default=False, description="Allocate communication buffers on host"
)
variant("hdf5", default=True, description="Enable hdf5")
with when("+hdf5"):
variant(
"compression",
default=True,
description="Enable compression in hdf5 output/restart files",
)
variant("sparse", default=True, description="Sparse capability")
variant("ascent", default=False, description="Enable Ascent for in-situ vis and analysis")
variant("examples", default=False, description="Build example drivers")
variant("python", default=False, description="Enable python for testing")
variant(
"pressure", default=False, description="Registry pressure check for Kokkos CUDA kernels"
)
# ------------------------------------------------------------#
# Dependencies
# ------------------------------------------------------------#
depends_on("cmake@3.16:", type="build")
depends_on("mpi", when="+mpi")
depends_on("hdf5", when="+hdf5")
depends_on("hdf5 +mpi", when="+mpi +hdf5")
depends_on("ascent", when="+ascent")
depends_on("python@3.5:", when="+python")
depends_on("kokkos@4:")
def cmake_args(self):
spec = self.spec
return [
self.define("PARTHENON_IMPORT_KOKKOS", True),
self.define_from_variant("PARTHENON_SINGLE_PRECISION", "single"),
self.define_from_variant("PARTHENON_ENABLE_HOST_COMM_BUFFERS", "host_comm_buffers"),
self.define_from_variant("CHECK_REGISTRY_PRESSURE", "pressure"),
self.define_from_variant("PARTHENON_ENABLE_ASCENT", "ascent"),
self.define("PARTHENON_DISABLE_MPI", not spec.variants["mpi"].value),
self.define("PARTHENON_DISABLE_HDF5", not spec.variants["hdf5"].value),
self.define(
"PARTHENON_DISABLE_HDF5_COMPRESSION", not spec.variants["compression"].value
),
self.define("PARTHENON_DISABLE_SPARSE", not spec.variants["sparse"].value),
self.define("PARTHENON_DISABLE_EXAMPLES", not spec.variants["examples"].value),
self.define("BUILD_TESTING", self.run_tests),
]

View File

@@ -23,6 +23,7 @@ class Precice(CMakePackage):
license("LGPL-3.0-or-later") license("LGPL-3.0-or-later")
version("develop", branch="develop") version("develop", branch="develop")
version("3.1.0", sha256="11e7d3d4055ee30852c0e83692ca7563acaa095bd223ebdbd5c8c851b3646d37")
version("3.0.0", sha256="efe6cf505d9305af89c6da1fdba246199a75a1c63a6a22103773ed95341879ba") version("3.0.0", sha256="efe6cf505d9305af89c6da1fdba246199a75a1c63a6a22103773ed95341879ba")
version("2.5.1", sha256="a5a37d3430eac395e885eb9cbbed9d0980a15e96c3e44763a3769fa7301e3b3a") version("2.5.1", sha256="a5a37d3430eac395e885eb9cbbed9d0980a15e96c3e44763a3769fa7301e3b3a")
version("2.5.0", sha256="76ec6ee0d1a66f6f3d3d2d11f03cfc5aa7ef4d9e5deb9b7a4b4455ec7f796c00") version("2.5.0", sha256="76ec6ee0d1a66f6f3d3d2d11f03cfc5aa7ef4d9e5deb9b7a4b4455ec7f796c00")
@@ -71,7 +72,8 @@ class Precice(CMakePackage):
depends_on("pkgconfig", type="build", when="@2.2:") depends_on("pkgconfig", type="build", when="@2.2:")
# Boost components # Boost components
depends_on("boost+filesystem+log+program_options+system+test+thread") depends_on("boost+log+program_options+system+test+thread")
depends_on("boost+filesystem", when="@:3.0.0")
depends_on("boost+signals", when="@:2.3") depends_on("boost+signals", when="@:2.3")
# Baseline versions # Baseline versions

View File

@@ -13,12 +13,20 @@ class PyAmqp(PythonPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("5.2.0", sha256="a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd")
version("5.1.1", sha256="2c1b13fecc0893e946c65cbd5f36427861cffa4ea2201d8f6fca22e2a373b5e2")
version("5.0.9", sha256="1e5f707424e544078ca196e72ae6a14887ce74e02bd126be54b7c03c971bef18") version("5.0.9", sha256="1e5f707424e544078ca196e72ae6a14887ce74e02bd126be54b7c03c971bef18")
version("5.0.6", sha256="03e16e94f2b34c31f8bf1206d8ddd3ccaa4c315f7f6a1879b7b1210d229568c2")
version("5.0.1", sha256="9881f8e6fe23e3db9faa6cfd8c05390213e1d1b95c0162bc50552cad75bffa5f") version("5.0.1", sha256="9881f8e6fe23e3db9faa6cfd8c05390213e1d1b95c0162bc50552cad75bffa5f")
version("5.0.0", sha256="1183b66e54a5c533b679d9f557b31c5b31d26701761f2bbd144054cce58f3588")
version("2.6.1", sha256="70cdb10628468ff14e57ec2f751c7aa9e48e7e3651cfd62d431213c0c4e58f21") version("2.6.1", sha256="70cdb10628468ff14e57ec2f751c7aa9e48e7e3651cfd62d431213c0c4e58f21")
version("2.6.0", sha256="24dbaff8ce4f30566bb88976b398e8c4e77637171af3af6f1b9650f48890e60b")
version("2.5.2", sha256="77f1aef9410698d20eaeac5b73a87817365f457a507d82edf292e12cbb83b08d") version("2.5.2", sha256="77f1aef9410698d20eaeac5b73a87817365f457a507d82edf292e12cbb83b08d")
version("2.5.1", sha256="19a917e260178b8d410122712bac69cb3e6db010d68f6101e7307508aded5e68")
version("2.5.0", sha256="cbb6f87d53cac612a594f982b717cc1c54c6a1e17943a0a0d32dc6cc9e2120c8")
version("2.4.2", sha256="043beb485774ca69718a35602089e524f87168268f0d1ae115f28b88d27f92d7") version("2.4.2", sha256="043beb485774ca69718a35602089e524f87168268f0d1ae115f28b88d27f92d7")
version("2.4.1", sha256="6816eed27521293ee03aa9ace300a07215b11fee4e845588a9b863a7ba30addb") version("2.4.1", sha256="6816eed27521293ee03aa9ace300a07215b11fee4e845588a9b863a7ba30addb")
version("2.4.0", sha256="9f181e4aef6562e6f9f45660578fc1556150ca06e836ecb9e733e6ea10b48464")
depends_on("python@2.7:2.8,3.5:", type=("build", "run")) depends_on("python@2.7:2.8,3.5:", type=("build", "run"))
depends_on("python@3.6:", type=("build", "run"), when="@5.0.9:") depends_on("python@3.6:", type=("build", "run"), when="@5.0.9:")

View File

@@ -13,6 +13,7 @@ class PyBilliard(PythonPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("4.2.0", sha256="9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c")
version("3.6.4.0", sha256="299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547") version("3.6.4.0", sha256="299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547")
version("3.6.3.0", sha256="d91725ce6425f33a97dfa72fb6bfef0e47d4652acd98a032bd1a7fbf06d5fa6a") version("3.6.3.0", sha256="d91725ce6425f33a97dfa72fb6bfef0e47d4652acd98a032bd1a7fbf06d5fa6a")
version("3.6.1.0", sha256="b8809c74f648dfe69b973c8e660bcec00603758c9db8ba89d7719f88d5f01f26") version("3.6.1.0", sha256="b8809c74f648dfe69b973c8e660bcec00603758c9db8ba89d7719f88d5f01f26")

View File

@@ -9,10 +9,11 @@
class PyCelery(PythonPackage): class PyCelery(PythonPackage):
"""Celery - Distributed Task Queue.""" """Celery - Distributed Task Queue."""
pypi = "celery/celery-4.2.1.tar.gz" pypi = "celery/celery-5.3.6.tar.gz"
license("BSD-3-Clause") license("BSD-3-Clause")
version("5.3.6", sha256="870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9")
version("5.2.3", sha256="e2cd41667ad97d4f6a2f4672d1c6a6ebada194c619253058b5f23704aaadaa82") version("5.2.3", sha256="e2cd41667ad97d4f6a2f4672d1c6a6ebada194c619253058b5f23704aaadaa82")
version("5.0.0", sha256="313930fddde703d8e37029a304bf91429cd11aeef63c57de6daca9d958e1f255") version("5.0.0", sha256="313930fddde703d8e37029a304bf91429cd11aeef63c57de6daca9d958e1f255")
version("4.4.7", sha256="d220b13a8ed57c78149acf82c006785356071844afe0b27012a4991d44026f9f") version("4.4.7", sha256="d220b13a8ed57c78149acf82c006785356071844afe0b27012a4991d44026f9f")
@@ -53,24 +54,34 @@ class PyCelery(PythonPackage):
depends_on("python@2.7:2.8,3.4:", type=("build", "run")) depends_on("python@2.7:2.8,3.4:", type=("build", "run"))
depends_on("py-setuptools", type=("build", "run")) depends_on("py-setuptools", type=("build", "run"))
depends_on("py-setuptools@59.1.1:59.6", type=("build", "run"), when="@5.2.3:") depends_on("py-setuptools@59.1.1:59.6", type=("build", "run"), when="@5.2.3:5.2.4")
depends_on("py-redis@3.2.0:", when="+redis", type=("build", "run")) depends_on("py-redis@3.2.0:", when="+redis", type=("build", "run"))
depends_on("py-redis@3.4.1:3,4.0.2:", when="@5.2.3:+redis", type=("build", "run")) depends_on("py-redis@3.4.1:3,4.0.2:", when="@5.2.3:+redis", type=("build", "run"))
depends_on("py-sqlalchemy", when="+sqlalchemy", type=("build", "run")) depends_on("py-sqlalchemy", when="+sqlalchemy", type=("build", "run"))
depends_on("py-click@7.0:7", when="@5.0.0:5.0", type=("build", "run")) depends_on("py-click@7.0:7", when="@5.0.0:5.0", type=("build", "run"))
depends_on("py-click@8.0.3:8", when="@5.2.0:", type=("build", "run")) depends_on("py-click@8.0.3:8", when="@5.2", type=("build", "run"))
depends_on("py-click@8.1.2:", when="@5.3:", type=("build", "run"))
depends_on("py-click-didyoumean@0.0.3:", when="@5.0.0:5", type=("build", "run")) depends_on("py-click-didyoumean@0.0.3:", when="@5.0.0:5", type=("build", "run"))
depends_on("py-click-plugins@1.1.1:", when="@5.0.3:", type=("build", "run")) depends_on("py-click-plugins@1.1.1:", when="@5.0.3:", type=("build", "run"))
depends_on("py-click-repl@:0.1.6", when="@5.0.0:5.0", type=("build", "run")) depends_on("py-click-repl@:0.1.6", when="@5.0.0:5.0", type=("build", "run"))
depends_on("py-click-repl@0.2.0:", when="@5.2.0:", type=("build", "run")) depends_on("py-click-repl@0.2.0:", when="@5.2.0:", type=("build", "run"))
depends_on("py-pytz@2019.3:", type=("build", "run")) depends_on("py-pytz@2019.3:", type=("build", "run"), when="@:5.2")
depends_on("py-pytz@2021.3:", type=("build", "run"), when="@5.2.3") depends_on("py-pytz@2021.3:", type=("build", "run"), when="@5.2.3:5.2.99")
depends_on("py-billiard@3.6.3.0:3", type=("build", "run")) depends_on("py-billiard@3.6.3", type=("build", "run"), when="@:5.0.99")
depends_on("py-billiard@3.6.4.0:3", type=("build", "run"), when="@5.2.3") depends_on("py-billiard@3.6.4.0:3.99", type=("build", "run"), when="@5.1.0:5.2")
depends_on("py-billiard@4.2.0:5.0", type=("build", "run"), when="@5.3.0:")
depends_on("py-kombu@4.6.11", when="@4.3.0:4", type=("build", "run")) depends_on("py-kombu@4.6.11", when="@4.3.0:4", type=("build", "run"))
depends_on("py-kombu@5.0.0:", when="@5.0.0:5.0", type=("build", "run")) depends_on("py-kombu@5.0.0:", when="@5.0", type=("build", "run"))
depends_on("py-kombu@5.2.3:5", when="@5.2.0:5.2", type=("build", "run")) depends_on("py-kombu@5.1.0:", when="@5.1", type=("build", "run"))
depends_on("py-kombu@5.2.1", when="@5.2.0", type=("build", "run"))
depends_on("py-kombu@5.2.2", when="@5.2.1:5.2.2", type=("build", "run"))
depends_on("py-kombu@5.2.3", when="@5.2.3:5.2.99", type=("build", "run"))
depends_on("py-kombu@5.3.0", when="@5.3.0", type=("build", "run"))
depends_on("py-kombu@5.3.1", when="@5.3.1", type=("build", "run"))
depends_on("py-kombu@5.3.2", when="@5.3.4", type=("build", "run"))
depends_on("py-kombu@5.3.3", when="@5.3.5", type=("build", "run"))
depends_on("py-kombu@5.3.4:5.3.5", when="@5.3.6", type=("build", "run"))
depends_on("py-vine@1.3.0", when="@4.3.0:4", type=("build", "run")) depends_on("py-vine@1.3.0", when="@4.3.0:4", type=("build", "run"))
depends_on("py-vine@5.0.0:5", when="@5.0.0:5", type=("build", "run")) depends_on("py-vine@5.0.0:5", when="@5.0.0:5", type=("build", "run"))

View File

@@ -30,6 +30,7 @@ class PyCigPythia(AutotoolsPackage, PythonExtension):
depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpi")
depends_on("python@3.8:") depends_on("python@3.8:")
depends_on("py-pip") depends_on("py-pip")
depends_on("py-setuptools")
def configure_args(self): def configure_args(self):
spec = self.spec spec = self.spec

View File

@@ -20,22 +20,32 @@ class PyDeephyper(PythonPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("master", branch="master") version("master", branch="master")
version("0.6.0", sha256="cda2dd7c74bdca4203d9cd637c4f441595f77bae6d77ef8e4a056b005357de34")
version("0.4.2", sha256="ee1811a22b08eff3c9098f63fbbb37f7c8703e2f878f2bdf2ec35a978512867f") version("0.4.2", sha256="ee1811a22b08eff3c9098f63fbbb37f7c8703e2f878f2bdf2ec35a978512867f")
depends_on("python@3.7:3.9", type=("build", "run")) depends_on("python@3.7:3.9", type=("build", "run"))
depends_on("python@3.7:3.11", type=("build", "run"), when="@0.6.0")
depends_on("py-setuptools@42:", type="build", when="@0.6.0")
depends_on("py-setuptools@40:49.1", type="build") depends_on("py-setuptools@40:49.1", type="build")
depends_on("py-wheel@0.36.2", type="build") depends_on("py-wheel@0.36.2", type="build")
depends_on("py-cython@0.29.24:2", type="build") depends_on("py-cython@0.29.24:", type="build", when="@0.6.0")
depends_on("py-cython@0.29.24:2", type="build", when="@0.4.2")
depends_on("py-configspace@0.4.20:", type=("build", "run")) depends_on("py-configspace@0.4.20:", type=("build", "run"))
depends_on("py-dm-tree", type=("build", "run")) depends_on("py-dm-tree", type=("build", "run"))
depends_on("py-jinja2@:3.0", type=("build", "run")) depends_on("py-jinja2@:3.1", type=("build", "run"), when="@0.6.0")
depends_on("py-jinja2@:3.0", type=("build", "run"), when="@0.4.2")
depends_on("py-numpy@1.20:", type=("build", "run"), when="@0.6.0")
depends_on("py-numpy", type=("build", "run")) depends_on("py-numpy", type=("build", "run"))
depends_on("py-pandas@0.24.2:", type=("build", "run")) depends_on("py-pandas@0.24.2:", type=("build", "run"))
depends_on("py-packaging", type=("build", "run")) depends_on("py-packaging", type=("build", "run"))
depends_on(
"py-packaging@20.5:", type=("build", "run"), when="@0.6.0 target=aarch64: platform=darwin"
)
depends_on("py-scikit-learn@0.23.1:", type=("build", "run")) depends_on("py-scikit-learn@0.23.1:", type=("build", "run"))
depends_on("py-scipy@1.7:", type=("build", "run"), when="@0.6.0")
depends_on("py-scipy@0.19.1:", type=("build", "run")) depends_on("py-scipy@0.19.1:", type=("build", "run"))
depends_on("py-tqdm@4.64.0:", type=("build", "run")) depends_on("py-tqdm@4.64.0:", type=("build", "run"))
depends_on("py-pyyaml", type=("build", "run")) depends_on("py-pyyaml", type=("build", "run"))
depends_on("py-tinydb", type=("build", "run")) depends_on("py-tinydb", type=("build", "run"), when="@0.4.2")

View File

@@ -13,7 +13,17 @@ class PyKombu(PythonPackage):
license("BSD-3-Clause") license("BSD-3-Clause")
version("5.3.5", sha256="30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93")
version("5.3.4", sha256="0bb2e278644d11dea6272c17974a3dbb9688a949f3bb60aeb5b791329c44fadc")
version("5.3.3", sha256="1491df826cfc5178c80f3e89dd6dfba68e484ef334db81070eb5cb8094b31167")
version("5.3.2", sha256="0ba213f630a2cb2772728aef56ac6883dc3a2f13435e10048f6e97d48506dbbd")
version("5.3.1", sha256="fbd7572d92c0bf71c112a6b45163153dea5a7b6a701ec16b568c27d0fd2370f2")
version("5.3.0", sha256="d084ec1f96f7a7c37ba9e816823bdbc08f0fc7ddb3a5be555805e692102297d8")
version("5.2.4", sha256="37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610")
version("5.2.3", sha256="81a90c1de97e08d3db37dbf163eaaf667445e1068c98bfd89f051a40e9f6dbbd") version("5.2.3", sha256="81a90c1de97e08d3db37dbf163eaaf667445e1068c98bfd89f051a40e9f6dbbd")
version("5.2.2", sha256="0f5d0763fb916808f617b886697b2be28e6bc35026f08e679697fc814b48a608")
version("5.2.1", sha256="f262a2adc71b53e5b7dad4933bbdee65d8766ca4df6a9043b13edaad2144aaec")
version("5.1.0", sha256="01481d99f4606f6939cdc9b637264ed353ee9e3e4f62cfb582324142c41a572d")
version("5.0.2", sha256="f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c") version("5.0.2", sha256="f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c")
version("4.6.11", sha256="ca1b45faac8c0b18493d02a8571792f3c40291cf2bcf1f55afed3d8f3aa7ba74") version("4.6.11", sha256="ca1b45faac8c0b18493d02a8571792f3c40291cf2bcf1f55afed3d8f3aa7ba74")
version("4.6.6", sha256="1760b54b1d15a547c9a26d3598a1c8cdaf2436386ac1f5561934bc8a3cbbbd86") version("4.6.6", sha256="1760b54b1d15a547c9a26d3598a1c8cdaf2436386ac1f5561934bc8a3cbbbd86")
@@ -26,15 +36,19 @@ class PyKombu(PythonPackage):
variant("redis", default=False, description="Use redis transport") variant("redis", default=False, description="Use redis transport")
depends_on("py-setuptools", type="build") depends_on("py-setuptools", type="build")
# "pytz>dev" in tests_require: setuptools parser changed in v60 and errors. depends_on("py-amqp@2.4", when="@4.3.0:4.5.0", type=("build", "run"))
depends_on("py-setuptools@:59", when="@4.6:5.2", type="build") depends_on("py-amqp@2.5.0", when="@4.6.0:4.6.3", type=("build", "run"))
depends_on("py-amqp@2.5.1", when="@4.6.4:4.6.5", type=("build", "run"))
depends_on("py-amqp@2.5.2:2.5.99", when="@4.6.6:4.6.8", type=("build", "run"))
depends_on("py-amqp@2.6.0:2.99", when="@4.6.9:5.0.1", type=("build", "run"))
depends_on("py-amqp@5.0.0:5.0.5", when="@5.0.2:5.0.99", type=("build", "run"))
depends_on("py-amqp@5.0.6:5.0.8", when="@5.1.0:5.2.2", type=("build", "run"))
depends_on("py-amqp@5.0.9:5.1.0", when="@5.2.3:5.2.4", type=("build", "run"))
depends_on("py-amqp@5.1.1:5.1.99", when="@5.3.0:5.3.5", type=("build", "run"))
depends_on("py-amqp@2.5.2:2.5", when="@:4.6.6", type=("build", "run"))
depends_on("py-amqp@2.6.0:2.6", when="@4.6.7:4", type=("build", "run"))
depends_on("py-amqp@5.0.0:5", when="@5.0.0:5.0.2", type=("build", "run"))
depends_on("py-amqp@5.0.9:5.0", when="@5.2.3", type=("build", "run"))
depends_on("py-vine", when="@5.1.0:", type=("build", "run")) depends_on("py-vine", when="@5.1.0:", type=("build", "run"))
depends_on("py-importlib-metadata@0.18:", type=("build", "run"), when="^python@:3.7") depends_on("py-importlib-metadata@0.18:", type=("build", "run"), when="^python@:3.7")
depends_on("py-cached-property", type=("build", "run"), when="^python@:3.7") depends_on("py-cached-property", type=("build", "run"), when="^python@:3.7")
depends_on("py-redis@3.4.1:3,4.0.2:", when="+redis", type=("build", "run")) depends_on("py-redis@3.4.1:3,4.0.2:", when="+redis", type=("build", "run"))
depends_on("py-backports-zoneinfo@0.2.1:", when="^python@:3.8", type=("build", "run"))

View File

@@ -16,8 +16,6 @@ class PyPillowSimd(PyPillowBase):
homepage = "https://github.com/uploadcare/pillow-simd" homepage = "https://github.com/uploadcare/pillow-simd"
pypi = "Pillow-SIMD/Pillow-SIMD-7.0.0.post3.tar.gz" pypi = "Pillow-SIMD/Pillow-SIMD-7.0.0.post3.tar.gz"
license("HPND")
version( version(
"9.0.0.post1", sha256="918541cfaa90ba3c0e1bae5da31ba1b1f52b09c0009bd90183b787af4e018263" "9.0.0.post1", sha256="918541cfaa90ba3c0e1bae5da31ba1b1f52b09c0009bd90183b787af4e018263"
) )

View File

@@ -10,11 +10,11 @@ class PyPillowBase(PythonPackage):
"""Base class for Pillow and its fork Pillow-SIMD.""" """Base class for Pillow and its fork Pillow-SIMD."""
maintainers("adamjstewart") maintainers("adamjstewart")
license("HPND")
provides("pil") provides("pil")
# These defaults correspond to Pillow defaults # These defaults correspond to Pillow defaults
# https://pillow.readthedocs.io/en/stable/installation.html#external-libraries # https://pillow.readthedocs.io/en/stable/installation/building-from-source.html
VARIANTS_IN_SETUP_CFG = ( VARIANTS_IN_SETUP_CFG = (
"zlib", "zlib",
"jpeg", "jpeg",
@@ -40,18 +40,24 @@ class PyPillowBase(PythonPackage):
variant("raqm", when="@8.2:", default=False, description="RAQM support") variant("raqm", when="@8.2:", default=False, description="RAQM support")
# Required dependencies # Required dependencies
# https://pillow.readthedocs.io/en/latest/installation.html#python-support # https://pillow.readthedocs.io/en/stable/installation/python-support.html
depends_on("python@3.8:3.11", when="@10:", type=("build", "link", "run")) with default_args(type=("build", "link", "run")):
depends_on("python@3.7:3.11", when="@9.3:9.5", type=("build", "link", "run")) depends_on("python@3.8:3.12", when="@10.1:")
depends_on("python@3.7:3.10", when="@9.0:9.2", type=("build", "link", "run")) depends_on("python@3.8:3.11", when="@10.0")
depends_on("python@3.6:3.10", when="@8.3.2:8.4", type=("build", "link", "run")) depends_on("python@3.7:3.11", when="@9.3:9.5")
depends_on("python@3.6:3.9", when="@8:8.3.1", type=("build", "link", "run")) depends_on("python@3.7:3.10", when="@9.0:9.2")
depends_on("python@3.5:3.8", when="@7.0:7.2", type=("build", "link", "run")) depends_on("python@3.6:3.10", when="@8.3.2:8.4")
depends_on("python@2.7:2.8,3.5:3.8", when="@6.2.1:6.2.2", type=("build", "link", "run")) depends_on("python@3.6:3.9", when="@8:8.3.1")
depends_on("py-setuptools", type="build") depends_on("python@3.5:3.8", when="@7.0:7.2")
depends_on("python@2.7:2.8,3.5:3.8", when="@6.2.1:6.2.2")
# pyproject.toml
with default_args(type="build"):
depends_on("py-setuptools@67.8:", when="@10:")
depends_on("py-setuptools")
# Optional dependencies # Optional dependencies
# https://pillow.readthedocs.io/en/latest/installation.html#external-libraries # https://pillow.readthedocs.io/en/stable/installation/building-from-source.html
depends_on("zlib-api", when="+zlib") depends_on("zlib-api", when="+zlib")
depends_on("jpeg", when="+jpeg") depends_on("jpeg", when="+jpeg")
depends_on("libtiff", when="+tiff") depends_on("libtiff", when="+tiff")
@@ -95,7 +101,7 @@ def variant_to_cfg(variant):
setup.write("[install]\n") setup.write("[install]\n")
def setup_build_environment(self, env): def setup_build_environment(self, env):
env.set("MAX_CONCURRENCY", str(make_jobs)) env.set("MAX_CONCURRENCY", make_jobs)
class PyPillow(PyPillowBase): class PyPillow(PyPillowBase):
@@ -105,10 +111,12 @@ class PyPillow(PyPillowBase):
capabilities.""" capabilities."""
homepage = "https://python-pillow.org/" homepage = "https://python-pillow.org/"
pypi = "Pillow/Pillow-7.2.0.tar.gz" pypi = "pillow/pillow-10.2.0.tar.gz"
license("HPND")
version("10.3.0", sha256="9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d")
version("10.2.0", sha256="e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e")
version("10.1.0", sha256="e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38")
version("10.0.1", sha256="d72967b06be9300fed5cfbc8b5bafceec48bf7cdc7dab66b1d2549035287191d")
version("10.0.0", sha256="9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396") version("10.0.0", sha256="9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396")
version("9.5.0", sha256="bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1") version("9.5.0", sha256="bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1")
version("9.4.0", sha256="a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e") version("9.4.0", sha256="a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e")
@@ -126,6 +134,10 @@ class PyPillow(PyPillowBase):
version("6.2.1", sha256="bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1") version("6.2.1", sha256="bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1")
for ver in [ for ver in [
"10.3.0",
"10.2.0",
"10.1.0",
"10.0.1",
"10.0.0", "10.0.0",
"9.5.0", "9.5.0",
"9.4.0", "9.4.0",
@@ -143,3 +155,11 @@ class PyPillow(PyPillowBase):
"6.2.1", "6.2.1",
]: ]:
provides("pil@" + ver, when="@" + ver) provides("pil@" + ver, when="@" + ver)
def url_for_version(self, version):
url = "https://files.pythonhosted.org/packages/source/{0}/{0}illow/{0}illow-{1}.tar.gz"
if version >= Version("10.2"):
letter = "p"
else:
letter = "P"
return url.format(letter, version)

View File

@@ -2,8 +2,8 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details. # Spack Project Developers. See the top-level COPYRIGHT file for details.
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os import os
import sys
from spack.package import * from spack.package import *
@@ -44,6 +44,15 @@ class PyPip(Package, PythonExtension):
# Uses collections.MutableMapping # Uses collections.MutableMapping
depends_on("python@:3.9", when="@:19.1", type=("build", "run")) depends_on("python@:3.9", when="@:19.1", type=("build", "run"))
resource(
name="pip-bootstrap",
url="https://bootstrap.pypa.io/pip/zipapp/pip-22.3.1.pyz",
checksum="c9363c70ad91d463f9492a8a2c89f60068f86b0239bd2a6aa77367aab5fefb3e",
when="platform=windows",
placement={"pip-22.3.1.pyz": "pip.pyz"},
expand=False,
)
def url_for_version(self, version): def url_for_version(self, version):
url = "https://files.pythonhosted.org/packages/{0}/p/pip/pip-{1}-{0}-none-any.whl" url = "https://files.pythonhosted.org/packages/{0}/p/pip/pip-{1}-{0}-none-any.whl"
if version >= Version("21"): if version >= Version("21"):
@@ -58,7 +67,14 @@ def install(self, spec, prefix):
# itself, see: # itself, see:
# https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306 # https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306
whl = self.stage.archive_file whl = self.stage.archive_file
args = [os.path.join(whl, "pip")] + std_pip_args + ["--prefix=" + prefix, whl] args = std_pip_args + ["--prefix=" + prefix, whl]
if sys.platform == "win32":
# On Windows for newer versions of pip, you must bootstrap pip first.
# In order to achieve this, use the pip.pyz zipapp version of pip to
# bootstrap the pip wheel install.
args.insert(0, os.path.join(self.stage.source_path, "pip.pyz"))
else:
args.insert(0, os.path.join(whl, "pip"))
python(*args) python(*args)
def setup_dependent_package(self, module, dependent_spec): def setup_dependent_package(self, module, dependent_spec):

View File

@@ -13,7 +13,9 @@ class PyRarfile(PythonPackage):
pypi = "rarfile/rarfile-4.0.tar.gz" pypi = "rarfile/rarfile-4.0.tar.gz"
license("ISC") license("ISC")
maintainers("adamjstewart")
version("4.2", sha256="8e1c8e72d0845ad2b32a47ab11a719bc2e41165ec101fd4d3fe9e92aa3f469ef")
version("4.1", sha256="db60b3b5bc1c4bdeb941427d50b606d51df677353385255583847639473eda48") version("4.1", sha256="db60b3b5bc1c4bdeb941427d50b606d51df677353385255583847639473eda48")
version("4.0", sha256="67548769229c5bda0827c1663dce3f54644f9dbfba4ae86d4da2b2afd3e602a1") version("4.0", sha256="67548769229c5bda0827c1663dce3f54644f9dbfba4ae86d4da2b2afd3e602a1")

View File

@@ -14,6 +14,9 @@ class PyScikitImage(PythonPackage):
pypi = "scikit-image/scikit_image-0.17.2.tar.gz" pypi = "scikit-image/scikit_image-0.17.2.tar.gz"
git = "https://github.com/scikit-image/scikit-image.git" git = "https://github.com/scikit-image/scikit-image.git"
maintainers("adamjstewart")
license("BSD-3-Clause")
skip_modules = [ skip_modules = [
# Requires pytest # Requires pytest
"skimage.filters.rank.tests", "skimage.filters.rank.tests",
@@ -21,6 +24,8 @@ class PyScikitImage(PythonPackage):
"skimage.future.graph", "skimage.future.graph",
] ]
version("0.22.0", sha256="018d734df1d2da2719087d15f679d19285fce97cd37695103deadfaef2873236")
version("0.21.0", sha256="b33e823c54e6f11873ea390ee49ef832b82b9f70752c8759efd09d5a4e3d87f0")
version("0.20.0", sha256="2cd784fce18bd31d71ade62c6221440199ead03acf7544086261ee032264cf61") version("0.20.0", sha256="2cd784fce18bd31d71ade62c6221440199ead03acf7544086261ee032264cf61")
version("0.19.3", sha256="24b5367de1762da6ee126dd8f30cc4e7efda474e0d7d70685433f0e3aa2ec450") version("0.19.3", sha256="24b5367de1762da6ee126dd8f30cc4e7efda474e0d7d70685433f0e3aa2ec450")
version("0.18.3", sha256="ecae99f93f4c5e9b1bf34959f4dc596c41f2f6b2fc407d9d9ddf85aebd3137ca") version("0.18.3", sha256="ecae99f93f4c5e9b1bf34959f4dc596c41f2f6b2fc407d9d9ddf85aebd3137ca")
@@ -36,67 +41,83 @@ class PyScikitImage(PythonPackage):
# @0.14:0.17 from requirements/build.txt, requirements/default.txt # @0.14:0.17 from requirements/build.txt, requirements/default.txt
# @:0.13 from requirements.txt, DEPENDS.txt # @:0.13 from requirements.txt, DEPENDS.txt
depends_on("python@3.8:", when="@0.20:", type=("build", "link", "run")) with default_args(type=("build", "run")):
depends_on("python@3.9:", when="@0.22:")
depends_on("py-numpy@1.21.1:", when="@0.20:", type=("build", "link", "run")) with default_args(type=("build", "link", "run")):
depends_on("py-numpy@1.17,1.18.1:", when="@0.19", type=("build", "link", "run")) depends_on("py-numpy@1.22:", when="@0.22:")
depends_on("py-numpy@1.16.5:1.17,1.18.1:", when="@0.18", type=("build", "link", "run")) depends_on("py-numpy@1.21.1:", when="@0.20:")
depends_on("py-numpy@1.15.1:1.17,1.18.1:", when="@0.17", type=("build", "link", "run")) depends_on("py-numpy@1.17,1.18.1:", when="@0.19")
depends_on("py-numpy@1.14.1:", when="@0.16", type=("build", "link", "run")) depends_on("py-numpy@1.16.5:1.17,1.18.1:", when="@0.18")
depends_on("py-numpy@1.11:", when="@0.13:0.15", type=("build", "link", "run")) depends_on("py-numpy@1.15.1:1.17,1.18.1:", when="@0.17")
depends_on("py-numpy@1.7.2:", when="@:0.12", type=("build", "run")) depends_on("py-numpy@1.14.1:", when="@0.16")
depends_on("py-scipy@1.8:", when="@0.20:", type=("build", "run")) depends_on("py-numpy@1.11:", when="@0.13:0.15")
depends_on("py-scipy@1.4.1:", when="@0.19:", type=("build", "run")) depends_on("py-numpy@1.7.2:", when="@:0.12")
depends_on("py-scipy@1.0.1:", when="@0.17:", type=("build", "run"))
depends_on("py-scipy@0.19:", when="@0.16:", type=("build", "run"))
depends_on("py-scipy@0.17:", when="@0.13:", type=("build", "run"))
depends_on("py-scipy@0.9:", type=("build", "run"))
depends_on("py-networkx@2.8:", when="@0.20:", type=("build", "run"))
depends_on("py-networkx@2.2:", when="@0.19:", type=("build", "run"))
depends_on("py-networkx@2:", when="@0.15:", type=("build", "run"))
depends_on("py-networkx@1.8:", type=("build", "run"))
depends_on("pil@9.0.1:", when="@0.20:", type=("build", "run"))
depends_on("pil@6.1:7.0,7.1.2:8.2,8.3.1:", when="@0.19:", type=("build", "run"))
depends_on("pil@4.3:7.0,7.1.2:", when="@0.17:", type=("build", "run"))
depends_on("pil@4.3:", when="@0.14:", type=("build", "run"))
depends_on("pil@2.1:", type=("build", "run"))
depends_on("py-imageio@2.4.1:", when="@0.19:", type=("build", "run"))
depends_on("py-imageio@2.3:", when="@0.16:", type=("build", "run"))
depends_on("py-imageio@2.0.1:", when="@0.15:", type=("build", "run"))
depends_on("py-tifffile@2019.7.26:", when="@0.17:", type=("build", "run"))
depends_on("py-pywavelets@1.1.1:", when="@0.17:", type=("build", "run"))
depends_on("py-pywavelets@0.4:", when="@0.13:", type=("build", "run"))
depends_on("py-packaging@20:", when="@0.19:", type=("build", "run"))
depends_on("py-lazy-loader@0.1:", when="@0.20:", type=("build", "run"))
depends_on("py-meson-python@0.13:", when="@0.20:", type="build") with default_args(type=("build", "run")):
depends_on("py-setuptools@67:", when="@0.20:", type="build") depends_on("py-scipy@1.8:", when="@0.20:")
depends_on("py-setuptools@:59.4", when="@0.19.1:0.19", type="build") depends_on("py-scipy@1.4.1:", when="@0.19:")
depends_on("py-setuptools@51:", when="@0.18:", type="build") depends_on("py-scipy@1.0.1:", when="@0.17:")
depends_on("py-setuptools", type="build") depends_on("py-scipy@0.19:", when="@0.16:")
depends_on("py-cython@0.29.24:", when="@0.20:", type="build") depends_on("py-scipy@0.17:", when="@0.13:")
depends_on("py-cython@0.29.24:2", when="@0.19", type="build") depends_on("py-scipy@0.9:")
depends_on("py-cython@0.29.21:", when="@0.18", type="build") depends_on("py-networkx@2.8:", when="@0.20:")
depends_on("py-cython@0.29.13:", when="@0.17", type="build") depends_on("py-networkx@2.2:", when="@0.19:")
depends_on("py-cython@0.25:0.28.1,0.28.3:0.28,0.29.1:", when="@0.15:0.16", type="build") depends_on("py-networkx@2:", when="@0.15:")
depends_on("py-cython@0.23.4:0.28.1,0.28.3:0.28,0.29.1:", when="@0.14.3:0.14", type="build") depends_on("py-networkx@1.8:")
depends_on("py-cython@0.23.4:0.28.1", when="@0.14.2", type="build") depends_on("pil@9.0.1:", when="@0.20:")
depends_on("py-cython@0.23.4:", when="@0.14.1", type="build") depends_on("pil@6.1:7.0,7.1.2:8.2,8.3.1:", when="@0.19:")
depends_on("py-cython@0.21:", when="@0.12", type="build") depends_on("pil@4.3:7.0,7.1.2:", when="@0.17:")
depends_on("py-pythran", when="@0.19:", type="build") depends_on("pil@4.3:", when="@0.14:")
depends_on("pil@2.1:")
depends_on("py-imageio@2.27:", when="@0.21:")
depends_on("py-imageio@2.4.1:", when="@0.19:")
depends_on("py-imageio@2.3:", when="@0.16:")
depends_on("py-imageio@2.0.1:", when="@0.15:")
depends_on("py-tifffile@2022.8.12:", when="@0.21:")
depends_on("py-tifffile@2019.7.26:", when="@0.17:")
depends_on("py-packaging@21:", when="@0.21:")
depends_on("py-packaging@20:", when="@0.19:")
depends_on("py-lazy-loader@0.3:", when="@0.22:")
depends_on("py-lazy-loader@0.2:", when="@0.21:")
depends_on("py-lazy-loader@0.1:", when="@0.20:")
with default_args(type="build"):
depends_on("py-meson-python@0.14:", when="@0.22:")
depends_on("py-meson-python@0.13:", when="@0.20:")
depends_on("py-setuptools@67:", when="@0.20:")
depends_on("py-setuptools@:59.4", when="@0.19.1:0.19")
depends_on("py-setuptools@51:", when="@0.18:")
depends_on("py-setuptools")
depends_on("py-cython@0.29.32:", when="@0.21:")
depends_on("py-cython@0.29.24:", when="@0.20:")
depends_on("py-cython@0.29.24:2", when="@0.19")
depends_on("py-cython@0.29.21:", when="@0.18")
depends_on("py-cython@0.29.13:", when="@0.17")
depends_on("py-cython@0.25:0.28.1,0.28.3:0.28,0.29.1:", when="@0.15:0.16")
depends_on("py-cython@0.23.4:0.28.1,0.28.3:0.28,0.29.1:", when="@0.14.3:0.14")
depends_on("py-cython@0.23.4:0.28.1", when="@0.14.2")
depends_on("py-cython@0.23.4:", when="@0.14.1")
depends_on("py-cython@0.21:", when="@0.12")
depends_on("py-pythran", when="@0.19:")
# dependencies for old versions # dependencies for old versions
depends_on("py-numpydoc@0.6:", when="@0.13.0:0.13", type="build") with default_args(type="build"):
depends_on("py-matplotlib@2.0:2,3.0.1:", when="@0.15:0.18", type=("build", "run")) depends_on("py-numpydoc@0.6:", when="@0.13.0:0.13")
depends_on("py-matplotlib@2:", when="@0.14:0.18", type=("build", "run"))
depends_on("py-matplotlib@1.3.1:", when="@:0.18", type=("build", "run")) with default_args(type=("build", "run")):
depends_on("py-six@1.10:", when="@0.14.0:0.14", type=("build", "run")) depends_on("py-pywavelets@1.1.1:", when="@0.17:0.21")
depends_on("py-six@1.7.3:", when="@:0.14", type=("build", "run")) depends_on("py-pywavelets@0.4:", when="@0.13:0.16")
depends_on("py-pooch@0.5.2:", when="@0.17.0:0.17.1", type=("build", "run")) depends_on("py-matplotlib@2.0:2,3.0.1:", when="@0.15:0.18")
depends_on("py-dask+array@1:", when="@0.14.2", type=("build", "run")) depends_on("py-matplotlib@2:", when="@0.14:0.18")
depends_on("py-dask+array@0.9:", when="@0.14.0:0.14.1", type=("build", "run")) depends_on("py-matplotlib@1.3.1:", when="@:0.18")
depends_on("py-dask+array@0.5:", when="@:0.13", type=("build", "run")) depends_on("py-six@1.10:", when="@0.14.0:0.14")
depends_on("py-cloudpickle@0.2.1:", when="@0.14.0:0.14", type=("build", "run")) depends_on("py-six@1.7.3:", when="@:0.14")
depends_on("py-pooch@0.5.2:", when="@0.17.0:0.17.1")
depends_on("py-dask+array@1:", when="@0.14.2")
depends_on("py-dask+array@0.9:", when="@0.14.0:0.14.1")
depends_on("py-dask+array@0.5:", when="@:0.13")
depends_on("py-cloudpickle@0.2.1:", when="@0.14.0:0.14")
def url_for_version(self, version): def url_for_version(self, version):
url = ( url = (

View File

@@ -105,6 +105,10 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
description="Enable breakpad crash dump library", description="Enable breakpad crash dump library",
when="@1.10:1.11", when="@1.10:1.11",
) )
# py-torch has strict dependencies on old protobuf/py-protobuf versions that
# cause problems with other packages that require newer versions of protobuf
# and py-protobuf --> provide an option to use the internal/vendored protobuf.
variant("custom-protobuf", default=False, description="Use vendored protobuf")
conflicts("+cuda+rocm") conflicts("+cuda+rocm")
conflicts("+tensorpipe", when="+rocm ^hip@:5.1", msg="TensorPipe not supported until ROCm 5.2") conflicts("+tensorpipe", when="+rocm ^hip@:5.1", msg="TensorPipe not supported until ROCm 5.2")
@@ -176,6 +180,7 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
depends_on("py-pybind11@2.10.0", when="@1.13:1", type=("build", "link", "run")) depends_on("py-pybind11@2.10.0", when="@1.13:1", type=("build", "link", "run"))
depends_on("py-pybind11@2.6.2", when="@1.8:1.12", type=("build", "link", "run")) depends_on("py-pybind11@2.6.2", when="@1.8:1.12", type=("build", "link", "run"))
depends_on("py-pybind11@2.3.0", when="@:1.7", type=("build", "link", "run")) depends_on("py-pybind11@2.3.0", when="@:1.7", type=("build", "link", "run"))
with when("~custom-protobuf"):
depends_on("py-protobuf@3.12.2:", when="@1.10:", type=("build", "run")) depends_on("py-protobuf@3.12.2:", when="@1.10:", type=("build", "run"))
depends_on("py-protobuf@:3.14", when="@:1.9", type=("build", "run")) depends_on("py-protobuf@:3.14", when="@:1.9", type=("build", "run"))
depends_on("protobuf@3.12.2:", when="@1.10:") depends_on("protobuf@3.12.2:", when="@1.10:")
@@ -183,7 +188,7 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage):
# https://github.com/protocolbuffers/protobuf/issues/10051 # https://github.com/protocolbuffers/protobuf/issues/10051
# https://github.com/pytorch/pytorch/issues/78362 # https://github.com/pytorch/pytorch/issues/78362
depends_on("py-protobuf@:3", type=("build", "run")) depends_on("py-protobuf@:3", type=("build", "run"))
depends_on("protobuf@:3", type=("build", "run")) depends_on("protobuf@:3")
depends_on("eigen") depends_on("eigen")
# https://github.com/pytorch/pytorch/issues/60329 # https://github.com/pytorch/pytorch/issues/60329
# depends_on("cpuinfo@2023-01-13", when="@2.1:") # depends_on("cpuinfo@2023-01-13", when="@2.1:")
@@ -616,6 +621,9 @@ def enable_or_disable(variant, keyword="USE", var=None):
env.set("WITH_BLAS", "generic") env.set("WITH_BLAS", "generic")
# Don't use vendored third-party libraries when possible # Don't use vendored third-party libraries when possible
if self.spec.satisfies("+custom-protobuf"):
env.set("BUILD_CUSTOM_PROTOBUF", "ON")
else:
env.set("BUILD_CUSTOM_PROTOBUF", "OFF") env.set("BUILD_CUSTOM_PROTOBUF", "OFF")
env.set("USE_SYSTEM_NCCL", "ON") env.set("USE_SYSTEM_NCCL", "ON")
env.set("USE_SYSTEM_EIGEN_INSTALL", "ON") env.set("USE_SYSTEM_EIGEN_INSTALL", "ON")

Some files were not shown because too many files have changed in this diff Show More