MR: USER_PROVIDED

This commit is contained in:
Matthias Rheinhardt
2019-06-26 17:10:51 +03:00
parent daddde15b8
commit 57a39fd848

View File

@@ -57,13 +57,11 @@ extern "C" {
#define MAX_TB_DIM (MAX_THREADS_PER_BLOCK) #define MAX_TB_DIM (MAX_THREADS_PER_BLOCK)
#define NUM_ITERATIONS (10) #define NUM_ITERATIONS (10)
#define WARP_SIZE (32) #define WARP_SIZE (32)
/* /*
* ============================================================================= * =============================================================================
* Compile-time constants used during simulation (user definable) * Compile-time constants used during simulation (user definable)
* ============================================================================= * =============================================================================
*/ */
#define STENCIL_ORDER (6)
///////////// PAD TEST ///////////// PAD TEST
// NOTE: works only with nx is divisible by 32 // NOTE: works only with nx is divisible by 32
@@ -74,10 +72,22 @@ extern "C" {
// L-prefix inherited from the old Astaroth, no idea what it means // L-prefix inherited from the old Astaroth, no idea what it means
// MV: L means a Logical switch variale, something having true of false value. // MV: L means a Logical switch variale, something having true of false value.
// Note: forcing is disabled currently in the files generated by acc (compiler of our DSL) // Note: forcing is disabled currently in the files generated by acc (compiler of our DSL)
//
#include "user.h"
#ifndef USER_PROVIDED
#define STENCIL_ORDER (6)
#define NGHOST (STENCIL_ORDER/2)
#define LHYDRO (1)
#define LDENSITY (1)
#define LFORCING (1) #define LFORCING (1)
#define LINDUCTION (1) #define LINDUCTION (1)
#define LENTROPY (1) #define LENTROPY (1)
#define LTEMPERATURE (0) #define LTEMPERATURE (0)
#define LMAGNETIC LINDUCTION
#endif
#define AC_THERMAL_CONDUCTIVITY (AcReal(0.001)) // TODO: make an actual config parameter #define AC_THERMAL_CONDUCTIVITY (AcReal(0.001)) // TODO: make an actual config parameter
@@ -177,14 +187,30 @@ extern "C" {
* ============================================================================= * =============================================================================
*/ */
// clang-format off // clang-format off
#ifdef LHYDRO
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC) \ #define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC) \
FUNC(VTXBUF_LNRHO), \
FUNC(VTXBUF_UUX), \ FUNC(VTXBUF_UUX), \
FUNC(VTXBUF_UUY), \ FUNC(VTXBUF_UUY), \
FUNC(VTXBUF_UUZ), \ FUNC(VTXBUF_UUZ),
// FUNC(VTXBUF_DYE), #else
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC)
#endif
#if LINDUCTION #ifdef LDENSITY
#define AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC) \
FUNC(VTXBUF_DENSITY),
#else
#define AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC)
#endif
#ifdef LENTROPY
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC) \
FUNC(VTXBUF_ENTROPY),
#else
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)
#endif
#ifdef LMAGNETIC
#define AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC) \ #define AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC) \
FUNC(VTXBUF_AX), \ FUNC(VTXBUF_AX), \
FUNC(VTXBUF_AY), \ FUNC(VTXBUF_AY), \
@@ -193,25 +219,22 @@ extern "C" {
#define AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC) #define AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC)
#endif #endif
#if LENTROPY #define AC_FOR_VTXBUF_HANDLES(FUNC) AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC) \
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)\ AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC) \
FUNC(VTXBUF_ENTROPY), AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC) \
#else AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC) \
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)
#endif
//MR: Temperature must not have an additional variable slot, but should sit on the
// same as entropy.
#ifndef USER_PROVIDED
#if LTEMPERATURE #if LTEMPERATURE
#define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)\ #define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)\
FUNC(VTXBUF_TEMPERATURE), FUNC(VTXBUF_TEMPERATURE),
#else #else
#define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC) #define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)
#endif #endif
#endif
#define AC_FOR_VTXBUF_HANDLES(FUNC)\
AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC)\
AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC)\
AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)\
AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)
// clang-format on // clang-format on
/* /*
@@ -267,6 +290,7 @@ typedef enum { RTYPE_MAX, RTYPE_MIN, RTYPE_RMS, RTYPE_RMS_EXP, NUM_REDUCTION_TYP
typedef enum { AC_FOR_INT_PARAM_TYPES(AC_GEN_ID), NUM_INT_PARAM_TYPES } AcIntParam; typedef enum { AC_FOR_INT_PARAM_TYPES(AC_GEN_ID), NUM_INT_PARAM_TYPES } AcIntParam;
typedef enum { AC_FOR_REAL_PARAM_TYPES(AC_GEN_ID), NUM_REAL_PARAM_TYPES } AcRealParam; typedef enum { AC_FOR_REAL_PARAM_TYPES(AC_GEN_ID), NUM_REAL_PARAM_TYPES } AcRealParam;
//typedef enum { AC_FOR_VEC_PARAM_TYPES(AC_GEN_ID), NUM_VEC_PARAM_TYPES } AcVecParam;
extern const char* intparam_names[]; // Defined in astaroth.cu extern const char* intparam_names[]; // Defined in astaroth.cu
extern const char* realparam_names[]; // Defined in astaroth.cu extern const char* realparam_names[]; // Defined in astaroth.cu
@@ -274,6 +298,7 @@ extern const char* realparam_names[]; // Defined in astaroth.cu
typedef struct { typedef struct {
int int_params[NUM_INT_PARAM_TYPES]; int int_params[NUM_INT_PARAM_TYPES];
AcReal real_params[NUM_REAL_PARAM_TYPES]; AcReal real_params[NUM_REAL_PARAM_TYPES];
//AcReal* vec_params[NUM_VEC_PARAM_TYPES];
} AcMeshInfo; } AcMeshInfo;
/* /*
@@ -327,6 +352,8 @@ initialization of *all memory needed on all GPUs in the node*. In other words,
setups everything GPU-side so that calling any other GPU interface function setups everything GPU-side so that calling any other GPU interface function
afterwards does not result in illegal memory accesses. */ afterwards does not result in illegal memory accesses. */
AcResult acInit(const AcMeshInfo& mesh_info); AcResult acInit(const AcMeshInfo& mesh_info);
AcResult acCheckDeviceAvail();
AcResult acInitialize(const AcMeshInfo& mesh_info);
/** Splits the host_mesh and distributes it among the GPUs in the node */ /** Splits the host_mesh and distributes it among the GPUs in the node */
AcResult acLoad(const AcMesh& host_mesh); AcResult acLoad(const AcMesh& host_mesh);