nwchem: add support for Fujitsu A64FX compilers on v7.0.2 (#28990)

This commit is contained in:
h-murai 2022-02-21 18:26:51 +09:00 committed by GitHub
parent 60fe21ddd7
commit fc8c3ada56
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 153 additions and 0 deletions

View file

@ -0,0 +1,147 @@
diff -u -r nwchem-7.0.2/src/basis/bas_input.F nwchem-7.0.2-patched/src/basis/bas_input.F
--- nwchem-7.0.2/src/basis/bas_input.F 2020-10-13 13:16:25.000000000 +0900
+++ nwchem-7.0.2-patched/src/basis/bas_input.F 2022-02-08 14:10:28.000000000 +0900
@@ -1321,7 +1321,9 @@
endif
libname = compiled_name
does_it_exist = .false.
+#ifndef FUJITSU
inquire(file=libname,exist=does_it_exist)
+#endif
c
c check if it is a directory
c
Only in nwchem-7.0.2-patched/src/basis: bas_input.F.orig
diff -u -r nwchem-7.0.2/src/config/makefile.h nwchem-7.0.2-patched/src/config/makefile.h
--- nwchem-7.0.2/src/config/makefile.h 2020-10-13 13:16:30.000000000 +0900
+++ nwchem-7.0.2-patched/src/config/makefile.h 2022-02-08 14:10:28.000000000 +0900
@@ -1867,6 +1867,12 @@
else
FOPTIONS += -s integer64
endif
+ else ifeq ($(_FC),frt)
+ ifdef USE_I4FLAGS
+ FOPTIONS += -CcdLL8
+ else
+ FOPTIONS += -CcdLL8 -CcdII8
+ endif
else
ifdef USE_I4FLAGS
FOPTIONS += -i4
@@ -2319,6 +2325,13 @@
endif
endif
+ ifeq ($(_CC),gcc)
+ COPTIONS += -O3
+ ifdef USE_OPENMP
+ COPTIONS += -Kopenmp
+ endif
+ endif
+
ifeq ($(_FC),gfortran)
ifdef USE_GPROF
FOPTIONS += -pg
@@ -2353,6 +2366,29 @@
endif
endif # end of gfortran
+ # A64fx
+ ifeq ($(FC),frt)
+
+ FOPTIONS += -DFUJITSU
+ FOPTIONS += -fs
+
+ ifdef USE_SHARED
+ FOPTIONS+=
+ endif
+
+ DEFINES +=
+ LINK.f = $(FC) $(LDFLAGS)
+ FOPTIMIZE = -O3
+
+ ifeq ($(V),1)
+ $(info FUJITSU FOPTIMIZE = ${FOPTIMIZE})
+ endif
+
+ FDEBUG += -g -O
+ FOPTIMIZE +=
+
+ endif
+
ifeq ($(FC),armflang)
ifdef USE_SHARED
Only in nwchem-7.0.2/src/config: makefile.h.orig
diff -u -r nwchem-7.0.2/src/inp/inp.F nwchem-7.0.2-patched/src/inp/inp.F
--- nwchem-7.0.2/src/inp/inp.F 2020-10-13 13:16:26.000000000 +0900
+++ nwchem-7.0.2-patched/src/inp/inp.F 2022-02-08 14:21:11.000000000 +0900
@@ -15,7 +15,7 @@
data errmsg /' '/
data input_line /0/
data xblnk /' '/
-#if defined(SGITFP) || defined(SGI_N32) || defined(CRAY) || defined(HPUX) || defined(WIN32) || defined(PSCALE) || defined(__FLANG) || ( __GNUC__ >= 4)
+#if defined(SGITFP) || defined(SGI_N32) || defined(CRAY) || defined(HPUX) || defined(WIN32) || defined(PSCALE) || defined(__FLANG) || ( __GNUC__ >= 4) || defined(FUJITSU)
data xtab /' '/ ! Tab ... no backslash necessary
#elif (defined(LINUX) || defined(MACX)) && !defined(PGLINUX) && !defined(XLFLINUX) &&!( __GNUC__ >= 4)
data xtab /9/ ! Tab ... g77 has trouble with escape sequence
diff -u -r nwchem-7.0.2/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F nwchem-7.0.2-patched/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F
--- nwchem-7.0.2/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F 2020-10-13 13:16:26.000000000 +0900
+++ nwchem-7.0.2-patched/src/nwdft/rt_tddft/rtutils/rt_tddft_spatial_potential.F 2022-02-09 11:33:37.000000000 +0900
@@ -854,7 +854,8 @@
integer, intent(in) :: rtdb
C type(rt_params_t), intent(in) :: params
integer, intent(in) :: nao, nq
- double precision, intent(out) :: pot_ao(nao,nao), ovl_ao(nao,nao)
+ double precision, intent(inout) :: pot_ao(nao,nao)
+ double precision, intent(inout) :: ovl_ao(nao,nao)
character(len=*), parameter :: pname =
$ "rt_tddft_spatial_potential_print: "
diff -u -r nwchem-7.0.2/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F nwchem-7.0.2-patched/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F
--- nwchem-7.0.2/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F 2020-10-13 13:24:47.000000000 +0900
+++ nwchem-7.0.2-patched/src/nwpw/nwpwlib/nwpwxc/nwpwxc_vdw3a.F 2022-02-09 18:51:07.000000000 +0900
@@ -26,6 +26,7 @@
C For the GNU General Public License, see <http://www.gnu.org/licenses/>
subroutine nwpwxc_vdw3_dftd3(options,n,iz,xyz,lat,eout,g,g_lat)
+ use, intrinsic :: ieee_arithmetic
implicit none
character*(*) options
c number of atoms
@@ -826,7 +827,7 @@
if (util_isnan(dum)) call
c nwpwxc_stoprun('internal NaN-error')
#else
- if (ISNAN(dum)) call nwpwxc_stoprun('internal NaN-error')
+ if (ieee_is_nan(dum)) call nwpwxc_stoprun('internal NaN-error')
#endif
! if (dum/=dum) call nwpwxc_stoprun('internal NaN-error')
if(dum.gt.1.d-8) then
diff -u -r nwchem-7.0.2/src/selci/conf.F nwchem-7.0.2-patched/src/selci/conf.F
--- nwchem-7.0.2/src/selci/conf.F 2020-10-13 13:16:27.000000000 +0900
+++ nwchem-7.0.2-patched/src/selci/conf.F 2022-02-09 16:09:46.000000000 +0900
@@ -10,7 +10,6 @@
*
* $Id$
*
-*include "implicit.fh"
#include "cconf.fh"
#include "mptr.fh"
#include "cselcifiles.fh"
diff -u -r nwchem-7.0.2/src/tools/guess-mpidefs nwchem-7.0.2-patched/src/tools/guess-mpidefs
--- nwchem-7.0.2/src/tools/guess-mpidefs 2020-10-13 13:16:27.000000000 +0900
+++ nwchem-7.0.2-patched/src/tools/guess-mpidefs 2022-02-08 14:21:52.000000000 +0900
@@ -1,10 +1,10 @@
#!/usr/bin/env bash
#
declare -a LIST_MPIFWRAP
-LIST_MPIFWRAP=( 'mpif90' 'mpiifort' 'mpifc' 'mpixlf_r' 'mpixlf' 'mpif77' )
+LIST_MPIFWRAP=( 'mpif90' 'mpiifort' 'mpifc' 'mpixlf_r' 'mpixlf' 'mpif77' 'mpifrt')
export LIST_MPIFWRAP
declare -a LIST_MPICWRAP
-LIST_MPICWRAP=( 'mpicc' 'mpixlc_r' 'mpixlc' 'mpigcc' 'mpiicc' )
+LIST_MPICWRAP=( 'mpicc' 'mpixlc_r' 'mpixlc' 'mpigcc' 'mpiicc' 'mpifcc')
export LIST_MPICWRAP
function usage()
{

View file

@ -27,6 +27,12 @@ class Nwchem(Package):
variant('openmp', default=False, description='Enables OpenMP support') variant('openmp', default=False, description='Enables OpenMP support')
variant('mpipr', default=False, description='Enables ARMCI with progress rank') variant('mpipr', default=False, description='Enables ARMCI with progress rank')
# This patch is for the modification of the build system (e.g. compiler flags) and
# Fortran syntax to enable the compilation with Fujitsu compilers. The modification
# will be merged to the next release of NWChem (see https://github.com/nwchemgit/nwchem/issues/347
# for more detail.
patch('fj.patch', when='@7.0.2 %fj')
depends_on('blas') depends_on('blas')
depends_on('lapack') depends_on('lapack')
depends_on('mpi') depends_on('mpi')