From a5963d686c897d82567fd00b15882593d77124f0 Mon Sep 17 00:00:00 2001 From: takanori-ihara <62980219+takanori-ihara@users.noreply.github.com> Date: Tue, 19 Jan 2021 07:37:09 +0900 Subject: [PATCH] eigenexa: new package. (#20934) --- .../packages/eigenexa/fj_compiler.patch | 64 +++++++++++++++++++ .../builtin/packages/eigenexa/package.py | 49 ++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 var/spack/repos/builtin/packages/eigenexa/fj_compiler.patch create mode 100644 var/spack/repos/builtin/packages/eigenexa/package.py diff --git a/var/spack/repos/builtin/packages/eigenexa/fj_compiler.patch b/var/spack/repos/builtin/packages/eigenexa/fj_compiler.patch new file mode 100644 index 0000000000..f5ba03aea4 --- /dev/null +++ b/var/spack/repos/builtin/packages/eigenexa/fj_compiler.patch @@ -0,0 +1,64 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -200,7 +200,7 @@ AC_SUBST(DEBUG) + ## fortran compiler + # + +-eigenexa_default_fc="mpifrtpx mpiifort mpixlf90_r sxmpif90 mpif90" ++eigenexa_default_fc="mpifrt mpifrtpx mpiifort mpixlf90_r sxmpif90 mpif90" + + # check usablility + AC_PROG_F77($eigenexa_default_fc) +@@ -221,7 +221,6 @@ AC_MSG_CHECKING([for actual compiler]) + + fc_ver_info=$(${F77} -E --version) + for vtok in ${fc_ver_info} ; do +- + if test x"${vtok}" = x"ifort"; then + FC_ACT="ifort" + break +@@ -230,12 +229,16 @@ for vtok in ${fc_ver_info} ; do + FC_ACT="gfortran" + break + ++ elif test x"${vtok}" = x"(FRT)"; then ++ FC_ACT="mpifrtpx" ++ break ++ + fi + + done + + if test -z "${FC_ACT}"; then +- FC_ACT=${F77} ++ FC_ACT=`basename ${F77}` + fi + + if test x"${FC_ACT}" = x"ifort"; then +@@ -260,7 +263,7 @@ fi + ## C compiler + # + +-eigenexa_default_cc="mpifccpx mpiicc mpixlc_r sxmpic++ mpicc" ++eigenexa_default_cc="mpifcc mpifccpx mpiicc mpixlc_r sxmpic++ mpicc" + + # check usablility + AC_PROG_CC($eigenexa_default_cc) +@@ -423,7 +426,7 @@ fi + ## For Fujitsu compiler architecture-oriented options + if test x"${FC_ACT}" = x"mpifrtpx"; then + F_ARCH="" +- F_BASE="-Kopenmp,openmp_ordered_reduction" ++ F_BASE="-Kopenmp" + fi + + +@@ -489,7 +492,7 @@ elif test x"${FC_ACT}" = x"gfortran"; th + FFLAGS0=${G_BASE}" -O0" + + elif test x"${FC_ACT}" = x"mpifrtpx"; then +- FFLAGS0="-Kopenmp,openmp_ordered_reduction -Cpp" ++ FFLAGS0="-Kopenmp -Cpp" + + elif test x"${FC_ACT}" = x"mpixlf90_r"; then + FFLAGS0="-qfixed -qsmp=omp -qthreaded -O0 -qessl -qstrict" diff --git a/var/spack/repos/builtin/packages/eigenexa/package.py b/var/spack/repos/builtin/packages/eigenexa/package.py new file mode 100644 index 0000000000..e454ae7af8 --- /dev/null +++ b/var/spack/repos/builtin/packages/eigenexa/package.py @@ -0,0 +1,49 @@ +# 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 Eigenexa(AutotoolsPackage): + """EigenExa is a high-performance eigenvalue solver.""" + + homepage = "https://www.r-ccs.riken.jp/labs/lpnctrt/projects/eigenexa/" + url = "https://www.r-ccs.riken.jp/labs/lpnctrt/projects/eigenexa/EigenExa-2.6.tgz" + + version( + "2.6", sha256="a1a4e571a8051443f28e7ea4889272993452a4babd036d2b4dd6b28154302f95" + ) + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + depends_on("m4", type="build") + depends_on("mpi") + depends_on("lapack") + depends_on("scalapack") + + patch("fj_compiler.patch", when="%fj") + + parallel = False + + def setup_build_environment(self, env): + env.set("FC", self.spec["mpi"].mpifc, force=True) + env.set("F77", self.spec["mpi"].mpif77, force=True) + env.set("CC", self.spec["mpi"].mpicc, force=True) + env.set( + "LAPACK_LIBS", + "{0} {1}".format( + self.spec["lapack"].libs.ld_flags, self.spec["scalapack"].libs.ld_flags + ), + ) + env.set( + "LAPACK_PATH", + "{0}".format( + ":".join( + self.spec["lapack"].libs.directories + + self.spec["scalapack"].libs.directories + ) + ), + )