summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authortakanori-ihara <62980219+takanori-ihara@users.noreply.github.com>2020-10-09 01:36:00 +0900
committerGitHub <noreply@github.com>2020-10-08 09:36:00 -0700
commitcbaa78cb4a217f25b64bd31b619a5558d44c84be (patch)
treef02907f2152f3a833ee1e9339f0666dfa2d4365a /var
parentcb11a58fdd48717cfbc950b3e87c55a8e5daea81 (diff)
downloadspack-cbaa78cb4a217f25b64bd31b619a5558d44c84be.tar.gz
spack-cbaa78cb4a217f25b64bd31b619a5558d44c84be.tar.bz2
spack-cbaa78cb4a217f25b64bd31b619a5558d44c84be.tar.xz
spack-cbaa78cb4a217f25b64bd31b619a5558d44c84be.zip
fujitsu-ssl2: Add new package (#18498)
fujisu-ssl2: Add new package with thread-parallel, SVE and scalapack support
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/fujitsu-ssl2/package.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py b/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py
new file mode 100644
index 0000000000..cb617301e8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/fujitsu-ssl2/package.py
@@ -0,0 +1,133 @@
+# Copyright 2013-2020 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 import *
+
+
+class FujitsuSsl2(Package):
+ """Fujitsu SSL2 (Scientific Subroutine Library II) is Math library
+ for Fujitsu compiler.
+ Fujitsu SSL2 implementation only for Fujitsu compiler.
+ Fujitsu SSL2 provides the function of blas, lapack and scalapack.
+ """
+
+ homepage = "https://www.fujitsu.com/us/"
+ has_code = False
+
+ variant("parallel", default=True, description="Build with thread-parallel versions")
+
+ conflicts("%arm")
+ conflicts("%cce")
+ conflicts("%apple-clang")
+ conflicts("%clang")
+ conflicts("%gcc")
+ conflicts("%intel")
+ conflicts("%nag")
+ conflicts("%pgi")
+ conflicts("%xl")
+ conflicts("%xl_r")
+
+ provides("blas")
+ provides("lapack")
+ provides("scalapack")
+
+ def install(self, spec, prefix):
+ raise InstallError(
+ "Fujitsu SSL2 is not installable; it is vendor supplied \
+ You need to specify it as an external package in packages.yaml"
+ )
+
+ @property
+ def blas_libs(self):
+ spec = self.spec
+ sharedlibslist = ["libfj90i", "libfj90f", "libfjsrcinfo", "libfj90rt"]
+ staticlibslist = []
+
+ if spec.target == "a64fx": # Build with SVE support
+ sharedlibslist += ["libfjlapacksve"]
+
+ if "+parallel" in spec: # parallel
+ staticlibslist = ["libssl2mtexsve"]
+
+ staticlibslist += ["libssl2mtsve", "libfj90rt2", "libfj90fmt_sve"]
+
+ else: # Build with NEON support
+ sharedlibslist += ["libfjlapack"]
+
+ if "+parallel" in spec: # parallel
+ staticlibslist = ["libssl2mtex"]
+
+ staticlibslist += [
+ "libssl2mt",
+ "libfj90rt2",
+ "libfj90fmt"
+ ]
+
+ sharedlibs = find_libraries(
+ sharedlibslist, self.prefix.lib64, shared=True, recursive=False
+ )
+ staticlibs = find_libraries(
+ staticlibslist, self.prefix.lib64, shared=False, recursive=False
+ )
+ libs = sharedlibs + staticlibs
+ return libs
+
+ @property
+ def lapack_libs(self):
+ return self.blas_libs
+
+ @property
+ def scalapack_libs(self):
+ spec = self.spec
+ sharedlibslist = [
+ "libmpi_usempi_ignore_tkr",
+ "libmpi_mpifh",
+ "libfj90i",
+ "libfj90f",
+ "libfjsrcinfo",
+ "libfj90rt",
+ ]
+ staticlibslist = []
+
+ if spec.target == "a64fx": # Build with SVE support
+ sharedlibslist += ["libfjscalapacksve", "libfjlapacksve"]
+
+ if "+parallel" in spec: # parallel
+ staticlibslist = ["libssl2mtexsve"]
+
+ staticlibslist += [
+ "libscalapacksve",
+ "libssl2mtsve",
+ "libfj90rt2",
+ "libfj90fmt_sve",
+ ]
+
+ else: # Build with NEON support
+ sharedlibslist += ["libfjscalapack", "libfjlapack"]
+
+ if "+parallel" in spec: # parallel
+ staticlibslist = ["libssl2mtex"]
+
+ staticlibslist += [
+ "libscalapack",
+ "libssl2mt",
+ "libfj90rt2",
+ "libfj90fmt"
+ ]
+
+ sharedlibs = find_libraries(
+ sharedlibslist, self.prefix.lib64, shared=True, recursive=False
+ )
+ staticlibs = find_libraries(
+ staticlibslist, self.prefix.lib64, shared=False, recursive=False
+ )
+ libs = sharedlibs + staticlibs
+ return libs
+
+ def setup_dependent_build_environment(self, env, dependent_spec):
+ self.setup_run_environment(env)
+ env.append_flags("fcc_ENV", "-lm -lrt -lpthread -lelf -lz -ldl")
+ env.append_flags("FCC_ENV", "-lm -lrt -lpthread -lelf -lz -ldl")
+ env.append_flags("FORT90C", "-lm -lrt -lpthread -lelf -lz -ldl")