From 843a07e9d1c1f2c57078691dab3e9487eb0ecf78 Mon Sep 17 00:00:00 2001 From: Vasileios Karakasis Date: Fri, 15 Feb 2019 10:49:18 +0100 Subject: [PATCH] Fix tags of flexible tests + other improvements - Tidy up some test files and move to more appropriate folders - Remove deprecated calls - New tag `ops` for selecting the ops flexible tests --- cscs-checks/cuda/cuda_memtest_check.py | 19 ++++----- cscs-checks/cuda/src/cuda_memtest-1.2.3.patch | 16 ++++++++ .../microbenchmarks/gpu_burn/gpu_burn_test.py | 1 + .../microbenchmarks/hpcg/hpcg_benchmark.py | 4 +- .../microbenchmarks/mpi/mpi_helloworld.py | 40 ------------------- .../microbenchmarks/osu/flexible_a2a.py | 27 ------------- cscs-checks/microbenchmarks/osu/osu_tests.py | 26 +++++++++++- cscs-checks/prgenv/mpi.py | 32 +++++++++++++++ .../mpi => prgenv}/src/mpi_helloworld.c | 0 9 files changed, 84 insertions(+), 81 deletions(-) create mode 100644 cscs-checks/cuda/src/cuda_memtest-1.2.3.patch delete mode 100644 cscs-checks/microbenchmarks/mpi/mpi_helloworld.py delete mode 100644 cscs-checks/microbenchmarks/osu/flexible_a2a.py rename cscs-checks/{microbenchmarks/mpi => prgenv}/src/mpi_helloworld.c (100%) diff --git a/cscs-checks/cuda/cuda_memtest_check.py b/cscs-checks/cuda/cuda_memtest_check.py index 8eebc1daf2..8da422dbae 100644 --- a/cscs-checks/cuda/cuda_memtest_check.py +++ b/cscs-checks/cuda/cuda_memtest_check.py @@ -3,25 +3,27 @@ @rfm.simple_test -class FlexibleCudaMemtest(rfm.RegressionTest): +class CudaMemtest(rfm.RegressionTest): def __init__(self): super().__init__() self.valid_systems = ['daint:gpu', 'dom:gpu'] self.valid_prog_environs = ['PrgEnv-cray'] - self.descr = 'Flexible Cuda Memtest' + self.descr = 'Flexible CUDA Memtest' self.maintainers = ['TM', 'VK'] self.num_tasks_per_node = 1 self.num_tasks = 0 self.num_gpus_per_node = 1 self.modules = ['cudatoolkit'] - self.sourcesdir = None src_url = ('https://downloads.sourceforge.net/project/cudagpumemtest/' 'cuda_memtest-1.2.3.tar.gz') self.prebuild_cmd = [ 'wget %s' % src_url, - 'tar -xzf cuda_memtest-1.2.3.tar.gz --strip-components=1' + 'tar -xzf cuda_memtest-1.2.3.tar.gz', + 'cd cuda_memtest-1.2.3', + 'patch -p1 < ../cuda_memtest-1.2.3.patch' ] - self.executable = 'cuda_memtest_sm20' + self.build_system = 'Make' + self.executable = './cuda_memtest-1.2.3/cuda_memtest' self.executable_opts = ['--disable_test', '6', '--num_passes', '1'] valid_test_ids = {i for i in range(11) if i not in {6, 9}} @@ -35,14 +37,9 @@ def __init__(self): *assert_finished_tests, sn.assert_not_found('(?i)ERROR', self.stdout), sn.assert_not_found('(?i)ERROR', self.stderr)]) + self.tags = {'diagnostic', 'ops'} @property @sn.sanity_function def num_tasks_assigned(self): return self.job.num_tasks - - def compile(self): - # Here we set the target executable since by default the Makefile - # builds both cuda_memtest_sm13 and cuda_memtest_sm20. - # sm20 is the maximum gpu architecture supported by cuda memtest. - super().compile(options='cuda_memtest_sm20') diff --git a/cscs-checks/cuda/src/cuda_memtest-1.2.3.patch b/cscs-checks/cuda/src/cuda_memtest-1.2.3.patch new file mode 100644 index 0000000000..50e179b3c5 --- /dev/null +++ b/cscs-checks/cuda/src/cuda_memtest-1.2.3.patch @@ -0,0 +1,16 @@ +Binary files cuda_memtest-1.2.3-orig/cuda_memtest and cuda_memtest-1.2.3/cuda_memtest differ +Binary files cuda_memtest-1.2.3-orig/cuda_memtest.o and cuda_memtest-1.2.3/cuda_memtest.o differ +diff -urN cuda_memtest-1.2.3-orig/Makefile cuda_memtest-1.2.3/Makefile +--- cuda_memtest-1.2.3-orig/Makefile 2012-02-06 21:39:33.000000000 +0100 ++++ cuda_memtest-1.2.3/Makefile 2019-02-15 10:16:10.769307000 +0100 +@@ -54,7 +54,7 @@ + + CUDA_INCLUDES := -I. -I${CUDA_INSTALL_PATH}/include + CUDALIB := -L${CUDA_INSTALL_PATH}/lib64 -lcuda -lcudart -lpthread +-CFLAGS= -arch sm_13 -DSM_13 -O3 ++CFLAGS= -arch sm_60 -DSM_60 -O3 + CFLAGS_SM10= -arch sm_10 -DSM_10 -O3 + CFLAGS_SM20= -arch sm_20 -DSM_20 -O3 + CUDA_SRC_FILES= cuda_memtest.cu misc.cpp tests.cu +Binary files cuda_memtest-1.2.3-orig/misc.o and cuda_memtest-1.2.3/misc.o differ +Binary files cuda_memtest-1.2.3-orig/tests.o and cuda_memtest-1.2.3/tests.o differ diff --git a/cscs-checks/microbenchmarks/gpu_burn/gpu_burn_test.py b/cscs-checks/microbenchmarks/gpu_burn/gpu_burn_test.py index 2f304d4449..6596a0a12e 100644 --- a/cscs-checks/microbenchmarks/gpu_burn/gpu_burn_test.py +++ b/cscs-checks/microbenchmarks/gpu_burn/gpu_burn_test.py @@ -59,6 +59,7 @@ def __init__(self): self.num_tasks_per_node = 1 self.maintainers = ['AJ', 'VK', 'TM'] + self.tags = {'diagnostic', 'benchmark'} @property @sn.sanity_function diff --git a/cscs-checks/microbenchmarks/hpcg/hpcg_benchmark.py b/cscs-checks/microbenchmarks/hpcg/hpcg_benchmark.py index 9149aacef4..f2a70aaebe 100644 --- a/cscs-checks/microbenchmarks/hpcg/hpcg_benchmark.py +++ b/cscs-checks/microbenchmarks/hpcg/hpcg_benchmark.py @@ -46,7 +46,7 @@ def __init__(self): } self.maintainers = ['SK'] - self.tags = {'diagnostic'} + self.tags = {'diagnostic', 'benchmark'} @property @sn.sanity_function @@ -122,7 +122,7 @@ def __init__(self): } self.maintainers = ['SK'] - self.tags = {'diagnostic'} + self.tags = {'diagnostic', 'benchmark'} @property @sn.sanity_function diff --git a/cscs-checks/microbenchmarks/mpi/mpi_helloworld.py b/cscs-checks/microbenchmarks/mpi/mpi_helloworld.py deleted file mode 100644 index 0bc6bee912..0000000000 --- a/cscs-checks/microbenchmarks/mpi/mpi_helloworld.py +++ /dev/null @@ -1,40 +0,0 @@ -import os -import reframe.utility.sanity as sn - -from reframe.core.pipeline import RegressionTest - - -class MPIHelloWorldTest(RegressionTest): - def __init__(self, **kwargs): - super().__init__('mpi_helloworld_check', - os.path.dirname(__file__), **kwargs) - self.valid_systems = ['daint:gpu', 'daint:mc', - 'dom:gpu', 'dom:mc', - 'kesch:cn', 'kesch:pn', - 'leone:normal', 'monch:compute'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-intel', 'PrgEnv-pgi'] - if self.current_system.name == 'kesch': - self.exclusive_access = True - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-intel'] - - self.descr = 'MPI Hello World' - self.sourcepath = 'mpi_helloworld.c' - self.maintainers = ['RS', 'VK'] - self.num_tasks_per_node = 1 - self.num_tasks = 0 - num_processes = sn.extractsingle( - r'Received correct messages from (?P\d+) processes', - self.stdout, 'nprocs', int) - self.sanity_patterns = sn.assert_eq(num_processes, - self.num_tasks_assigned-1) - - @property - @sn.sanity_function - def num_tasks_assigned(self): - return self.job.num_tasks - - -def _get_checks(**kwargs): - return [MPIHelloWorldTest(**kwargs)] diff --git a/cscs-checks/microbenchmarks/osu/flexible_a2a.py b/cscs-checks/microbenchmarks/osu/flexible_a2a.py deleted file mode 100644 index c6b340e17d..0000000000 --- a/cscs-checks/microbenchmarks/osu/flexible_a2a.py +++ /dev/null @@ -1,27 +0,0 @@ -import reframe as rfm -import reframe.utility.sanity as sn - - -@rfm.simple_test -class FlexibleAlltoallTest(rfm.RegressionTest): - def __init__(self): - super().__init__() - self.valid_systems = ['daint:gpu', 'daint:mc', - 'dom:gpu', 'dom:mc', - 'kesch:cn', 'kesch:pn', 'leone:normal'] - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-intel', 'PrgEnv-pgi'] - if self.current_system.name == 'kesch': - self.exclusive_access = True - self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', - 'PrgEnv-intel'] - - self.descr = 'Flexible alltoall osu microbenchmark' - self.executable = 'osu_alltoall' - self.maintainers = ['RS', 'VK'] - self.num_tasks_per_node = 1 - self.num_tasks = 0 - self.sanity_patterns = sn.assert_found(r'^1048576', self.stdout) - - def compile(self): - super().compile(makefile='Makefile_alltoall') diff --git a/cscs-checks/microbenchmarks/osu/osu_tests.py b/cscs-checks/microbenchmarks/osu/osu_tests.py index 0c84c53a47..5e5919b321 100644 --- a/cscs-checks/microbenchmarks/osu/osu_tests.py +++ b/cscs-checks/microbenchmarks/osu/osu_tests.py @@ -9,7 +9,7 @@ def __init__(self, variant): super().__init__() self.strict_check = False self.valid_systems = ['daint:gpu', 'dom:gpu'] - self.descr = 'Alltoall osu microbenchmark' + self.descr = 'Alltoall OSU microbenchmark' self.build_system = 'Make' self.build_system.makefile = 'Makefile_alltoall' self.executable = './osu_alltoall' @@ -48,6 +48,30 @@ def __init__(self, variant): } +@rfm.simple_test +class FlexAlltoallTest(rfm.RegressionTest): + def __init__(self): + super().__init__() + self.valid_systems = ['daint:gpu', 'daint:mc', + 'dom:gpu', 'dom:mc', + 'kesch:cn', 'kesch:pn', 'leone:normal'] + self.valid_prog_environs = ['PrgEnv-cray'] + if self.current_system.name == 'kesch': + self.exclusive_access = True + self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel'] + + self.descr = 'Flexible Alltoall OSU test' + self.build_system = 'Make' + self.build_system.makefile = 'Makefile_alltoall' + self.executable = './osu_alltoall' + self.maintainers = ['RS', 'VK'] + self.num_tasks_per_node = 1 + self.num_tasks = 0 + self.sanity_patterns = sn.assert_found(r'^1048576', self.stdout) + self.tags = {'diagnostic', 'ops'} + + # FIXME: This test is obsolete; it is kept only for reference. @rfm.parameterized_test(*({'num_tasks': i} for i in range(2, 10, 2))) class AlltoallMonchAcceptanceTest(AlltoallTest): diff --git a/cscs-checks/prgenv/mpi.py b/cscs-checks/prgenv/mpi.py index 0c74f12ee0..19c5a382aa 100644 --- a/cscs-checks/prgenv/mpi.py +++ b/cscs-checks/prgenv/mpi.py @@ -62,3 +62,35 @@ def __init__(self, required_thread): ]) self.maintainers = ['JG'] self.tags = {'production'} + + +@rfm.simple_test +class MpiHelloTest(rfm.RegressionTest): + def __init__(self): + super().__init__() + self.valid_systems = ['daint:gpu', 'daint:mc', + 'dom:gpu', 'dom:mc', + 'kesch:cn', 'kesch:pn', + 'leone:normal', 'monch:compute'] + self.valid_prog_environs = ['PrgEnv-cray'] + if self.current_system.name == 'kesch': + self.exclusive_access = True + self.valid_prog_environs = ['PrgEnv-cray', 'PrgEnv-gnu', + 'PrgEnv-intel'] + + self.descr = 'MPI Hello World' + self.sourcepath = 'mpi_helloworld.c' + self.maintainers = ['RS', 'VK'] + self.num_tasks_per_node = 1 + self.num_tasks = 0 + num_processes = sn.extractsingle( + r'Received correct messages from (?P\d+) processes', + self.stdout, 'nprocs', int) + self.sanity_patterns = sn.assert_eq(num_processes, + self.num_tasks_assigned-1) + self.tags = {'diagnostic', 'ops'} + + @property + @sn.sanity_function + def num_tasks_assigned(self): + return self.job.num_tasks diff --git a/cscs-checks/microbenchmarks/mpi/src/mpi_helloworld.c b/cscs-checks/prgenv/src/mpi_helloworld.c similarity index 100% rename from cscs-checks/microbenchmarks/mpi/src/mpi_helloworld.c rename to cscs-checks/prgenv/src/mpi_helloworld.c