From b4d7e0cfb542ae18f62dfdb2ab74c3d8e150dd01 Mon Sep 17 00:00:00 2001 From: Michael Zikeli <michael.zikeli@fau.de> Date: Fri, 16 Feb 2024 13:14:17 +0100 Subject: [PATCH] Fix Issue #1 by making the key "avx" in kernel_implementation optional for CMakeLists.txt print. --- generate/generate.py | 75 ++++++++++++++++++++++----------------- generate/requirements.txt | 2 +- 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/generate/generate.py b/generate/generate.py index ffc23f42..f7a91005 100644 --- a/generate/generate.py +++ b/generate/generate.py @@ -98,45 +98,56 @@ def generate_cmake( print(f")", file=f) print(f"", file=f) - print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f) - print(f" target_sources({lib_name} PRIVATE", file=f) - print(f"", file=f) + def print_noarch_targets(avx_exists: bool): + intend_noarch_source_file = " " if avx_exists else "" + print(f"{intend_noarch_source_file}target_sources({lib_name} PRIVATE", file=f) + print(f"", file=f) - for source_file in kernel_implementations["avx"]: - print(f" avx/{source_file}", file=f) - for source_file in kernel_implementations["noarch"]: - if not source_file in kernel_implementations["avx"]: - print(f" noarch/{source_file}", file=f) + for source_file_inner in kernel_implementations["noarch"]: + print(f"{intend_noarch_source_file} noarch/{source_file_inner}", file=f) - print(f" )", file=f) - print(f"", file=f) + print(f"{intend_noarch_source_file})", file=f) - print(f" set_source_files_properties(", file=f) - print(f"", file=f) + if "avx" in kernel_implementations: - for source_file in kernel_implementations["avx"]: - print(f" avx/{source_file}", file=f) - print(f"", file=f) - print(" PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}", file=f) - - print(f" )", file=f) - print(f"else()", file=f) - print(f" if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)", file=f) - print( - f' message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")', - file=f, - ) - print(f" endif()", file=f) - print(f"", file=f) + print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f) + print(f" target_sources({lib_name} PRIVATE", file=f) + print(f"", file=f) - print(f" target_sources({lib_name} PRIVATE", file=f) - print(f"", file=f) + for source_file in kernel_implementations["avx"]: + print(f" avx/{source_file}", file=f) - for source_file in kernel_implementations["noarch"]: - print(f" noarch/{source_file}", file=f) + for source_file in kernel_implementations["noarch"]: + if not source_file in kernel_implementations["avx"]: + print(f" noarch/{source_file}", file=f) + + print(f" )", file=f) + print(f"", file=f) + + print(f" set_source_files_properties(", file=f) + print(f"", file=f) + + for source_file in kernel_implementations["avx"]: + print(f" avx/{source_file}", file=f) + print(f"", file=f) + print(" PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}", file=f) + + print(f" )", file=f) + print(f"else()", file=f) + print(f" if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)", file=f) + print( + f' message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")', + file=f, + ) + print(f" endif()", file=f) + print(f"", file=f) + + print_noarch_targets(avx_exists=True) + + print(f"endif()", file=f) + else: + print_noarch_targets(avx_exists=False) - print(f" )", file=f) - print(f"endif()", file=f) print(f"", file=f) print(f"if (HYTEG_BUILD_WITH_PETSC)", file=f) diff --git a/generate/requirements.txt b/generate/requirements.txt index 47881e16..91a26e43 100644 --- a/generate/requirements.txt +++ b/generate/requirements.txt @@ -1,5 +1,5 @@ --extra-index-url https://test.pypi.org/simple/ -hfg @ git+ssh://git@i10git.cs.fau.de/terraneo/hyteg-form-generator.git@2a830d525314b1ec1d718720534267c485b5a9a7 +hfg @ git+ssh://git@i10git.cs.fau.de/terraneo/hyteg-form-generator.git@aeeb7d4c4f99e59d208a8d09a51522a7093fd7ff tomli >= 1.1.0 ; python_version < "3.11" clang-format -- GitLab