summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorJason Verley <jcverle@sandia.gov>2024-01-24 11:46:14 -0700
committerGitHub <noreply@github.com>2024-01-24 10:46:14 -0800
commit31ed39303cfb6039082c63f741781ce86cff97df (patch)
tree969bdc191b5aa1eefc53b8ccde3f4ee745962b9f /var
parent6bddecbf28182e85d5ec1ba4a965aa2106cab4cb (diff)
downloadspack-31ed39303cfb6039082c63f741781ce86cff97df.tar.gz
spack-31ed39303cfb6039082c63f741781ce86cff97df.tar.bz2
spack-31ed39303cfb6039082c63f741781ce86cff97df.tar.xz
spack-31ed39303cfb6039082c63f741781ce86cff97df.zip
Update Xyce and Trilinos recipes (#42194)
* Trilinos: Add AMD to SuiteSparse TPL list When Trilinos is built with SuiteSparse support, it should enable AMD as one of the TPLs. It was previously enabling only UMFPACK. The Xyce package uses AMD (but not UMFPACK). * Xyce: Add 7.8 release and various improvements In addition to adding the latest Xyce release (7.8), all the earlier releases were deprecated, with the exception of 7.7. The Trilinos specification was updated to remove unneeded packages, explicitly enable all needed packages, and specify additional do-not-build packages. The serial build is now the default, with MPI still being an option. I also epanded the explanation for one of the patches; and, finally, I took the opportunity to update the Xyce description to better match the current Xyce README description.
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py1
-rw-r--r--var/spack/repos/builtin/packages/xyce/package.py85
2 files changed, 61 insertions, 25 deletions
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index e015bb7f4e..b271e4c5ab 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -812,6 +812,7 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage):
("HDF5", "hdf5", "hdf5"),
("HYPRE", "hypre", "hypre"),
("MUMPS", "mumps", "mumps"),
+ ("AMD", "suite-sparse", "suite-sparse"),
("UMFPACK", "suite-sparse", "suite-sparse"),
("SuperLU", "superlu", "superlu"),
("SuperLUDist", "superlu-dist", "superlu-dist"),
diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py
index f6d701d592..b0ea837eee 100644
--- a/var/spack/repos/builtin/packages/xyce/package.py
+++ b/var/spack/repos/builtin/packages/xyce/package.py
@@ -10,13 +10,18 @@ from spack.package import *
class Xyce(CMakePackage):
"""Xyce (rhymes with 'spice') is an open source, SPICE-compatible,
- high-performance analog circuit simulator, capable of solving extremely
- large circuit problems by supporting large-scale parallel computing
- platforms.
- Xyce also supports serial execution on all common desktop platforms,
- and small-scale parallel runs on Unix-like systems. In addition to analog
- electronic simulation, Xyce has also been used to investigate more general
- network systems, such as neural networks and power grids.
+ high-performance analog circuit simulator, Xyce supports the standard
+ analysis capabilities found in other SPICE-like codes, such as DC,
+ transient, AC, and small-signal noise analyses; it also has less common
+ capabilities, such as harmonic balance, sensitivity analysis, and
+ uncertainty propagation techniques. Xyce supplies industry-standard compact
+ models and can support custom models via its Verilog-A model compiler.
+ Foundry process-development kits (PDKs) in other SPICE syntax can be used
+ via the XDM netlist translator, which is included as part of the Xyce
+ package. In addition to supporting use on all common desktop platforms
+ (Mac, Windows, Linux), Xyce can also be compiled to run in a large-scale
+ parallel mode to provide scalable, numerically accurate analog simulation
+ of circuits containing millions of devices, or more.
"""
homepage = "https://xyce.sandia.gov"
@@ -27,18 +32,39 @@ class Xyce(CMakePackage):
license("GPL-3.0-or-later")
version("master", branch="master")
+ version("7.8.0", sha256="f763b7d5ad6defd25d2c7e5cc95155958cd12510a5e22a179daab459b21fa713")
version("7.7.0", sha256="1b95450e1905c3af3c16b42c41d5ef1f8ab0e640f48086d0cb4d52961a90a175")
- version("7.6.0", sha256="fc25557e2edc82adbe0436a15fca2929a2f9ab08ddf91f1a47aab5e8b27ec88c")
- version("7.5.0", sha256="854d7d5e19e0ee2138d1f20f10f8f27f2bebb94ec81c157040955cff7250dacd")
- version("7.4.0", sha256="2d6bc1b7377834b2e0bf50131e96728c5be83dbb3548e765bb48911067c87c91")
- version("7.3.0", sha256="43869a70967f573ff6f00451db3f4642684834bdad1fd3926380e3789016b446")
- version("7.2.0", sha256="cf49705278ecda46373784bb24925cb97f9017b6adff49e4416de146bdd6a4b5")
+ version(
+ "7.6.0",
+ sha256="fc25557e2edc82adbe0436a15fca2929a2f9ab08ddf91f1a47aab5e8b27ec88c",
+ deprecated=True,
+ )
+ version(
+ "7.5.0",
+ sha256="854d7d5e19e0ee2138d1f20f10f8f27f2bebb94ec81c157040955cff7250dacd",
+ deprecated=True,
+ )
+ version(
+ "7.4.0",
+ sha256="2d6bc1b7377834b2e0bf50131e96728c5be83dbb3548e765bb48911067c87c91",
+ deprecated=True,
+ )
+ version(
+ "7.3.0",
+ sha256="43869a70967f573ff6f00451db3f4642684834bdad1fd3926380e3789016b446",
+ deprecated=True,
+ )
+ version(
+ "7.2.0",
+ sha256="cf49705278ecda46373784bb24925cb97f9017b6adff49e4416de146bdd6a4b5",
+ deprecated=True,
+ )
- depends_on("cmake@3.13:", type="build")
+ depends_on("cmake@3.22:", type="build")
depends_on("flex")
depends_on("bison")
- variant("mpi", default=True, description="Enable MPI support")
+ variant("mpi", default=False, description="Enable MPI support")
depends_on("mpi", when="+mpi")
variant("plugin", default=False, description="Enable plug-in support for Xyce")
@@ -58,8 +84,8 @@ class Xyce(CMakePackage):
variant("cxxstd", default="11", description="C++ standard", values=cxxstd_choices, multi=False)
variant("pymi", default=False, description="Enable Python Model Interpreter for Xyce")
- # Downstream dynamic library symbols from pip installed numpy and other
- # pip installed python packages can cause conflicts. This is most often
+ # Downstream dynamic library symbols from pip-installed numpy and other
+ # pip-installed python packages can cause conflicts. This is most often
# seen with blas symbols from numpy, and building blas static resolves
# this issue.
variant(
@@ -76,16 +102,20 @@ class Xyce(CMakePackage):
depends_on(
"trilinos"
- "+amesos+amesos2+anasazi+aztec+basker+belos+complex+epetra+epetraext"
- "+explicit_template_instantiation+fortran+ifpack+kokkos+nox"
- "+sacado+suite-sparse+trilinoscouplings+stokhos+epetraextbtf"
- "+epetraextexperimental+epetraextgraphreorderings"
+ "+amesos+amesos2+aztec+basker+belos+complex+epetra+epetraext"
+ "+epetraextbtf+epetraextexperimental+epetraextgraphreorderings"
+ "+ifpack+nox+sacado+stokhos+suite-sparse+trilinoscouplings"
)
depends_on("trilinos+isorropia+zoltan", when="+mpi")
- # tested versions of Trilinos for everything up to 7.4.0
- depends_on("trilinos@12.12.1:13.4", when="@:7.5")
- depends_on("trilinos@13.5.0:develop", when="@7.6.0:master")
+ # Currently supported versions of Xyce
+ depends_on("trilinos@15.0.0:develop", when="@7.8.0:")
+ depends_on("trilinos+rol", when="@7.7.0:")
+
+ # tested versions of Trilinos against older versions of Xyce
+ depends_on("trilinos@13.5.0:14.4", when="@7.6.0:7.7.0")
+ depends_on("trilinos@12.12.1:13.4", when="@7.5")
+ depends_on("trilinos@12.12.1", when="@:7.4")
depends_on("trilinos gotype=all cxxstd=11", when="^trilinos@:12.15")
# pymi requires Kokkos/KokkosKernels >= 3.3, Trilinos 13.2 onward
depends_on("trilinos@13.2.0:", when="+pymi")
@@ -97,7 +127,7 @@ class Xyce(CMakePackage):
# The default settings for various Trilinos variants would require the
# installation of many more packages than are needed for Xyce.
- depends_on("trilinos~float~ifpack2~ml~muelu~zoltan2")
+ depends_on("trilinos~anasazi~float~ifpack2~ml~muelu~zoltan2")
# Issue #1712 forces explicitly enumerating blas packages to propagate variants
with when("+pymi_static_tpls"):
@@ -152,7 +182,12 @@ class Xyce(CMakePackage):
when="@:7.7",
)
- # fix cmake trilinos test issue
+ # Xyce CMake relies on Kokkos to report if OpenMP was used. However, the
+ # OpenMP requirement does not always propogate via the Spack packages, for
+ # various esoteric reasons. Therefore, when Xyce checks to see if it can
+ # compile against Trilinos, the check might erroneously fail. Since Spack
+ # should be handling everything properly, we simply disable the Trilinos
+ # compile test. See the Xyce internal issue 454 for more information.
patch(
"454-cmake-xyce.patch",
sha256="4d47cd1f10607205e64910ac124c6dd329f1ecbf861416e9da24a1736f2149ff",