Cleaned up the include directory: removed all unnecessary stuff and moved common definitions to a separate file
This commit is contained in:
@@ -1,3 +1,23 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2014-2019, Johannes Pekkilae, Miikka Vaeisalae.
|
||||||
|
|
||||||
|
This file is part of Astaroth.
|
||||||
|
|
||||||
|
Astaroth is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Astaroth is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Astaroth. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
* Logical switches
|
* Logical switches
|
||||||
@@ -26,8 +46,11 @@
|
|||||||
FUNC(AC_max_steps), \
|
FUNC(AC_max_steps), \
|
||||||
FUNC(AC_save_steps), \
|
FUNC(AC_save_steps), \
|
||||||
FUNC(AC_bin_steps), \
|
FUNC(AC_bin_steps), \
|
||||||
FUNC(AC_bc_type)
|
FUNC(AC_bc_type),
|
||||||
#define AC_FOR_REAL_PARAM_TYPES(FUNC)\
|
|
||||||
|
#define AC_FOR_USER_INT3_PARAM_TYPES(FUNC)
|
||||||
|
|
||||||
|
#define AC_FOR_USER_REAL_PARAM_TYPES(FUNC)\
|
||||||
/* cparams */\
|
/* cparams */\
|
||||||
FUNC(AC_dsx), \
|
FUNC(AC_dsx), \
|
||||||
FUNC(AC_dsy), \
|
FUNC(AC_dsy), \
|
||||||
@@ -97,7 +120,9 @@
|
|||||||
FUNC(AC_cs2_sound), \
|
FUNC(AC_cs2_sound), \
|
||||||
FUNC(AC_inv_dsx), \
|
FUNC(AC_inv_dsx), \
|
||||||
FUNC(AC_inv_dsy), \
|
FUNC(AC_inv_dsy), \
|
||||||
FUNC(AC_inv_dsz)
|
FUNC(AC_inv_dsz),
|
||||||
|
|
||||||
|
#define AC_FOR_USER_REAL3_PARAM_TYPES(FUNC)
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -106,49 +131,33 @@
|
|||||||
* =============================================================================
|
* =============================================================================
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
#if LDENSITY
|
|
||||||
#define AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC) \
|
|
||||||
FUNC(VTXBUF_LNRHO),
|
|
||||||
#else
|
|
||||||
#define AC_FOR_DENSITY_VTXBUF_HANDLES(FUNC)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LHYDRO
|
|
||||||
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC) \
|
|
||||||
FUNC(VTXBUF_UUX), \
|
|
||||||
FUNC(VTXBUF_UUY), \
|
|
||||||
FUNC(VTXBUF_UUZ),
|
|
||||||
#else
|
|
||||||
#define AC_FOR_HYDRO_VTXBUF_HANDLES(FUNC)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LMAGNETIC
|
|
||||||
#define AC_FOR_MAGNETIC_VTXBUF_HANDLES(FUNC) \
|
|
||||||
FUNC(VTXBUF_AX), \
|
|
||||||
FUNC(VTXBUF_AY), \
|
|
||||||
FUNC(VTXBUF_AZ),
|
|
||||||
#else
|
|
||||||
#define AC_FOR_MAGNETIC_VTXBUF_HANDLES(FUNC)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LENTROPY
|
#if LENTROPY
|
||||||
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC) \
|
#define AC_FOR_VTXBUF_HANDLES(FUNC) \
|
||||||
FUNC(VTXBUF_ENTROPY),
|
FUNC(VTXBUF_LNRHO), \
|
||||||
|
FUNC(VTXBUF_UUX), \
|
||||||
|
FUNC(VTXBUF_UUY), \
|
||||||
|
FUNC(VTXBUF_UUZ), \
|
||||||
|
FUNC(VTXBUF_AX), \
|
||||||
|
FUNC(VTXBUF_AY), \
|
||||||
|
FUNC(VTXBUF_AZ), \
|
||||||
|
FUNC(VTXBUF_ENTROPY),
|
||||||
|
#elif LMAGNETIC
|
||||||
|
#define AC_FOR_VTXBUF_HANDLES(FUNC) \
|
||||||
|
FUNC(VTXBUF_LNRHO), \
|
||||||
|
FUNC(VTXBUF_UUX), \
|
||||||
|
FUNC(VTXBUF_UUY), \
|
||||||
|
FUNC(VTXBUF_UUZ), \
|
||||||
|
FUNC(VTXBUF_AX), \
|
||||||
|
FUNC(VTXBUF_AY), \
|
||||||
|
FUNC(VTXBUF_AZ),
|
||||||
|
#elif LHYDRO
|
||||||
|
#define AC_FOR_VTXBUF_HANDLES(FUNC) \
|
||||||
|
FUNC(VTXBUF_LNRHO), \
|
||||||
|
FUNC(VTXBUF_UUX), \
|
||||||
|
FUNC(VTXBUF_UUY), \
|
||||||
|
FUNC(VTXBUF_UUZ),
|
||||||
#else
|
#else
|
||||||
#define AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC)
|
#define AC_FOR_VTXBUF_HANDLES(FUNC) \
|
||||||
|
FUNC(VTXBUF_LNRHO),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//MR: Temperature must not have an additional variable slot, but should sit on the
|
|
||||||
// same as entropy.
|
|
||||||
#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_DENSITY_VTXBUF_HANDLES(FUNC) \
|
|
||||||
AC_FOR_ENTROPY_VTXBUF_HANDLES(FUNC) \
|
|
||||||
AC_FOR_MAGNETIC_VTXBUF_HANDLES(FUNC) \
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
@@ -16,183 +16,28 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with Astaroth. If not, see <http://www.gnu.org/licenses/>.
|
along with Astaroth. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* \brief Brief info.
|
|
||||||
*
|
|
||||||
* Provides an interface to Astaroth. Contains all the necessary configuration
|
|
||||||
* structs and functions for running the code on multiple GPUs.
|
|
||||||
*
|
|
||||||
* All interface functions declared here (such as acInit()) operate all GPUs
|
|
||||||
* available in the node under the hood, and the user does not need any
|
|
||||||
* information about the decomposition, synchronization or such to use these
|
|
||||||
* functions.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/* Prevent name mangling */
|
#include "astaroth_defines.h"
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <float.h> // FLT_EPSILON, etc
|
|
||||||
#include <stdlib.h> // size_t
|
|
||||||
#include <vector_types.h> // CUDA vector types (float4, etc)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Flags for auto-optimization
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
#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)
|
|
||||||
#define MAX_REGISTERS_PER_BLOCK (65536)
|
|
||||||
#define MAX_THREADS_PER_BLOCK (1024)
|
|
||||||
#define WARP_SIZE (32)
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Compile-time constants used during simulation (user definable)
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
// USER_PROVIDED_DEFINES must be defined in user.h if the user wants to override the following
|
|
||||||
// logical switches
|
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
#ifndef USER_PROVIDED_DEFINES
|
|
||||||
#include "stencil_defines.h"
|
|
||||||
#endif
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Built-in parameters
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
// clang-format off
|
|
||||||
#define AC_FOR_BUILTIN_INT_PARAM_TYPES(FUNC)\
|
|
||||||
/* cparams */\
|
|
||||||
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), \
|
|
||||||
/* Additional */\
|
|
||||||
FUNC(AC_mxy),\
|
|
||||||
FUNC(AC_nxy),\
|
|
||||||
FUNC(AC_nxyz),
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Single/double precision switch
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
// clang-format off
|
|
||||||
#if AC_DOUBLE_PRECISION == 1
|
|
||||||
typedef double AcReal;
|
|
||||||
typedef double3 AcReal3;
|
|
||||||
#define AC_REAL_MAX (DBL_MAX)
|
|
||||||
#define AC_REAL_MIN (DBL_MIN)
|
|
||||||
#define AC_REAL_EPSILON (DBL_EPSILON)
|
|
||||||
#else
|
|
||||||
typedef float AcReal;
|
|
||||||
typedef float3 AcReal3;
|
|
||||||
#define AC_REAL_MAX (FLT_MAX)
|
|
||||||
#define AC_REAL_MIN (FLT_MIN)
|
|
||||||
#define AC_REAL_EPSILON (FLT_EPSILON)
|
|
||||||
#endif
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
AcReal3 row[3];
|
int int_params[NUM_INT_PARAMS];
|
||||||
} AcMatrix;
|
int3 int3_params[NUM_INT3_PARAMS];
|
||||||
|
AcReal real_params[NUM_REAL_PARAMS];
|
||||||
/*
|
AcReal3 vec_params[NUM_REAL3_PARAMS];
|
||||||
* =============================================================================
|
|
||||||
* Helper macros
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
#define AC_GEN_ID(X) X
|
|
||||||
#define AC_GEN_STR(X) #X
|
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Error codes
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
typedef enum { AC_SUCCESS = 0, AC_FAILURE = 1 } AcResult;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Reduction types
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
typedef enum { RTYPE_MAX, RTYPE_MIN, RTYPE_RMS, RTYPE_RMS_EXP, NUM_REDUCTION_TYPES } ReductionType;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Definitions for the enums and structs for AcMeshInfo (DO NOT TOUCH)
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
AC_FOR_BUILTIN_INT_PARAM_TYPES(AC_GEN_ID) //
|
|
||||||
AC_FOR_USER_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
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int int_params[NUM_INT_PARAM_TYPES];
|
|
||||||
AcReal real_params[NUM_REAL_PARAM_TYPES];
|
|
||||||
// AcReal* vec_params[NUM_VEC_PARAM_TYPES];
|
|
||||||
} AcMeshInfo;
|
} AcMeshInfo;
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Definitions for the enums and structs for AcMesh (DO NOT TOUCH)
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
typedef enum { AC_FOR_VTXBUF_HANDLES(AC_GEN_ID) NUM_VTXBUF_HANDLES } VertexBufferHandle;
|
|
||||||
|
|
||||||
extern const char* vtxbuf_names[]; // Defined in astaroth.cu
|
|
||||||
|
|
||||||
/*
|
|
||||||
typedef struct {
|
|
||||||
AcReal* data;
|
|
||||||
} VertexBuffer;
|
|
||||||
*/
|
|
||||||
|
|
||||||
// NOTE: there's no particular benefit declaring AcMesh a class, since
|
|
||||||
// a library user may already have allocated memory for the vertex_buffers.
|
|
||||||
// But then we would allocate memory again when the user wants to start
|
|
||||||
// filling the class with data. => Its better to consider AcMesh as a
|
|
||||||
// payload-only struct
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
AcReal* vertex_buffer[NUM_VTXBUF_HANDLES];
|
AcReal* vertex_buffer[NUM_VTXBUF_HANDLES];
|
||||||
AcMeshInfo info;
|
AcMeshInfo info;
|
||||||
} AcMesh;
|
} AcMesh;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
STREAM_DEFAULT,
|
||||||
|
NUM_STREAM_TYPES, //
|
||||||
|
STREAM_ALL
|
||||||
|
} StreamType;
|
||||||
|
|
||||||
#define AC_VTXBUF_SIZE(mesh_info) \
|
#define AC_VTXBUF_SIZE(mesh_info) \
|
||||||
((size_t)(mesh_info.int_params[AC_mx] * mesh_info.int_params[AC_my] * \
|
((size_t)(mesh_info.int_params[AC_mx] * mesh_info.int_params[AC_my] * \
|
||||||
mesh_info.int_params[AC_mz]))
|
mesh_info.int_params[AC_mz]))
|
||||||
@@ -209,17 +54,6 @@ typedef struct {
|
|||||||
((i) + (j)*mesh_info.int_params[AC_mx] + \
|
((i) + (j)*mesh_info.int_params[AC_mx] + \
|
||||||
(k)*mesh_info.int_params[AC_mx] * mesh_info.int_params[AC_my])
|
(k)*mesh_info.int_params[AC_mx] * mesh_info.int_params[AC_my])
|
||||||
|
|
||||||
/*
|
|
||||||
* =============================================================================
|
|
||||||
* Astaroth interface: Basic functions. Synchronous.
|
|
||||||
* =============================================================================
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
STREAM_DEFAULT,
|
|
||||||
NUM_STREAM_TYPES, //
|
|
||||||
STREAM_ALL
|
|
||||||
} StreamType;
|
|
||||||
|
|
||||||
/** Checks whether there are any CUDA devices available. Returns AC_SUCCESS if there is 1 or more,
|
/** Checks whether there are any CUDA devices available. Returns AC_SUCCESS if there is 1 or more,
|
||||||
* AC_FAILURE otherwise. */
|
* AC_FAILURE otherwise. */
|
||||||
AcResult acCheckDeviceAvailability(void);
|
AcResult acCheckDeviceAvailability(void);
|
||||||
@@ -303,8 +137,3 @@ AcResult acIntegrateStepWithOffsetAsync(const int& isubstep, const AcReal& dt, c
|
|||||||
/** Performs the boundary condition step on the GPUs in the node. Asynchronous. */
|
/** Performs the boundary condition step on the GPUs in the node. Asynchronous. */
|
||||||
AcResult acBoundcondStep(void);
|
AcResult acBoundcondStep(void);
|
||||||
AcResult acBoundcondStepAsync(const StreamType stream);
|
AcResult acBoundcondStepAsync(const StreamType stream);
|
||||||
|
|
||||||
/* End extern "C" */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
109
include/astaroth_defines.h
Normal file
109
include/astaroth_defines.h
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2014-2019, Johannes Pekkilae, Miikka Vaeisalae.
|
||||||
|
|
||||||
|
This file is part of Astaroth.
|
||||||
|
|
||||||
|
Astaroth is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Astaroth is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Astaroth. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include <float.h> // FLT_EPSILON, etc
|
||||||
|
#include <stdlib.h> // size_t
|
||||||
|
#include <vector_types.h> // CUDA vector types (float4, etc)
|
||||||
|
|
||||||
|
#include "stencil_defines.h"
|
||||||
|
|
||||||
|
// Library flags
|
||||||
|
#define VERBOSE_PRINTING (1)
|
||||||
|
|
||||||
|
// Built-in types and parameters
|
||||||
|
#if AC_DOUBLE_PRECISION == 1
|
||||||
|
typedef double AcReal;
|
||||||
|
typedef double3 AcReal3;
|
||||||
|
#define AC_REAL_MAX (DBL_MAX)
|
||||||
|
#define AC_REAL_MIN (DBL_MIN)
|
||||||
|
#define AC_REAL_EPSILON (DBL_EPSILON)
|
||||||
|
#else
|
||||||
|
typedef float AcReal;
|
||||||
|
typedef float3 AcReal3;
|
||||||
|
#define AC_REAL_MAX (FLT_MAX)
|
||||||
|
#define AC_REAL_MIN (FLT_MIN)
|
||||||
|
#define AC_REAL_EPSILON (FLT_EPSILON)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
AcReal3 row[3];
|
||||||
|
} AcMatrix;
|
||||||
|
|
||||||
|
// 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_INT3_PARAM_TYPES(FUNC)
|
||||||
|
|
||||||
|
#define AC_FOR_BUILTIN_REAL_PARAM_TYPES(FUNC)
|
||||||
|
|
||||||
|
#define AC_FOR_BUILTIN_REAL3_PARAM_TYPES(FUNC)
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
typedef enum { AC_SUCCESS = 0, AC_FAILURE = 1 } AcResult;
|
||||||
|
|
||||||
|
typedef enum { RTYPE_MAX, RTYPE_MIN, RTYPE_RMS, RTYPE_RMS_EXP, NUM_REDUCTION_TYPES } ReductionType;
|
||||||
|
|
||||||
|
#define AC_GEN_ID(X) X
|
||||||
|
typedef enum {
|
||||||
|
AC_FOR_BUILTIN_INT_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
AC_FOR_USER_INT_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
NUM_INT_PARAMS
|
||||||
|
} AcIntParam;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
AC_FOR_BUILTIN_INT3_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
AC_FOR_USER_INT3_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
NUM_INT3_PARAMS
|
||||||
|
} AcInt3Param;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
AC_FOR_BUILTIN_REAL_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
AC_FOR_USER_REAL_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
NUM_REAL_PARAMS
|
||||||
|
} AcRealParam;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
AC_FOR_BUILTIN_REAL3_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
AC_FOR_USER_REAL3_PARAM_TYPES(AC_GEN_ID) //
|
||||||
|
NUM_REAL3_PARAMS
|
||||||
|
} AcReal3Param;
|
||||||
|
|
||||||
|
typedef enum { AC_FOR_VTXBUF_HANDLES(AC_GEN_ID) NUM_VTXBUF_HANDLES } VertexBufferHandle;
|
||||||
|
#undef AC_GEN_ID
|
||||||
|
|
||||||
|
extern const char* intparam_names[];
|
||||||
|
extern const char* int3param_names[];
|
||||||
|
extern const char* realparam_names[];
|
||||||
|
extern const char* real3param_names[];
|
||||||
|
extern const char* vtxbuf_names[];
|
@@ -130,10 +130,17 @@
|
|||||||
#include "math_utils.h" // sum for reductions
|
#include "math_utils.h" // sum for reductions
|
||||||
#include "standalone/config_loader.h" // update_config
|
#include "standalone/config_loader.h" // update_config
|
||||||
|
|
||||||
const char* intparam_names[] = {AC_FOR_BUILTIN_INT_PARAM_TYPES(AC_GEN_STR)
|
#define AC_GEN_STR(X) #X
|
||||||
AC_FOR_USER_INT_PARAM_TYPES(AC_GEN_STR)};
|
const char* intparam_names[] = {AC_FOR_BUILTIN_INT_PARAM_TYPES(AC_GEN_STR) //
|
||||||
const char* realparam_names[] = {AC_FOR_REAL_PARAM_TYPES(AC_GEN_STR)};
|
AC_FOR_USER_INT_PARAM_TYPES(AC_GEN_STR)};
|
||||||
const char* vtxbuf_names[] = {AC_FOR_VTXBUF_HANDLES(AC_GEN_STR)};
|
const char* int3param_names[] = {AC_FOR_BUILTIN_INT3_PARAM_TYPES(AC_GEN_STR) //
|
||||||
|
AC_FOR_USER_INT3_PARAM_TYPES(AC_GEN_STR)};
|
||||||
|
const char* realparam_names[] = {AC_FOR_BUILTIN_REAL_PARAM_TYPES(AC_GEN_STR) //
|
||||||
|
AC_FOR_USER_REAL_PARAM_TYPES(AC_GEN_STR)};
|
||||||
|
const char* real3param_names[] = {AC_FOR_BUILTIN_REAL3_PARAM_TYPES(AC_GEN_STR) //
|
||||||
|
AC_FOR_USER_REAL3_PARAM_TYPES(AC_GEN_STR)};
|
||||||
|
const char* vtxbuf_names[] = {AC_FOR_VTXBUF_HANDLES(AC_GEN_STR)};
|
||||||
|
#undef AC_GEN_STR
|
||||||
|
|
||||||
static const int MAX_NUM_DEVICES = 32;
|
static const int MAX_NUM_DEVICES = 32;
|
||||||
static int num_devices = 0;
|
static int num_devices = 0;
|
||||||
|
Reference in New Issue
Block a user