hypre/AUTOTEST/machine-sunspot.sh
Wayne Mitchell a84fe35022
SYCL triangular solves, Chebyshev relaxation, etc. (#972)
Adding more sycl functionality including chebyshev relaxation and triangular solves,
which in turn enables Gauss-Seidel, ILU, etc.
2023-10-11 15:05:21 -07:00

107 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 1998 Lawrence Livermore National Security, LLC and other
# HYPRE Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
testname=`basename $0 .sh`
# Echo usage information
case $1 in
-h|-help)
cat <<EOF
**** Only run this script on sunspot nodes ****
**** Test with: ****
**** export SYCL_CACHE_PERSISTENT=1 ****
**** export SYCL_CACHE_THRESHOLD=0 ****
**** module load oneapi/eng-compiler/2023.05.15.007 ****
**** module load mpich/52.2/icc-all-pmix-gpu ****
**** A custom oneDPL install is also required: ****
**** git clone https://github.com/oneapi-src/oneDPL.git ****
**** cd oneDPL ****
**** git checkout fda906e3994782bbe9e898582b129a7525c4428c ****
**** export DPLROOT=$(pwd) ****
$0 [-h|-help] {src_dir}
where: -h|-help prints this usage information and exits
{src_dir} is the hypre source directory
This script runs a number of tests suitable for the syrah cluster.
Example usage: $0 ../src
EOF
exit
;;
esac
# Setup
test_dir=`pwd`
output_dir=`pwd`/$testname.dir
rm -fr $output_dir
mkdir -p $output_dir
src_dir=`cd $1; pwd`
shift
# Basic build and run tests
mo="-j test"
eo=""
rtol="0.0"
atol="3e-15"
#save=`echo $(hostname) | sed 's/[0-9]\+$//'`
save="sunspot"
##########
## SYCL ##
##########
# SYCL with UM in debug mode [ij, struct]
# WM: I suppress all warnings for sycl files for now
co="--enable-debug --with-sycl --enable-unified-memory CC=mpicc CXX=mpicxx --disable-fortran --with-extra-CFLAGS=\\'-Wno-unused-but-set-variable -Wno-unused-variable -Wno-builtin-macro-redefined -Rno-debug-disables-optimization\\' --with-extra-CUFLAGS=\\'-w\\' --with-MPI-include=${MPI_ROOT}/include --with-MPI-libs=mpi --with-MPI-lib-dirs=${MPI_ROOT}/lib"
ro="-ij-gpu -struct -rt -save ${save} -script gpu_tile_compact.sh -rtol ${rtol} -atol ${atol}"
./test.sh basic.sh $src_dir -co: $co -mo: $mo -ro: $ro
./renametest.sh basic $output_dir/basic-sycl-um
# SYCL with bigint (compile only)
# WM: I suppress all warnings for sycl files for now
co="--enable-bigint --with-sycl --enable-unified-memory CC=mpicc CXX=mpicxx --disable-fortran --with-extra-CFLAGS=\\'-Wno-unused-but-set-variable -Wno-unused-variable -Wno-builtin-macro-redefined -Rno-debug-disables-optimization\\' --with-extra-CUFLAGS=\\'-w\\' --with-MPI-include=${MPI_ROOT}/include --with-MPI-libs=mpi --with-MPI-lib-dirs=${MPI_ROOT}/lib"
./test.sh basic.sh $src_dir -co: $co -mo: $mo
./renametest.sh basic $output_dir/basic-sycl-bigint
############
## OMP4.5 ##
############
# WM: todo
# OMP 4.5 without UM in debug mode [struct]
# co="--with-device-openmp --enable-debug --enable-fortran=no --with-extra-CXXFLAGS=\\'-Wno-missing-prototype-for-cc\\' --with-extra-CFLAGS=\\'-Wno-missing-prototype-for-cc\\' CC= CXX= --with-MPI-include=${MPI_ROOT}/include --with-MPI-libs=mpi --with-MPI-lib-dirs=${MPI_ROOT}/lib"
# ro="-struct -rt -save ${save} -script gpu_tile_compact.sh"
# ./test.sh basic.sh $src_dir -co: $co -mo: $mo -ro: $ro
# ./renametest.sh basic $output_dir/basic-deviceomp-nonum-debug-struct
############
## KOKKOS ##
############
# WM: todo
# Kokkos without UM in debug mode [struct]
# co="--with-device-openmp --with-kokkos --enable-debug --with-kokkos-include=$KOKKOS_HOME/include --with-kokkos-lib=$KOKKOS_HOME/lib64/libkokkoscore.a --with-cxxstandard=17 --with-extra-CXXFLAGS=\\'-fno-exceptions -D__STRICT_ANSI__\\' --enable-fortran=no CC= CXX= --with-MPI-include=${MPI_ROOT}/include --with-MPI-libs=mpi --with-MPI-lib-dirs=${MPI_ROOT}/lib"
# ro="-struct -rt -save ${save} -script gpu_tile_compact.sh"
# ./test.sh basic.sh $src_dir -co: $co -mo: $mo -ro: $ro
# ./renametest.sh basic $output_dir/basic-kokkos-nonum-debug-struct
##########################################################
# Echo to stderr all nonempty error files in $output_dir #
##########################################################
for errfile in $( find $output_dir ! -size 0 -name "*.err" )
do
echo $errfile >&2
done