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

This commit is contained in:
jpekkila
2019-10-07 17:39:27 +03:00
parent 3fe7b62d3e
commit aa6c2b23d9
2 changed files with 23 additions and 24 deletions

View File

@@ -506,11 +506,6 @@ traverse(const ASTNode* node)
fprintf(CUDAHEADER, "%s", translate(node->postfix)); fprintf(CUDAHEADER, "%s", translate(node->postfix));
} }
static void
gen_preprocessed_forward_declarations(void)
{
}
static void static void
generate_preprocessed_structures(void) generate_preprocessed_structures(void)
{ {
@@ -688,6 +683,27 @@ main(int argc, char** argv)
assert(DSLHEADER); assert(DSLHEADER);
assert(CUDAHEADER); 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); traverse(root);
generate_header(); generate_header();
generate_preprocessed_structures(); generate_preprocessed_structures();

View File

@@ -71,26 +71,9 @@ typedef struct {
#include "user_defines.h" // User-defined header #include "user_defines.h" // User-defined header
// clang-format off // clang-format off
#define AC_FOR_BUILTIN_INT_PARAM_TYPES(FUNC)\ #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_INT3_PARAM_TYPES(FUNC)\ #define AC_FOR_BUILTIN_INT3_PARAM_TYPES(FUNC)
FUNC(AC_global_grid_n),\
FUNC(AC_multigpu_offset),
#define AC_FOR_BUILTIN_REAL_PARAM_TYPES(FUNC) #define AC_FOR_BUILTIN_REAL_PARAM_TYPES(FUNC)