summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com>2021-09-25 12:19:43 +0530
committerGitHub <noreply@github.com>2021-09-25 00:49:43 -0600
commited13addf3bd689f4fdf23ee7804d69aae2c7929b (patch)
tree2e9f2a88af01b01cb319e70dbffba7fb4145281e
parentb8e21f2b0b1d37a1bffaca0db3f6a7dbe242f02d (diff)
downloadspack-ed13addf3bd689f4fdf23ee7804d69aae2c7929b.tar.gz
spack-ed13addf3bd689f4fdf23ee7804d69aae2c7929b.tar.bz2
spack-ed13addf3bd689f4fdf23ee7804d69aae2c7929b.tar.xz
spack-ed13addf3bd689f4fdf23ee7804d69aae2c7929b.zip
Cloverleaf: adding AOCC support (#26148)
Co-authored-by: Mohan Babu <mohbabul@amd.com>
-rw-r--r--var/spack/repos/builtin/packages/cloverleaf/aocc_support.patch66
-rw-r--r--var/spack/repos/builtin/packages/cloverleaf/package.py6
2 files changed, 72 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/cloverleaf/aocc_support.patch b/var/spack/repos/builtin/packages/cloverleaf/aocc_support.patch
new file mode 100644
index 0000000000..74d48a6812
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cloverleaf/aocc_support.patch
@@ -0,0 +1,66 @@
+--- CloverLeaf_ref/Makefile 2021-09-22 04:02:11.724415652 -0500
++++ CloverLeaf_ref/Makefile_aocc 2021-09-22 04:08:10.620607168 -0500
+@@ -31,6 +31,7 @@
+ # To select a OpenMP compiler option, do this in the shell before typing make:-
+ #
+ # export COMPILER=INTEL # to select the Intel flags
++# export COMPILER=AOCC # to select the AOCC flags
+ # export COMPILER=SUN # to select the Sun flags
+ # export COMPILER=GNU # to select the Gnu flags
+ # export COMPILER=CRAY # to select the Cray flags
+@@ -41,6 +42,7 @@
+ # or this works as well:-
+ #
+ # make COMPILER=INTEL
++# make COMPILER=AOCC
+ # make COMPILER=SUN
+ # make COMPILER=GNU
+ # make COMPILER=CRAY
+@@ -63,6 +65,7 @@
+ endif
+
+ OMP_INTEL = -openmp
++OMP_AOCC = -fopenmp
+ OMP_SUN = -xopenmp=parallel -vpara
+ OMP_GNU = -fopenmp
+ OMP_CRAY =
+@@ -73,6 +76,7 @@
+ OMP=$(OMP_$(COMPILER))
+
+ FLAGS_INTEL = -O3 -no-prec-div
++FLAGS_AOCC = -O3 -funroll-loops
+ FLAGS_SUN = -fast -xipo=2 -Xlistv4
+ FLAGS_GNU = -O3 -march=native -funroll-loops
+ FLAGS_CRAY = -em -ra -h acc_model=fast_addr:no_deep_copy:auto_async_all
+@@ -82,6 +86,7 @@
+ FLAGS_ARM = -O3 -ffp-contract=fast -march=armv8.1-a -mcpu=native
+
+ CFLAGS_INTEL = -O3 -no-prec-div -restrict -fno-alias
++CFLAGS_AOCC = -O3 -funroll-loops
+ CFLAGS_SUN = -fast -xipo=2
+ CFLAGS_GNU = -O3 -march=native -funroll-loops
+ CFLAGS_CRAY = -em -h list=a
+@@ -93,6 +98,7 @@
+
+ ifdef DEBUG
+ FLAGS_INTEL = -O0 -g -debug all -check all -traceback -check noarg_temp_created
++ FLAGS_AOCC = -O0 -g -O -Wall -Wextra -fsanitize=address
+ FLAGS_SUN = -g -xopenmp=noopt -stackvar -u -fpover=yes -C -ftrap=common
+ FLAGS_GNU = -O0 -g -O -Wall -Wextra -fbounds-check
+ FLAGS_CRAY = -O0 -g -em -eD
+@@ -103,6 +109,7 @@
+ FLAGS_ = -O0 -g
+
+ CFLAGS_INTEL = -O0 -g -debug all -traceback
++ CFLAGS_AOCC = -O0 -g -Wall -Wextra -fsanitize=address
+ CFLAGS_SUN = -g -O0 -xopenmp=noopt -stackvar -u -fpover=yes -C -ftrap=common
+ CFLAGS_GNU = -O0 -g -O -Wall -Wextra -fbounds-check
+ CFLAGS_CRAY = -O0 -g -em -eD
+@@ -115,6 +122,7 @@
+
+ ifdef IEEE
+ I3E_INTEL = -fp-model strict -fp-model source -prec-div -prec-sqrt
++ I3E_AOCC = -ffast-math
+ I3E_SUN = -fsimple=0 -fns=no
+ I3E_GNU = -ffloat-store
+ I3E_CRAY = -hflex_mp=intolerant
diff --git a/var/spack/repos/builtin/packages/cloverleaf/package.py b/var/spack/repos/builtin/packages/cloverleaf/package.py
index 6b5d3fd042..e77a94d9a4 100644
--- a/var/spack/repos/builtin/packages/cloverleaf/package.py
+++ b/var/spack/repos/builtin/packages/cloverleaf/package.py
@@ -36,6 +36,12 @@ class Cloverleaf(MakefilePackage):
conflicts('build=serial', when='%aocc', msg="Currently AOCC supports only ref variant")
conflicts('@1.1', when='%aocc', msg="AOCC support is provided from version v.1.3 and above")
+ @run_before('build')
+ def patch_for_reference_module(self):
+ if self.spec.satisfies("@master %aocc"):
+ fp = join_path(self.package_dir, "aocc_support.patch")
+ which('patch')('-s', '-p0', '-i', '{0}'.format(fp), '-d', '.')
+
@property
def type_of_build(self):
build = 'ref'