From 5b7408eb55d90f11998ff9d8b9cbe04dec228241 Mon Sep 17 00:00:00 2001 From: jpekkila Date: Mon, 19 Aug 2019 18:43:16 +0300 Subject: [PATCH] User config param overhaul complete, works. If I haven't missed anything, all fields and user parameters, and everything related to simulation can now be declared with the DSL. The only thing that you need to do is to fill the declared symbols with data, like with OpenGL and GLSL. --- acc/mhd_solver/stencil_assembly.sas | 8 +++++--- acc/src/code_generator.c | 5 +++-- scripts/compile_acc.sh | 15 +++++++++------ src/standalone/model/model_rk3.cc | 10 ++++++++++ 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/acc/mhd_solver/stencil_assembly.sas b/acc/mhd_solver/stencil_assembly.sas index 5c4f14a..e30d500 100644 --- a/acc/mhd_solver/stencil_assembly.sas +++ b/acc/mhd_solver/stencil_assembly.sas @@ -1,3 +1,5 @@ +#include "stencil_definition.sdh" + Preprocessed Scalar value(in ScalarField vertex) { @@ -17,7 +19,7 @@ gradient(in ScalarField vertex) Preprocessed Scalar der6x_upwd(in ScalarField vertex) { - Scalar inv_ds = DCONST_REAL(AC_inv_dsx); + Scalar inv_ds = AC_inv_dsx; return (Scalar){ Scalar(1.0/60.0)*inv_ds* ( - Scalar(20.0)* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z] @@ -32,7 +34,7 @@ der6x_upwd(in ScalarField vertex) Preprocessed Scalar der6y_upwd(in ScalarField vertex) { - Scalar inv_ds = DCONST_REAL(AC_inv_dsy); + Scalar inv_ds = AC_inv_dsy; return (Scalar){ Scalar(1.0/60.0)*inv_ds* ( -Scalar( 20.0)* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z] @@ -47,7 +49,7 @@ der6y_upwd(in ScalarField vertex) Preprocessed Scalar der6z_upwd(in ScalarField vertex) { - Scalar inv_ds = DCONST_REAL(AC_inv_dsz); + Scalar inv_ds = AC_inv_dsz; return (Scalar){ Scalar(1.0/60.0)*inv_ds* ( -Scalar( 20.0)* vertex[vertexIdx.x, vertexIdx.y, vertexIdx.z] diff --git a/acc/src/code_generator.c b/acc/src/code_generator.c index c31ad86..e560a70 100644 --- a/acc/src/code_generator.c +++ b/acc/src/code_generator.c @@ -238,8 +238,9 @@ translate_latest_symbol(void) else if (symbol->type != SYMBOLTYPE_FUNCTION_PARAMETER && (symbol->type_qualifier == IN || symbol->type_qualifier == OUT)) { - printf("static __device__ const %s %s%s", symbol->type_specifier == SCALAR ? "int" : "int3", - inout_name_prefix, symbol_table[handle].identifier); + printf("static __device__ const %s %s%s", + symbol->type_specifier == SCALARFIELD ? "int" : "int3", inout_name_prefix, + symbol_table[handle].identifier); if (symbol->type_specifier == VECTOR) printf(" = make_int3"); } diff --git a/scripts/compile_acc.sh b/scripts/compile_acc.sh index 4649bf5..7ebbd4c 100755 --- a/scripts/compile_acc.sh +++ b/scripts/compile_acc.sh @@ -19,7 +19,7 @@ ${ACC_DIR}/build_acc.sh ACC_SAS=${ACC_DEFAULT_SAS} ACC_SPS=${ACC_DEFAULT_SPS} ACC_HEADER=${ACC_DEFAULT_HEADER} -ACC_INCLUDE=${ACC_DEFAULT_INCLUDE_DIR} +ACC_INCLUDE_DIR=${ACC_DEFAULT_INCLUDE_DIR} while [ "$#" -gt 0 ] do @@ -58,13 +58,16 @@ echo "Assembly file: ${ACC_DIR}/${ACC_SAS}" echo "Process file: ${ACC_DIR}/${ACC_SPS}" cd ${ACC_DIR}/${ACC_INCLUDE_DIR} +echo ${PWD} ${ACC_DIR}/compile.sh ${ACC_DIR}/${ACC_SAS} ${ACC_DIR}/compile.sh ${ACC_DIR}/${ACC_SPS} ${ACC_DIR}/compile.sh ${ACC_DIR}/${ACC_HEADER} -#mv ${ACC_SAS} ${AC_HOME}/src/core/kernels -#mv ${ACC_SPS} ${AC_HOME}/src/core/kernels -#mv ${ACC_HEADER} ${AC_HOME}/include +echo "Moving stencil_assembly.cuh -> ${AC_HOME}/src/core/kernels" +mv stencil_assembly.cuh ${AC_HOME}/src/core/kernels -#echo "Linking: " ${ACC_DIR}/${ACC_HEADER} " -> " ${AC_HOME}/include/stencil_defines.h -#ln -sf ${ACC_DIR}/${ACC_HEADER} ${AC_HOME}/include/stencil_defines.h +echo "Moving stencil_process.cuh -> ${AC_HOME}/src/core/kernels" +mv stencil_process.cuh ${AC_HOME}/src/core/kernels + +echo "Moving stencil_defines.cuh -> ${AC_HOME}/include" +mv stencil_defines.h ${AC_HOME}/include diff --git a/src/standalone/model/model_rk3.cc b/src/standalone/model/model_rk3.cc index 756e3a7..5fab4b4 100644 --- a/src/standalone/model/model_rk3.cc +++ b/src/standalone/model/model_rk3.cc @@ -31,6 +31,16 @@ #include "host_memory.h" #include "model_boundconds.h" +// Standalone flags +#define LDENSITY (1) +#define LHYDRO (1) +#define LMAGNETIC (1) +#define LENTROPY (1) +#define LTEMPERATURE (0) +#define LFORCING (1) +#define LUPWD (1) +#define AC_THERMAL_CONDUCTIVITY (AcReal(0.001)) // TODO: make an actual config parameter + typedef struct { ModelScalar x, y, z; } ModelVector;