From 014500903db4fa5a1a9db04dc2068f07e4c04e2b Mon Sep 17 00:00:00 2001 From: Theofilos Manitaras Date: Tue, 21 Aug 2018 13:36:09 +0200 Subject: [PATCH 1/5] Adapt ddt regression test to PE 18.07 * Adapt to build systems. * Adapt to new syntax. * Remove unused Makefiles * Add build dependencies in the F90 Makefile in order to make the Fortran modules available. --- .../tools/profiling_and_debugging/ddt.py | 76 +++++++++---------- .../profiling_and_debugging/src/C++/Makefile | 18 ----- .../src/C++/Makefile_ddt | 23 +++--- .../profiling_and_debugging/src/C/Makefile | 19 ----- .../src/C/Makefile_ddt | 22 +++--- .../profiling_and_debugging/src/Cuda/Makefile | 26 ------- .../src/Cuda/Makefile_ddt | 28 ++++--- .../profiling_and_debugging/src/F90/Makefile | 18 ----- .../src/F90/Makefile_ddt | 32 +++++--- 9 files changed, 95 insertions(+), 167 deletions(-) delete mode 100644 cscs-checks/tools/profiling_and_debugging/src/C++/Makefile delete mode 100644 cscs-checks/tools/profiling_and_debugging/src/C/Makefile delete mode 100644 cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile delete mode 100644 cscs-checks/tools/profiling_and_debugging/src/F90/Makefile diff --git a/cscs-checks/tools/profiling_and_debugging/ddt.py b/cscs-checks/tools/profiling_and_debugging/ddt.py index 36040d8849..74c24125ce 100644 --- a/cscs-checks/tools/profiling_and_debugging/ddt.py +++ b/cscs-checks/tools/profiling_and_debugging/ddt.py @@ -1,28 +1,31 @@ import os +import reframe as rfm import reframe.utility.sanity as sn + from reframe.core.launchers import LauncherWrapper -from reframe.core.pipeline import RegressionTest -class DdtCheck(RegressionTest): - def __init__(self, lang, extension, **kwargs): - super().__init__('ddt_check_' + lang.replace('+', 'p'), - os.path.dirname(__file__), **kwargs) +class DdtCheck(rfm.RegressionTest): + def __init__(self, lang, extension): + super().__init__() + self.name = 'DDtCheck_' + lang.replace('+', 'p') + self.descr = 'DDt Check for %s' % lang self.lang = lang self.extension = extension - self.makefile = 'Makefile' + self.build_system = 'Make' + self.build_system.makefile = 'Makefile_ddt' self.executable = './jacobi' self.sourcesdir = os.path.join('src', lang) self.valid_prog_environs = ['PrgEnv-gnu'] self.modules = ['ddt'] self.prgenv_flags = { # 'PrgEnv-cray': ' -O2 -homp', - 'PrgEnv-gnu': ' -O2 -fopenmp', + 'PrgEnv-gnu': ['-O2', '-fopenmp'], # 'PrgEnv-intel': ' -O2 -qopenmp', # 'PrgEnv-pgi': ' -O2 -mp' } - self.flags = ' -g' + self.flags = ['-g'] self.num_tasks = 1 self.num_tasks_per_node = 1 self.num_cpus_per_task = 4 @@ -46,29 +49,27 @@ def __init__(self, lang, extension, **kwargs): def _set_compiler_flags(self): prgenv_flags = self.prgenv_flags[self.current_environ.name] - self.current_environ.cflags = self.flags + prgenv_flags - self.current_environ.cxxflags = self.flags + prgenv_flags - self.current_environ.fflags = self.flags + prgenv_flags - self.current_environ.ldflags = self.flags + prgenv_flags - - def compile(self, **job_opts): - self._set_compiler_flags() - super().compile(makefile=self.makefile, **job_opts) + self.build_system.cflags = self.flags + prgenv_flags + self.build_system.cxxflags = self.flags + prgenv_flags + self.build_system.fflags = self.flags + prgenv_flags + self.build_system.ldflags = self.flags + prgenv_flags def setup(self, partition, environ, **job_opts): super().setup(partition, environ, **job_opts) + self._set_compiler_flags() self.job.launcher = LauncherWrapper(self.job.launcher, 'ddt', self.ddt_options) +@rfm.parameterized_test(['F90', 'F90'], ['C', 'c'], ['C++', 'cc']) class DdtCpuCheck(DdtCheck): - def __init__(self, lang, extension, **kwargs): - super().__init__(lang, extension, **kwargs) + def __init__(self, lang, extension): + super().__init__(lang, extension) self.valid_systems = ['daint:gpu', 'daint:mc', 'dom:gpu', 'dom:mc', 'kesch:cn'] if self.current_system.name == 'kesch' and self.lang == 'C': - self.flags += ' -lm ' + self.flags += ['-lm'] residual_pattern = '_jacobi.%s:%d,residual' self.ddt_options = [ @@ -89,17 +90,17 @@ def __init__(self, lang, extension, **kwargs): ]) +@rfm.parameterized_test(['Cuda', 'cu']) class DdtGpuCheck(DdtCheck): - def __init__(self, lang, extension, **kwargs): - super().__init__(lang, extension, **kwargs) + def __init__(self, lang, extension): + super().__init__(lang, extension) self.valid_systems = ['daint:gpu', 'dom:gpu', 'kesch:cn'] self.num_gpus_per_node = 1 self.num_tasks_per_node = 1 self.system_modules = { 'daint': ['craype-accel-nvidia60'], - 'dom': ['craype-accel-nvidia60', - 'cudatoolkit/9.0.103_3.7-6.0.4.1_2.1__g72b395b'], + 'dom': ['craype-accel-nvidia60'], 'kesch': ['cudatoolkit'] } sysname = self.current_system.name @@ -115,6 +116,16 @@ def __init__(self, lang, extension, **kwargs): '--trace-at _jacobi-cuda-kernel.cu:111,residue' ] + self.flags += ['-DUSE_MPI'] + self.flags += ['-D_CSCS_ITMAX=5'] + + if self.current_system.name == 'kesch': + arch = 'sm_37' + self.flags += ['-lm', '-lcudart'] + else: + arch = 'sm_60' + self.build_system.options = ['NVCCFLAGS="-g -arch=%s"' % arch] + self.sanity_patterns = sn.all([ sn.assert_found('MPI implementation', 'ddtreport.txt'), sn.assert_found('Evaluate', 'ddtreport.txt'), @@ -127,22 +138,3 @@ def __init__(self, lang, extension, **kwargs): sn.assert_found(r'Every process in your program has terminated\.', 'ddtreport.txt') ]) - - def compile(self): - self.flags += ' -DUSE_MPI' - self.flags += ' -D_CSCS_ITMAX=5' - - if self.current_system.name == 'kesch': - arch = 'sm_37' - self.flags += ' -lm -lcudart' - else: - arch = 'sm_60' - options = ' NVCCFLAGS="-g -arch=%s"' % arch - super().compile(options=options) - - -def _get_checks(**kwargs): - return [DdtCpuCheck('F90', 'F90', **kwargs), - DdtCpuCheck('C', 'c', **kwargs), - DdtCpuCheck('C++', 'cc', **kwargs), - DdtGpuCheck('Cuda', 'cu', **kwargs)] diff --git a/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile b/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile deleted file mode 100644 index af833afb2d..0000000000 --- a/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -RM := rm -f -EXECUTABLE := jacobi - -all: jacobi - -OBJS := _main.o _jacobi.o - -$(OBJS): - $(PREP) $(CXX) $(CXXFLAGS) -c -o $(@) $(@:.o=.cc) - -$(EXECUTABLE): $(OBJS) - $(PREP) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(@) $(OBJS) - -clean: - -$(RM) $(OBJS) - -distclean: - -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile_ddt index 7b090205b7..af833afb2d 100644 --- a/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile_ddt +++ b/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile_ddt @@ -1,17 +1,18 @@ -LD = $(CXX) +RM := rm -f +EXECUTABLE := jacobi -OBJ = _jacobi.o _main.o -OBJ2 = $(subst _,$(PE_ENV)_,$(OBJ)) -LIB = +all: jacobi -.SUFFIXES: .o .cc +OBJS := _main.o _jacobi.o -%.o: %.cc - $(CXX) $(CXXFLAGS) $(DDTFLAGS) -c $< -o $(PE_ENV)$@ +$(OBJS): + $(PREP) $(CXX) $(CXXFLAGS) -c -o $(@) $(@:.o=.cc) -ddt_check: $(OBJ) - $(LD) $(LDFLAGS) $(OBJ2) $(LIB) -o $@ +$(EXECUTABLE): $(OBJS) + $(PREP) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(@) $(OBJS) clean: - rm -f *.o o_* *.mod ddt_check_cc - rm -fr *.ptx *.opt *.cg *.ap2 *.rpt *.cub *.lst *.xf + -$(RM) $(OBJS) + +distclean: + -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/C/Makefile b/cscs-checks/tools/profiling_and_debugging/src/C/Makefile deleted file mode 100644 index cb83700878..0000000000 --- a/cscs-checks/tools/profiling_and_debugging/src/C/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -RM := rm -f -EXECUTABLE := jacobi - -all: $(EXECUTABLE) - -OBJS := _main.o _jacobi.o -.SUFFIXES: .o .c - -$(OBJS): - $(PREP) $(CC) $(CFLAGS) -c -o $(@) $(@:.o=.c) - -$(EXECUTABLE): $(OBJS) - $(PREP) $(CC) $(CFLAGS) $(LDFLAGS) -o $(@) $(OBJS) - -clean: - -$(RM) $(OBJS) - -distclean: - -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/C/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/C/Makefile_ddt index 7aae321877..cb83700878 100644 --- a/cscs-checks/tools/profiling_and_debugging/src/C/Makefile_ddt +++ b/cscs-checks/tools/profiling_and_debugging/src/C/Makefile_ddt @@ -1,17 +1,19 @@ -LD = $(CC) +RM := rm -f +EXECUTABLE := jacobi -OBJ = _jacobi.o _main.o -OBJ2 = $(subst _,$(PE_ENV)_,$(OBJ)) -LIB = +all: $(EXECUTABLE) +OBJS := _main.o _jacobi.o .SUFFIXES: .o .c -%.o: %.c - $(CC) $(CFLAGS) $(DDTFLAGS) -c $< -o $(PE_ENV)$@ +$(OBJS): + $(PREP) $(CC) $(CFLAGS) -c -o $(@) $(@:.o=.c) -ddt_check: $(OBJ) - $(LD) $(LDFLAGS) $(OBJ2) $(LIB) -o $@ +$(EXECUTABLE): $(OBJS) + $(PREP) $(CC) $(CFLAGS) $(LDFLAGS) -o $(@) $(OBJS) clean: - rm -f *.o o_* *.mod ddt_check_c - rm -fr *.ptx *.opt *.cg *.ap2 *.rpt *.cub *.lst *.xf + -$(RM) $(OBJS) + +distclean: + -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile b/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile deleted file mode 100644 index e6cab09070..0000000000 --- a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -RM := rm -f -EXECUTABLE := jacobi - -all: $(EXECUTABLE) -LD = $(CC) - -OBJS = _jacobi-cuda-kernel.o _jacobi-cuda.o -# OBJ2 = $(subst _,$(PE_ENV)_,$(OBJ)) -LIB = - -.SUFFIXES: .o .cu .c - -%.o: %.cu - $(PREP) nvcc $(NVCCFLAGS) $(DDTFLAGS) -c $< -o $@ - -%.o: %.c - $(PREP) $(CC) $(CFLAGS) $(DDTFLAGS) -c $< -o $@ - -$(EXECUTABLE): $(OBJS) - $(PREP) $(LD) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIB) -o $@ - -clean: - -$(RM) $(OBJS) - -distclean: - -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile_ddt index d5217674b5..e6cab09070 100644 --- a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile_ddt +++ b/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile_ddt @@ -1,22 +1,26 @@ +RM := rm -f +EXECUTABLE := jacobi + +all: $(EXECUTABLE) LD = $(CC) -OBJ = _jacobi-cuda-kernel.o _jacobi-cuda.o -OBJ2 = $(subst _,$(PE_ENV)_,$(OBJ)) -LIB = +OBJS = _jacobi-cuda-kernel.o _jacobi-cuda.o +# OBJ2 = $(subst _,$(PE_ENV)_,$(OBJ)) +LIB = -.SUFFIXES: .o .cu +.SUFFIXES: .o .cu .c %.o: %.cu - nvcc $(NVCCFLAGS) $(DDTFLAGS) -c $< -o $(PE_ENV)$@ - -.SUFFIXES: .o .c + $(PREP) nvcc $(NVCCFLAGS) $(DDTFLAGS) -c $< -o $@ %.o: %.c - $(CC) $(CFLAGS) $(DDTFLAGS) -c $< -o $(PE_ENV)$@ + $(PREP) $(CC) $(CFLAGS) $(DDTFLAGS) -c $< -o $@ -ddt_check: $(OBJ) - $(LD) $(LDFLAGS) $(OBJ2) $(LIB) -o $@ +$(EXECUTABLE): $(OBJS) + $(PREP) $(LD) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIB) -o $@ clean: - rm -f *.o o_* *.mod ddt_check_cu - rm -fr *.ptx *.opt *.cg *.ap2 *.rpt *.cub *.lst *.xf + -$(RM) $(OBJS) + +distclean: + -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile b/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile deleted file mode 100644 index 7cadf76e7c..0000000000 --- a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -RM := rm -f -EXECUTABLE := jacobi - -all: jacobi - -OBJS := _variableDef.o _jacobi.o _main.o - -$(OBJS): - $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) - -$(EXECUTABLE): $(OBJS) - $(PREP) $(FC) $(FFLAGS) $(LDFLAGS) -o $(@) $(OBJS) - -clean: - -$(RM) $(OBJS) *.mod - -distclean: - -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt index 15788a53f2..fd99c9aa45 100644 --- a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt +++ b/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt @@ -1,17 +1,27 @@ -LD = $(FC) +RM := rm -f +EXECUTABLE := jacobi -OBJ = _variableDef.o _jacobiddt.o _main.o -OBJ2 = $(subst _,$(PE_ENV)_,$(OBJ)) -LIB = +all: jacobi -.SUFFIXES: .o .F90 +OBJS := _variableDef.o _jacobi.o _main.o -%.o: %.F90 - $(FC) $(FFLAGS) $(DDTFLAGS) -c $< -o $(PE_ENV)$@ +_variableDef.o: + $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) -ddt_check: $(OBJ) - $(LD) $(LDFLAGS) $(OBJ2) $(LIB) -o $@ +_jacobi.o: _variableDef.o + $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) + +_main.o: _variableDef.o _jacobi.o + $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) + +$(OBJS2): $(OBJS) + $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) + +$(EXECUTABLE): $(OBJS) $(OBJS2) + $(PREP) $(FC) $(FFLAGS) $(LDFLAGS) -o $(@) $(OBJS) $(OBJS2) clean: - rm -f *.o o_* *.mod ddt_check_F90 - rm -fr *.ptx *.opt *.cg *.ap2 *.rpt *.cub *.lst *.xf + -$(RM) $(OBJS) *.mod + +distclean: + -$(RM) $(OBJS) $(EXECUTABLE) From 011656b64aef8e80f71fe469833d3454092257b3 Mon Sep 17 00:00:00 2001 From: Theofilos Manitaras Date: Wed, 22 Aug 2018 09:13:23 +0200 Subject: [PATCH 2/5] Restrict max_concurrency for F90 test case * Revert removal of `Makefile`. * Remove `Makefile_ddt` from `src` and all programming languages. * Restrict `max_concurrency` in case of Fortran. --- .../tools/profiling_and_debugging/ddt.py | 6 ++++- .../src/C++/{Makefile_ddt => Makefile} | 0 .../src/C/{Makefile_ddt => Makefile} | 0 .../src/Cuda/{Makefile_ddt => Makefile} | 0 .../profiling_and_debugging/src/F90/Makefile | 18 +++++++++++++ .../src/F90/Makefile_ddt | 27 ------------------- 6 files changed, 23 insertions(+), 28 deletions(-) rename cscs-checks/tools/profiling_and_debugging/src/C++/{Makefile_ddt => Makefile} (100%) rename cscs-checks/tools/profiling_and_debugging/src/C/{Makefile_ddt => Makefile} (100%) rename cscs-checks/tools/profiling_and_debugging/src/Cuda/{Makefile_ddt => Makefile} (100%) create mode 100644 cscs-checks/tools/profiling_and_debugging/src/F90/Makefile delete mode 100644 cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt diff --git a/cscs-checks/tools/profiling_and_debugging/ddt.py b/cscs-checks/tools/profiling_and_debugging/ddt.py index 74c24125ce..df7ec1ce13 100644 --- a/cscs-checks/tools/profiling_and_debugging/ddt.py +++ b/cscs-checks/tools/profiling_and_debugging/ddt.py @@ -14,7 +14,11 @@ def __init__(self, lang, extension): self.lang = lang self.extension = extension self.build_system = 'Make' - self.build_system.makefile = 'Makefile_ddt' + self.build_system.makefile = 'Makefile' + # NOTE: Restrict concurrency to allow creation of Fortran modules + if lang == 'F90': + self.build_system.max_concurrency = 1 + self.executable = './jacobi' self.sourcesdir = os.path.join('src', lang) self.valid_prog_environs = ['PrgEnv-gnu'] diff --git a/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/C++/Makefile similarity index 100% rename from cscs-checks/tools/profiling_and_debugging/src/C++/Makefile_ddt rename to cscs-checks/tools/profiling_and_debugging/src/C++/Makefile diff --git a/cscs-checks/tools/profiling_and_debugging/src/C/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/C/Makefile similarity index 100% rename from cscs-checks/tools/profiling_and_debugging/src/C/Makefile_ddt rename to cscs-checks/tools/profiling_and_debugging/src/C/Makefile diff --git a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile similarity index 100% rename from cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile_ddt rename to cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile diff --git a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile b/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile new file mode 100644 index 0000000000..7cadf76e7c --- /dev/null +++ b/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile @@ -0,0 +1,18 @@ +RM := rm -f +EXECUTABLE := jacobi + +all: jacobi + +OBJS := _variableDef.o _jacobi.o _main.o + +$(OBJS): + $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) + +$(EXECUTABLE): $(OBJS) + $(PREP) $(FC) $(FFLAGS) $(LDFLAGS) -o $(@) $(OBJS) + +clean: + -$(RM) $(OBJS) *.mod + +distclean: + -$(RM) $(OBJS) $(EXECUTABLE) diff --git a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt b/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt deleted file mode 100644 index fd99c9aa45..0000000000 --- a/cscs-checks/tools/profiling_and_debugging/src/F90/Makefile_ddt +++ /dev/null @@ -1,27 +0,0 @@ -RM := rm -f -EXECUTABLE := jacobi - -all: jacobi - -OBJS := _variableDef.o _jacobi.o _main.o - -_variableDef.o: - $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) - -_jacobi.o: _variableDef.o - $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) - -_main.o: _variableDef.o _jacobi.o - $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) - -$(OBJS2): $(OBJS) - $(PREP) $(FC) $(FFLAGS) -c -o $(@) $(@:.o=.F90) - -$(EXECUTABLE): $(OBJS) $(OBJS2) - $(PREP) $(FC) $(FFLAGS) $(LDFLAGS) -o $(@) $(OBJS) $(OBJS2) - -clean: - -$(RM) $(OBJS) *.mod - -distclean: - -$(RM) $(OBJS) $(EXECUTABLE) From b62c7727ee5d4d01eedc4aec3ba2b7d64324decf Mon Sep 17 00:00:00 2001 From: Theofilos Manitaras Date: Thu, 23 Aug 2018 13:50:11 +0200 Subject: [PATCH 3/5] Address PR comments --- .../tools/profiling_and_debugging/ddt.py | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/cscs-checks/tools/profiling_and_debugging/ddt.py b/cscs-checks/tools/profiling_and_debugging/ddt.py index df7ec1ce13..e0a1a960d5 100644 --- a/cscs-checks/tools/profiling_and_debugging/ddt.py +++ b/cscs-checks/tools/profiling_and_debugging/ddt.py @@ -14,7 +14,6 @@ def __init__(self, lang, extension): self.lang = lang self.extension = extension self.build_system = 'Make' - self.build_system.makefile = 'Makefile' # NOTE: Restrict concurrency to allow creation of Fortran modules if lang == 'F90': self.build_system.max_concurrency = 1 @@ -25,11 +24,10 @@ def __init__(self, lang, extension): self.modules = ['ddt'] self.prgenv_flags = { # 'PrgEnv-cray': ' -O2 -homp', - 'PrgEnv-gnu': ['-O2', '-fopenmp'], + 'PrgEnv-gnu': ['-g', '-O2', '-fopenmp'], # 'PrgEnv-intel': ' -O2 -qopenmp', # 'PrgEnv-pgi': ' -O2 -mp' } - self.flags = ['-g'] self.num_tasks = 1 self.num_tasks_per_node = 1 self.num_cpus_per_task = 4 @@ -48,19 +46,18 @@ def __init__(self, lang, extension): self.maintainers = ['MK', 'JG'] self.tags = {'production'} self.post_run = ['ddt -V ; which ddt ;'] - self.ddt_options = [] self.keep_files = ['ddtreport.txt'] - def _set_compiler_flags(self): - prgenv_flags = self.prgenv_flags[self.current_environ.name] - self.build_system.cflags = self.flags + prgenv_flags - self.build_system.cxxflags = self.flags + prgenv_flags - self.build_system.fflags = self.flags + prgenv_flags - self.build_system.ldflags = self.flags + prgenv_flags - def setup(self, partition, environ, **job_opts): super().setup(partition, environ, **job_opts) - self._set_compiler_flags() + prgenv_flags = self.prgenv_flags[self.current_environ.name] + if self.build_system.cflags: + self.build_system.cflags += prgenv_flags + else: + self.build_system.cflags = prgenv_flags + + self.build_system.cxxflags = prgenv_flags + self.build_system.fflags = prgenv_flags self.job.launcher = LauncherWrapper(self.job.launcher, 'ddt', self.ddt_options) @@ -120,12 +117,11 @@ def __init__(self, lang, extension): '--trace-at _jacobi-cuda-kernel.cu:111,residue' ] - self.flags += ['-DUSE_MPI'] - self.flags += ['-D_CSCS_ITMAX=5'] + self.build_system.cflags = ['-DUSE_MPI', '-D_CSCS_ITMAX=5'] if self.current_system.name == 'kesch': arch = 'sm_37' - self.flags += ['-lm', '-lcudart'] + self.build_system.ldflags = ['-lm', '-lcudart'] else: arch = 'sm_60' self.build_system.options = ['NVCCFLAGS="-g -arch=%s"' % arch] From 9d7787ec0bd965a7db6f32744e0511cdaf3845fa Mon Sep 17 00:00:00 2001 From: Theofilos Manitaras Date: Thu, 23 Aug 2018 14:27:58 +0200 Subject: [PATCH 4/5] Address PR comments (version 2) --- cscs-checks/tools/profiling_and_debugging/ddt.py | 8 ++------ .../tools/profiling_and_debugging/src/Cuda/Makefile | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/cscs-checks/tools/profiling_and_debugging/ddt.py b/cscs-checks/tools/profiling_and_debugging/ddt.py index e0a1a960d5..92d6a309ed 100644 --- a/cscs-checks/tools/profiling_and_debugging/ddt.py +++ b/cscs-checks/tools/profiling_and_debugging/ddt.py @@ -51,11 +51,7 @@ def __init__(self, lang, extension): def setup(self, partition, environ, **job_opts): super().setup(partition, environ, **job_opts) prgenv_flags = self.prgenv_flags[self.current_environ.name] - if self.build_system.cflags: - self.build_system.cflags += prgenv_flags - else: - self.build_system.cflags = prgenv_flags - + self.build_system.cflags = prgenv_flags self.build_system.cxxflags = prgenv_flags self.build_system.fflags = prgenv_flags self.job.launcher = LauncherWrapper(self.job.launcher, 'ddt', @@ -117,7 +113,7 @@ def __init__(self, lang, extension): '--trace-at _jacobi-cuda-kernel.cu:111,residue' ] - self.build_system.cflags = ['-DUSE_MPI', '-D_CSCS_ITMAX=5'] + self.build_system.cppflags = ['-DUSE_MPI', '-D_CSCS_ITMAX=5'] if self.current_system.name == 'kesch': arch = 'sm_37' diff --git a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile b/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile index e6cab09070..a45b6e820b 100644 --- a/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile +++ b/cscs-checks/tools/profiling_and_debugging/src/Cuda/Makefile @@ -14,7 +14,7 @@ LIB = $(PREP) nvcc $(NVCCFLAGS) $(DDTFLAGS) -c $< -o $@ %.o: %.c - $(PREP) $(CC) $(CFLAGS) $(DDTFLAGS) -c $< -o $@ + $(PREP) $(CC) $(CPPFLAGS) $(CFLAGS) $(DDTFLAGS) -c $< -o $@ $(EXECUTABLE): $(OBJS) $(PREP) $(LD) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIB) -o $@ From 123b2b05bfa91774769110a270cb70ee80b6e073 Mon Sep 17 00:00:00 2001 From: Theofilos Manitaras Date: Thu, 23 Aug 2018 22:00:13 +0200 Subject: [PATCH 5/5] Fix ldflags bug on kesch --- cscs-checks/tools/profiling_and_debugging/ddt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cscs-checks/tools/profiling_and_debugging/ddt.py b/cscs-checks/tools/profiling_and_debugging/ddt.py index 92d6a309ed..453ae7b23e 100644 --- a/cscs-checks/tools/profiling_and_debugging/ddt.py +++ b/cscs-checks/tools/profiling_and_debugging/ddt.py @@ -66,7 +66,7 @@ def __init__(self, lang, extension): 'dom:gpu', 'dom:mc', 'kesch:cn'] if self.current_system.name == 'kesch' and self.lang == 'C': - self.flags += ['-lm'] + self.build_system.ldflags = ['-lm'] residual_pattern = '_jacobi.%s:%d,residual' self.ddt_options = [