Merge branch 'master' into forcing
Now I need to test what works... Conflicts: acc/mhd_solver/stencil_process.sps
This commit is contained in:
@@ -49,6 +49,7 @@ extern "C" {
|
||||
#define AUTO_OPTIMIZE (0) // DEPRECATED TODO remove
|
||||
#define BOUNDCONDS_OPTIMIZE (0)
|
||||
#define GENERATE_BENCHMARK_DATA (0)
|
||||
#define VERBOSE_PRINTING (1)
|
||||
|
||||
// Device info
|
||||
#define REGISTERS_PER_THREAD (255)
|
||||
@@ -57,27 +58,26 @@ extern "C" {
|
||||
#define MAX_TB_DIM (MAX_THREADS_PER_BLOCK)
|
||||
#define NUM_ITERATIONS (10)
|
||||
#define WARP_SIZE (32)
|
||||
|
||||
/*
|
||||
* =============================================================================
|
||||
* Compile-time constants used during simulation (user definable)
|
||||
* =============================================================================
|
||||
*/
|
||||
#define STENCIL_ORDER (6)
|
||||
// USER_PROVIDED_DEFINES must be defined in user.h if the user wants to override the following
|
||||
// logical switches
|
||||
#include "user.h"
|
||||
|
||||
///////////// PAD TEST
|
||||
// NOTE: works only with nx is divisible by 32
|
||||
//#define PAD_LEAD (32 - STENCIL_ORDER/2)
|
||||
//#define PAD_SIZE (32 - STENCIL_ORDER)
|
||||
///////////// PAD TEST
|
||||
|
||||
// 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.
|
||||
// Note: forcing is disabled currently in the files generated by acc (compiler of our DSL)
|
||||
#define LFORCING (1)
|
||||
#define LINDUCTION (1)
|
||||
#define LENTROPY (1)
|
||||
#define LTEMPERATURE (0)
|
||||
#ifndef USER_PROVIDED_DEFINES
|
||||
#define STENCIL_ORDER (6)
|
||||
#define NGHOST (STENCIL_ORDER/2)
|
||||
#define LHYDRO (1)
|
||||
#define LDENSITY (1)
|
||||
#define LFORCING (1)
|
||||
#define LINDUCTION (1)
|
||||
#define LENTROPY (1)
|
||||
#define LTEMPERATURE (0)
|
||||
#define LMAGNETIC LINDUCTION
|
||||
#endif
|
||||
|
||||
#define AC_THERMAL_CONDUCTIVITY (AcReal(0.001)) // TODO: make an actual config parameter
|
||||
|
||||
@@ -190,15 +190,31 @@ extern "C" {
|
||||
* =============================================================================
|
||||
*/
|
||||
// clang-format off
|
||||
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC)\
|
||||
FUNC(VTXBUF_LNRHO), \
|
||||
#ifdef LHYDRO
|
||||
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC) \
|
||||
FUNC(VTXBUF_UUX), \
|
||||
FUNC(VTXBUF_UUY), \
|
||||
FUNC(VTXBUF_UUZ), \
|
||||
// FUNC(VTXBUF_DYE),
|
||||
FUNC(VTXBUF_UUZ),
|
||||
#else
|
||||
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC)
|
||||
#endif
|
||||
|
||||
#if LINDUCTION
|
||||
#define AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC)\
|
||||
#ifdef LDENSITY
|
||||
#define AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC) \
|
||||
FUNC(VTXBUF_LNRHO),
|
||||
#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) \
|
||||
FUNC(VTXBUF_AX), \
|
||||
FUNC(VTXBUF_AY), \
|
||||
FUNC(VTXBUF_AZ),
|
||||
@@ -206,25 +222,22 @@ extern "C" {
|
||||
#define AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC)
|
||||
#endif
|
||||
|
||||
#if LENTROPY
|
||||
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)\
|
||||
FUNC(VTXBUF_ENTROPY),
|
||||
#else
|
||||
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)
|
||||
#define AC_FOR_VTXBUF_HANDLES(FUNC) AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC) \
|
||||
AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC) \
|
||||
AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC) \
|
||||
AC_FOR_INDUCTION_VTXBUF_HANDLES(FUNC) \
|
||||
|
||||
//MR: Temperature must not have an additional variable slot, but should sit on the
|
||||
// same as entropy.
|
||||
#ifndef USER_PROVIDED
|
||||
#if LTEMPERATURE
|
||||
#define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)\
|
||||
FUNC(VTXBUF_TEMPERATURE),
|
||||
#else
|
||||
#define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if LTEMPERATURE
|
||||
#define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)\
|
||||
FUNC(VTXBUF_TEMPERATURE),
|
||||
#else
|
||||
#define AC_FOR_TEMPERATURE_VTXBUF_HANDLES(FUNC)
|
||||
#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
|
||||
|
||||
/*
|
||||
@@ -280,6 +293,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_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* realparam_names[]; // Defined in astaroth.cu
|
||||
@@ -287,6 +301,7 @@ extern const char* realparam_names[]; // Defined in astaroth.cu
|
||||
typedef struct {
|
||||
int int_params[NUM_INT_PARAM_TYPES];
|
||||
AcReal real_params[NUM_REAL_PARAM_TYPES];
|
||||
//AcReal* vec_params[NUM_VEC_PARAM_TYPES];
|
||||
} AcMeshInfo;
|
||||
|
||||
/*
|
||||
@@ -335,6 +350,11 @@ typedef struct {
|
||||
* Astaroth interface
|
||||
* =============================================================================
|
||||
*/
|
||||
|
||||
/** Checks whether there are any CUDA devices available. Returns AC_SUCCESS if there is 1 or more,
|
||||
AC_FAILURE otherwise. */
|
||||
AcResult acCheckDeviceAvailability(void);
|
||||
|
||||
/** Starting point of all GPU computation. Handles the allocation and
|
||||
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
|
||||
|
Reference in New Issue
Block a user