add tandem package (#36546)
* add tandem package * apply black * fix import * fix year of license * add version 1.0 and associated compile fix * change git to property * add conflict to intel
This commit is contained in:
parent
674c22f815
commit
5cf7c60d74
2 changed files with 101 additions and 0 deletions
|
@ -0,0 +1,29 @@
|
|||
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
|
||||
index 515f15f..bc48092 100644
|
||||
--- a/app/CMakeLists.txt
|
||||
+++ b/app/CMakeLists.txt
|
||||
@@ -82,9 +82,9 @@ function(generate_code APP)
|
||||
if("${YATETO_ARCH}" MATCHES "skl|naples|rome")
|
||||
set(YATETO_ARCH "hsw")
|
||||
endif()
|
||||
- set(WITH_LIBXSMM "")
|
||||
+ set(WITH_LIBXSMM "\'\'")
|
||||
if(${LibxsmmGenerator_FOUND})
|
||||
- set(WITH_LIBXSMM ${LibxsmmGeneratorExecutable})
|
||||
+ set(WITH_LIBXSMM "\'${LibxsmmGeneratorExecutable}\'")
|
||||
endif()
|
||||
add_custom_command(
|
||||
COMMAND
|
||||
diff --git a/src/mesh/Simplex.h b/src/mesh/Simplex.h
|
||||
index 6a2cf29..36b0be3 100644
|
||||
--- a/src/mesh/Simplex.h
|
||||
+++ b/src/mesh/Simplex.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <utility>
|
||||
-
|
||||
+#include <limits>
|
||||
#include "util/Combinatorics.h"
|
||||
|
||||
namespace tndm {
|
72
var/spack/repos/builtin/packages/tandem/package.py
Normal file
72
var/spack/repos/builtin/packages/tandem/package.py
Normal file
|
@ -0,0 +1,72 @@
|
|||
# Copyright 2013-2023 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 Tandem(CMakePackage):
|
||||
"""Tandem is a scientific software for SEAS modelling and for solving Poisson
|
||||
and linear elasticity problems. It implements the Symmetric Interior Penalty
|
||||
Galerkin (SIPG) method using unstructured simplicial meshes (triangle meshes
|
||||
in 2D, tetrahedral meshes in 3D)."""
|
||||
|
||||
homepage = "https://tandem.readthedocs.io/en/latest/"
|
||||
git = "https://github.com/TEAR-ERC/tandem.git"
|
||||
version("main", branch="main", submodules=True)
|
||||
|
||||
# we cannot use the tar.gz file because it does not contains submodules
|
||||
version("1.0", tag="v1.0", submodules=True)
|
||||
patch("fix_v1.0_compilation.diff", when="@1.0")
|
||||
|
||||
maintainers = ["dmay23", "Thomas-Ulrich"]
|
||||
variant("polynomial_degree", default="2")
|
||||
variant("domain_dimension", default="2", values=("2", "3"), multi=False)
|
||||
variant("min_quadrature_order", default="0")
|
||||
variant("libxsmm", default=False, description="installs libxsmm-generator")
|
||||
|
||||
depends_on("mpi")
|
||||
depends_on("parmetis +int64 +shared")
|
||||
depends_on("metis +int64 +shared")
|
||||
depends_on("libxsmm@1.17 +generator", when="+libxsmm target=x86_64:")
|
||||
depends_on("lua@5.3.2:5.4.4")
|
||||
depends_on("eigen@3.4.0")
|
||||
depends_on("zlib@1.2.8:1.2.13")
|
||||
depends_on("petsc@3.14.6:3.18.5 +int64 +mumps +scalapack")
|
||||
depends_on("petsc@3.14.6:3.18.5 +int64 +mumps +scalapack +knl", when="target=skylake:")
|
||||
# see https://github.com/TEAR-ERC/tandem/issues/45
|
||||
conflicts("%intel")
|
||||
|
||||
def cmake_args(self):
|
||||
args = [
|
||||
self.define_from_variant("DOMAIN_DIMENSION", "domain_dimension"),
|
||||
self.define_from_variant("POLYNOMIAL_DEGREE", "polynomial_degree"),
|
||||
self.define_from_variant("MIN_QUADRATURE_ORDER", "min_quadrature_order"),
|
||||
]
|
||||
|
||||
arch_dic = {}
|
||||
arch_dic["skylake"] = "skl"
|
||||
arch_dic["skylake_avx512"] = "skx"
|
||||
arch_dic["haswell"] = "hsw"
|
||||
arch_dic["sandybridge"] = "snb"
|
||||
arch_dic["zen2"] = "rome"
|
||||
arch_dic["zen"] = "naples"
|
||||
target = str(self.spec.target)
|
||||
|
||||
if target in arch_dic:
|
||||
args.append("-DARCH=" + arch_dic[target])
|
||||
else:
|
||||
print(target, "not in arch list of tandem, using native")
|
||||
args.append("-DARCH=native")
|
||||
|
||||
return args
|
||||
|
||||
def install(self, spec, prefix):
|
||||
self.cmake(spec, prefix)
|
||||
self.build(spec, prefix)
|
||||
install_tree(self.build_directory, prefix)
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
env.prepend_path("PATH", self.prefix.app)
|
Loading…
Reference in a new issue