From 594f6c3a187778ff85eaf9ba70ce9b46d23977f9 Mon Sep 17 00:00:00 2001 From: Martin Bauer <martin.bauer@fau.de> Date: Wed, 6 Mar 2019 12:40:17 +0100 Subject: [PATCH] generate waLBerla CUDA kernels only if walberla is built with CUDA --- cmake_integration.py | 13 ++++++++----- codegen.py | 6 ++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cmake_integration.py b/cmake_integration.py index fba134d..00321a5 100644 --- a/cmake_integration.py +++ b/cmake_integration.py @@ -40,11 +40,12 @@ class CodeGeneration: def parse_json_args(): default = {'EXPECTED_FILES': [], - 'CMAKE_VARS': {'WALBERLA_BUILD_WITH_OPENMP': False, - 'WALBERLA_OPTIMIZE_FOR_LOCALHOST': False, - 'WALBERLA_DOUBLE_ACCURACY': True, - 'WALBERLA_BUILD_WITH_MPI': True} - } + 'CMAKE_VARS': {'WALBERLA_BUILD_WITH_OPENMP': False, + 'WALBERLA_OPTIMIZE_FOR_LOCALHOST': False, + 'WALBERLA_DOUBLE_ACCURACY': True, + 'WALBERLA_BUILD_WITH_MPI': True, + 'WALBERLA_BUILD_WITH_CUDA': False} + } if len(sys.argv) == 2: try: @@ -72,6 +73,7 @@ class CodeGenerationContext: self.optimize_for_localhost = cmake_vars['WALBERLA_OPTIMIZE_FOR_LOCALHOST'] self.mpi = cmake_vars['WALBERLA_BUILD_WITH_MPI'] self.double_accuracy = cmake_vars['WALBERLA_DOUBLE_ACCURACY'] + self.cuda = cmake_vars['WALBERLA_BUILD_WITH_CUDA'] def write_file(self, name, content): self.files_written.append(os.path.abspath(name)) @@ -90,6 +92,7 @@ class ManualCodeGenerationContext: self.mpi = mpi self.double_accuracy = double_accuracy self.files = dict() + self.cuda = False def write_file(self, name, content): self.files[name] = content diff --git a/codegen.py b/codegen.py index fb7fc6e..4d7612d 100644 --- a/codegen.py +++ b/codegen.py @@ -23,6 +23,9 @@ def generate_sweep(generation_context, class_name, assignments, create_kernel_params = default_create_kernel_parameters(generation_context, create_kernel_params) + if not generation_context.cuda and create_kernel_params['target'] == 'gpu': + return + if not staggered: ast = create_kernel(assignments, **create_kernel_params) else: @@ -105,6 +108,9 @@ def generate_pack_info(generation_context, class_name: str, create_kernel_params = default_create_kernel_parameters(generation_context, create_kernel_params) target = create_kernel_params.get('target', 'cpu') + if not generation_context.cuda and target == 'gpu': + return + fields_accessed = set() for terms in directions_to_pack_terms.values(): for term in terms: -- GitLab