New package: SCALE (#25574)
This commit is contained in:
parent
f164bae4a3
commit
3484434fe2
51
var/spack/repos/builtin/packages/scale/fj-own_compiler.patch
Normal file
51
var/spack/repos/builtin/packages/scale/fj-own_compiler.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
diff --git a/sysdep/Makedef.FUGAKU b/sysdep/Makedef.FUGAKU
|
||||||
|
index 37d41388a..c08707165 100644
|
||||||
|
--- a/sysdep/Makedef.FUGAKU
|
||||||
|
+++ b/sysdep/Makedef.FUGAKU
|
||||||
|
@@ -7,8 +7,8 @@
|
||||||
|
##### Fortran setting
|
||||||
|
#FFLAGS is set in Mkinclude. FFLAGS_DEBUG is used if SCALE_DEBUG=T
|
||||||
|
|
||||||
|
-FC = mpifrtpx
|
||||||
|
-SFC = frtpx
|
||||||
|
+FC = mpifrt
|
||||||
|
+SFC = frt
|
||||||
|
MODDIROPT = -M
|
||||||
|
|
||||||
|
FFLAGS_FAST = -Kfast,parallel,ocl,preex,array_private,noalias=s,mfunc=2 \
|
||||||
|
@@ -34,9 +34,9 @@ FFLAGS_DEBUG = -O0 \
|
||||||
|
##### C setting
|
||||||
|
#CFLAGS is set in Mkinclude. CFLAGS_DEBUG is used if SCALE_DEBUG=T
|
||||||
|
|
||||||
|
-CC = mpifccpx
|
||||||
|
+CC = mpifcc
|
||||||
|
|
||||||
|
-CFLAGS_FAST = -Kfast,parallel,ocl,preex,array_private,region_extension,restp=all -Ksimd
|
||||||
|
+CFLAGS_FAST = -Kfast,ocl,preex -Ksimd
|
||||||
|
CFLAGS_DEBUG = -O0
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/sysdep/Makedef.FX100 b/sysdep/Makedef.FX100
|
||||||
|
index 30077bd21..a26d29928 100644
|
||||||
|
--- a/sysdep/Makedef.FX100
|
||||||
|
+++ b/sysdep/Makedef.FX100
|
||||||
|
@@ -7,8 +7,8 @@
|
||||||
|
##### Fortran setting
|
||||||
|
#FFLAGS is set in Mkinclude. FFLAGS_DEBUG is used if SCALE_DEBUG=T
|
||||||
|
|
||||||
|
-FC = mpifrtpx
|
||||||
|
-SFC = frtpx
|
||||||
|
+FC = mpifrt
|
||||||
|
+SFC = frt
|
||||||
|
MODDIROPT = -M
|
||||||
|
|
||||||
|
FFLAGS_FAST = -Kfast,parallel,ocl,preex,array_private,noalias=s,mfunc=2 \
|
||||||
|
@@ -35,7 +35,7 @@ FFLAGS_DEBUG = -O0 \
|
||||||
|
##### C setting
|
||||||
|
#CFLAGS is set in Mkinclude. CFLAGS_DEBUG is used if SCALE_DEBUG=T
|
||||||
|
|
||||||
|
-CC = mpifccpx
|
||||||
|
+CC = mpifcc
|
||||||
|
|
||||||
|
CFLAGS_FAST = -Kfast,parallel,ocl,preex,array_private,region_extension,restp=all -Ksimd
|
||||||
|
CFLAGS_DEBUG = -O0
|
84
var/spack/repos/builtin/packages/scale/package.py
Normal file
84
var/spack/repos/builtin/packages/scale/package.py
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
# Copyright 2013-2021 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)
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Scale(MakefilePackage):
|
||||||
|
"""SCALE (Scalable Computing for Advanced Library and Environment) is
|
||||||
|
a basic library for weather and climate model of the earth and planets
|
||||||
|
aimed to be widely used in various models.
|
||||||
|
The SCALE library is developed with co-design by researchers of
|
||||||
|
computational science and computer science."""
|
||||||
|
homepage = "https://scale.riken.jp/"
|
||||||
|
url = "https://scale.riken.jp/archives/scale-5.4.4.tar.gz"
|
||||||
|
|
||||||
|
maintainers = ['t-yamaura']
|
||||||
|
|
||||||
|
version('5.4.4', sha256='7d0ec4069c15d8b9ec7166f32c9a2eda772d975a8e08e420e6b16891ceebb316', preferred=True)
|
||||||
|
version('5.3.6', sha256='3ab0d42cdb16eee568c65b880899e861e464e92088ceb525066c726f31d04848')
|
||||||
|
version('5.2.6', sha256='e63141d05810e3f41fc89c9eb15e2319d753832adabdac8f7c8dd7acc0f5f8ed')
|
||||||
|
|
||||||
|
depends_on('openmpi', type=('build', 'link', 'run'))
|
||||||
|
depends_on('netcdf-c')
|
||||||
|
depends_on('netcdf-fortran')
|
||||||
|
depends_on('parallel-netcdf')
|
||||||
|
|
||||||
|
patch('fj-own_compiler.patch', when='%fj')
|
||||||
|
|
||||||
|
parallel = False
|
||||||
|
|
||||||
|
def setup_build_environment(self, build_env):
|
||||||
|
build_env.set('PREFIX', self.prefix)
|
||||||
|
|
||||||
|
def build(self, spec, prefix):
|
||||||
|
scale_sys_str = ''
|
||||||
|
if self.spec.satisfies('platform=linux %gcc'):
|
||||||
|
scale_sys_str = 'Linux64-gnu-ompi'
|
||||||
|
elif self.spec.satisfies('platform=linux %intel'):
|
||||||
|
scale_sys_str = 'Linux64-intel-impi'
|
||||||
|
elif self.spec.satisfies('platform=linux %pgi'):
|
||||||
|
scale_sys_str = 'Linux64-pgi-ompi'
|
||||||
|
elif self.spec.satisfies('platform=linux target=arm %gcc'):
|
||||||
|
scale_sys_str = 'LinuxARM-gnu-ompi'
|
||||||
|
elif self.spec.satisfies('platform=linux target=a64fx %fj'):
|
||||||
|
scale_sys_str = 'FUGAKU'
|
||||||
|
elif self.spec.satisfies('platform=linux target=s64fx %fj'):
|
||||||
|
scale_sys_str = 'FX100'
|
||||||
|
elif self.spec.satisfies('platform=darwin %gcc'):
|
||||||
|
scale_sys_str = 'MacOSX-gnu-ompi'
|
||||||
|
|
||||||
|
if scale_sys_str == '':
|
||||||
|
raise InstallError('unsupported arch and compiler combination.')
|
||||||
|
env['SCALE_SYS'] = scale_sys_str
|
||||||
|
|
||||||
|
# set SCALE_NETCDF_INCLUDE
|
||||||
|
nc_config = which('nc-config')
|
||||||
|
nc_str = nc_config('--cflags', '--fflags', output=str)
|
||||||
|
try:
|
||||||
|
env['SCALE_NETCDF_INCLUDE'] = nc_str.replace('\n', ' ')
|
||||||
|
except TypeError: # for python3
|
||||||
|
env['SCALE_NETCDF_INCLUDE'] = nc_str.decode().replace('\n', ' ')
|
||||||
|
|
||||||
|
# set SCALE_NETCDF_LIBS
|
||||||
|
nc_config = which('nc-config')
|
||||||
|
nc_str = nc_config('--libs', '--flibs', output=str)
|
||||||
|
try:
|
||||||
|
env['SCALE_NETCDF_LIBS'] = nc_str.replace('\n', ' ')
|
||||||
|
except TypeError: # for python3
|
||||||
|
env['SCALE_NETCDF_LIBS'] = nc_str.decode().replace('\n', ' ')
|
||||||
|
|
||||||
|
make()
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
make('install')
|
||||||
|
|
||||||
|
install_tree('bin', prefix.bin)
|
||||||
|
install_tree('lib', prefix.lib)
|
||||||
|
install_tree('doc', prefix.share.docs)
|
||||||
|
install_tree(os.path.join('scale-rm', 'test'),
|
||||||
|
os.path.join(prefix.share, 'test'))
|
Loading…
Reference in New Issue
Block a user