From aa6c2b23d9e852cc8e242cc2e70537c1bc55ac7b Mon Sep 17 00:00:00 2001 From: jpekkila Date: Mon, 7 Oct 2019 17:39:27 +0300 Subject: [PATCH] Built-in parameters are now added during compilation instead of defining them in CUDA sources. IMPORTANT: DCONST macro should no longer be used when accessing built-in variables. Now all uniforms are consistently accessed with the handle only --- acc/src/code_generator.c | 26 +++++++++++++++++++++----- include/astaroth_defines.h | 21 ++------------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/acc/src/code_generator.c b/acc/src/code_generator.c index 5ba7ed5..b2eb8d3 100644 --- a/acc/src/code_generator.c +++ b/acc/src/code_generator.c @@ -506,11 +506,6 @@ traverse(const ASTNode* node) fprintf(CUDAHEADER, "%s", translate(node->postfix)); } -static void -gen_preprocessed_forward_declarations(void) -{ -} - static void generate_preprocessed_structures(void) { @@ -688,6 +683,27 @@ main(int argc, char** argv) assert(DSLHEADER); assert(CUDAHEADER); + // Add built-in params + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nx"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_ny"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nz"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_mx"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_my"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_mz"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nx_min"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_ny_min"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nz_min"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nx_max"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_ny_max"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nz_max"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_mxy"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nxy"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT, "AC_nxyz"); + + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT3, "AC_global_grid_n"); + add_symbol(SYMBOLTYPE_OTHER, UNIFORM, INT3, "AC_multigpu_offset"); + + // Generate traverse(root); generate_header(); generate_preprocessed_structures(); diff --git a/include/astaroth_defines.h b/include/astaroth_defines.h index 15ee0a2..d8a4027 100644 --- a/include/astaroth_defines.h +++ b/include/astaroth_defines.h @@ -71,26 +71,9 @@ typedef struct { #include "user_defines.h" // User-defined header // clang-format off -#define AC_FOR_BUILTIN_INT_PARAM_TYPES(FUNC)\ - FUNC(AC_nx), \ - FUNC(AC_ny), \ - FUNC(AC_nz), \ - FUNC(AC_mx), \ - FUNC(AC_my), \ - FUNC(AC_mz), \ - FUNC(AC_nx_min), \ - FUNC(AC_ny_min), \ - FUNC(AC_nz_min), \ - FUNC(AC_nx_max), \ - FUNC(AC_ny_max), \ - FUNC(AC_nz_max), \ - FUNC(AC_mxy),\ - FUNC(AC_nxy),\ - FUNC(AC_nxyz),\ +#define AC_FOR_BUILTIN_INT_PARAM_TYPES(FUNC) -#define AC_FOR_BUILTIN_INT3_PARAM_TYPES(FUNC)\ - FUNC(AC_global_grid_n),\ - FUNC(AC_multigpu_offset), +#define AC_FOR_BUILTIN_INT3_PARAM_TYPES(FUNC) #define AC_FOR_BUILTIN_REAL_PARAM_TYPES(FUNC)