 |
Astaroth
2.2
|
Go to the documentation of this file.
20 #include <cuda_runtime_api.h>
26 #define STENCIL_ORDER (6)
27 #define NGHOST (STENCIL_ORDER / 2)
28 #define VERBOSE_PRINTING (1)
31 #if AC_DOUBLE_PRECISION == 1
34 #define AC_REAL_MAX (DBL_MAX)
35 #define AC_REAL_MIN (DBL_MIN)
36 #define AC_REAL_EPSILON (DBL_EPSILON)
40 #define AC_REAL_MAX (FLT_MAX)
41 #define AC_REAL_MIN (FLT_MIN)
42 #define AC_REAL_EPSILON (FLT_EPSILON)
49 #include "user_defines.h"
83 #define STREAM_ALL (NUM_STREAMS)
85 #define AC_GEN_ID(X) X,
108 NUM_SCALARARRAY_HANDLES
117 #define _UNUSED __attribute__((unused)) // Does not give a warning if unused
118 #define AC_GEN_STR(X) #X,
129 int int_params[NUM_INT_PARAMS];
130 int3 int3_params[NUM_INT3_PARAMS];
136 AcReal* vertex_buffer[NUM_VTXBUF_HANDLES];
176 acVertexBufferSizeBytes(
const AcMeshInfo info)
178 return sizeof(
AcReal) * acVertexBufferSize(info);
182 acVertexBufferCompdomainSize(
const AcMeshInfo info)
188 acVertexBufferCompdomainSizeBytes(
const AcMeshInfo info)
190 return sizeof(
AcReal) * acVertexBufferCompdomainSize(info);
194 acVertexBufferIdx(
const int i,
const int j,
const int k,
const AcMeshInfo info)
205 for (
int i = 0; i < NUM_INT_PARAMS; ++i)
206 printf(
"[%s]: %d\n", intparam_names[i], config.
int_params[i]);
207 for (
int i = 0; i < NUM_INT3_PARAMS; ++i)
208 printf(
"[%s]: (%d, %d, %d)\n", int3param_names[i], config.
int3_params[i].x,
210 for (
int i = 0; i < NUM_REAL_PARAMS; ++i)
211 printf(
"[%s]: %g\n", realparam_names[i], (
double)(config.
real_params[i]));
212 for (
int i = 0; i < NUM_REAL3_PARAMS; ++i)
213 printf(
"[%s]: (%g, %g, %g)\n", real3param_names[i], (
double)(config.
real3_params[i].x),
357 const int3 dst,
const int num_vertices);
361 const int3 src,
const int3 dst,
const int num_vertices);
373 const int3 dst,
const int num_vertices,
378 const int3 dst,
const int num_vertices,
AcMesh* host_mesh);
389 const int3 start,
const int3 end,
const AcReal dt);
451 const AcReal* data,
const size_t num);
463 const int3 dst,
const int num_vertices);
467 const AcMesh host_mesh,
const int3 src,
const int3 dst,
468 const int num_vertices);
480 const int3 dst,
const int num_vertices,
485 const int3 dst,
const int num_vertices,
AcMesh* host_mesh);
497 const int3 src,
const int3 dst,
498 const int num_vertices,
Device dst_device);
502 const int3 src,
const int3 dst,
const int num_vertices,
514 const int3 start,
const int3 end,
const AcReal dt);
AcResult acDeviceLoadScalarUniform(const Device device, const Stream stream, const AcRealParam param, const AcReal value)
Definition: kernels.cu:100
AcResult acDeviceLoadMesh(const Device device, const Stream stream, const AcMesh host_mesh)
Definition: device.cc:273
AcResult acDeviceReduceVec(const Device device, const Stream stream_type, const ReductionType rtype, const VertexBufferHandle vtxbuf0, const VertexBufferHandle vtxbuf1, const VertexBufferHandle vtxbuf2, AcReal *result)
Definition: device.cc:442
#define AC_GEN_STR(X)
Definition: astaroth.h:118
AcResult acDeviceLoadMeshWithOffset(const Device device, const Stream stream, const AcMesh host_mesh, const int3 src, const int3 dst, const int num_vertices)
Definition: device.cc:248
AcResult acNodeReduceVec(const Node node, const Stream stream_type, const ReductionType rtype, const VertexBufferHandle vtxbuf0, const VertexBufferHandle vtxbuf1, const VertexBufferHandle vtxbuf2, AcReal *result)
Definition: node.cc:838
@ AC_FOR_VTXBUF_HANDLES
Definition: astaroth.h:112
AcResult acDeviceLoadIntUniform(const Device device, const Stream stream, const AcIntParam param, const int value)
Definition: kernels.cu:149
AcResult acDeviceStoreMeshWithOffset(const Device device, const Stream stream, const int3 src, const int3 dst, const int num_vertices, AcMesh *host_mesh)
Definition: device.cc:303
AcResult acBoundcondStep(void)
Definition: astaroth.cc:107
AcResult acIntegrateStep(const int isubstep, const AcReal dt)
Definition: astaroth.cc:90
@ RTYPE_SUM
Definition: astaroth.h:58
AcResult acDevicePeriodicBoundconds(const Device device, const Stream stream, const int3 start, const int3 end)
Definition: device.cc:412
AcResult acNodeSynchronizeVertexBuffer(const Node node, const Stream stream, const VertexBufferHandle vtxbuf_handle)
Definition: node.cc:385
AcResult acNodeStoreMesh(const Node node, const Stream stream, AcMesh *host_mesh)
Definition: node.cc:606
AcResult
Definition: astaroth.h:51
AcResult acSynchronizeStream(const Stream stream)
Definition: astaroth.cc:60
Definition: astaroth.h:147
@ STREAM_16
Definition: astaroth.h:80
@ AC_FOR_USER_REAL_PARAM_TYPES
Definition: astaroth.h:97
AcResult acNodeStoreVertexBufferWithOffset(const Node node, const Stream stream, const VertexBufferHandle vtxbuf_handle, const int3 src, const int3 dst, const int num_vertices, AcMesh *host_mesh)
Definition: node.cc:540
@ STREAM_12
Definition: astaroth.h:76
AcResult acCheckDeviceAvailability(void)
Definition: astaroth.cc:43
AcResult acSynchronize(void)
Definition: astaroth.cc:54
AcResult acNodeLoadConstant(const Node node, const Stream stream, const AcRealParam param, const AcReal value)
Definition: node.cc:451
@ STREAM_2
Definition: astaroth.h:66
int num_devices
Definition: astaroth.h:153
AcResult acNodeLoadMeshWithOffset(const Node node, const Stream stream, const AcMesh host_mesh, const int3 src, const int3 dst, const int num_vertices)
Definition: node.cc:507
@ STREAM_5
Definition: astaroth.h:69
ReductionType
Definition: astaroth.h:53
AcResult acDeviceStoreVertexBuffer(const Device device, const Stream stream, const VertexBufferHandle vtxbuf_handle, AcMesh *host_mesh)
Definition: device.cc:316
AcResult acDeviceIntegrateSubstep(const Device device, const Stream stream, const int step_number, const int3 start, const int3 end, const AcReal dt)
Definition: device.cc:393
int int_params[NUM_INT_PARAMS]
Definition: astaroth.h:129
@ AC_FAILURE
Definition: astaroth.h:51
AcResult acNodeLoadVertexBuffer(const Node node, const Stream stream, const AcMesh host_mesh, const VertexBufferHandle vtxbuf_handle)
Definition: node.cc:518
@ AC_FOR_USER_INT3_PARAM_TYPES
Definition: astaroth.h:92
AcResult acNodeReduceScal(const Node node, const Stream stream, const ReductionType rtype, const VertexBufferHandle vtxbuf_handle, AcReal *result)
Definition: node.cc:822
AcResult acNodeDestroy(Node node)
Definition: node.cc:309
int3 n
Definition: astaroth.h:149
AcResult acNodeLoadMesh(const Node node, const Stream stream, const AcMesh host_mesh)
Definition: node.cc:531
AcResult acDeviceReduceScal(const Device device, const Stream stream, const ReductionType rtype, const VertexBufferHandle vtxbuf_handle, AcReal *result)
Definition: device.cc:422
float AcReal
Definition: astaroth.h:38
AcResult acNodePrintInfo(const Node node)
Definition: node.cc:347
@ STREAM_7
Definition: astaroth.h:71
struct node_s * Node
Definition: astaroth.h:145
AcReal acReduceVec(const ReductionType rtype, const VertexBufferHandle a, const VertexBufferHandle b, const VertexBufferHandle c)
Definition: astaroth.cc:121
AcResult acDeviceCreate(const int id, const AcMeshInfo device_config, Device *device)
Definition: device.cc:106
AcResult acDeviceLoadVertexBufferWithOffset(const Device device, const Stream stream, const AcMesh host_mesh, const VertexBufferHandle vtxbuf_handle, const int3 src, const int3 dst, const int num_vertices)
Definition: device.cc:228
@ STREAM_4
Definition: astaroth.h:68
AcInt3Param
Definition: astaroth.h:91
AcResult acNodeStoreMeshWithOffset(const Node node, const Stream stream, const int3 src, const int3 dst, const int num_vertices, AcMesh *host_mesh)
Definition: node.cc:581
@ AC_FOR_SCALARARRAY_HANDLES
Definition: astaroth.h:107
AcResult acLoad(const AcMesh host_mesh)
Definition: astaroth.cc:72
@ RTYPE_MAX
Definition: astaroth.h:54
@ AC_SUCCESS
Definition: astaroth.h:51
AcResult acIntegrateStepWithOffset(const int isubstep, const AcReal dt, const int3 start, const int3 end)
Definition: astaroth.cc:101
AcResult acDeviceLoadScalarArray(const Device device, const Stream stream, const ScalarArrayHandle handle, const size_t start, const AcReal *data, const size_t num)
Definition: device.cc:210
Grid subgrid
Definition: astaroth.h:157
AcResult acQuit(void)
Definition: astaroth.cc:36
AcReal acReduceScal(const ReductionType rtype, const VertexBufferHandle vtxbuf_handle)
Definition: astaroth.cc:113
int3 int3_params[NUM_INT3_PARAMS]
Definition: astaroth.h:130
@ STREAM_13
Definition: astaroth.h:77
Definition: astaroth.h:45
Grid grid
Definition: astaroth.h:156
AcResult acNodePeriodicBoundconds(const Node node, const Stream stream)
Definition: node.cc:786
AcResult acDeviceSynchronizeStream(const Device device, const Stream stream)
Definition: device.cc:93
AcReal3 real3_params[NUM_REAL3_PARAMS]
Definition: astaroth.h:132
Definition: astaroth.h:128
AcResult acDeviceLoadInt3Uniform(const Device device, const Stream stream, const AcInt3Param param, const int3 value)
Definition: kernels.cu:173
@ STREAM_14
Definition: astaroth.h:78
AcResult acLoadDeviceConstant(const AcRealParam param, const AcReal value)
Definition: astaroth.cc:66
AcResult acDeviceLoadVertexBuffer(const Device device, const Stream stream, const AcMesh host_mesh, const VertexBufferHandle vtxbuf_handle)
Definition: device.cc:260
@ STREAM_DEFAULT
Definition: astaroth.h:63
AcResult acDevicePeriodicBoundcondStep(const Device device, const Stream stream, const VertexBufferHandle vtxbuf_handle, const int3 start, const int3 end)
Definition: device.cc:402
Device * devices
Definition: astaroth.h:154
@ NUM_STREAMS
Definition: astaroth.h:81
AcResult acNodeCreate(const int id, const AcMeshInfo node_config, Node *node)
Definition: node.cc:210
@ RTYPE_RMS_EXP
Definition: astaroth.h:57
struct device_s * Device
Definition: astaroth.h:141
AcResult acNodeIntegrate(const Node node, const AcReal dt)
Definition: node.cc:693
@ STREAM_1
Definition: astaroth.h:65
AcResult acNodePeriodicBoundcondStep(const Node node, const Stream stream, const VertexBufferHandle vtxbuf_handle)
Definition: node.cc:772
Preprocessed Scalar value(in ScalarField vertex)
Definition: stdderiv.h:218
@ AC_FOR_USER_REAL3_PARAM_TYPES
Definition: astaroth.h:102
AcResult acNodeIntegrateSubstep(const Node node, const Stream stream, const int step_number, const int3 start, const int3 end, const AcReal dt)
Definition: node.cc:615
AcReal3Param
Definition: astaroth.h:101
AcResult acNodeAutoOptimize(const Node node)
Definition: node.cc:366
AcMeshInfo info
Definition: astaroth.h:137
AcResult acDeviceTransferMesh(const Device src_device, const Stream stream, Device dst_device)
Definition: device.cc:383
#define AC_GEN_ID(X)
Definition: astaroth.h:85
AcResult acDeviceLoadDefaultUniforms(const Device device)
Definition: kernels.cu:228
AcResult acDeviceSwapBuffers(const Device device)
Definition: device.cc:198
AcResult acDeviceAutoOptimize(const Device device)
Definition: device.cc:76
AcResult acLoadWithOffset(const AcMesh host_mesh, const int3 src, const int num_vertices)
Definition: astaroth.cc:136
int3 m
Definition: astaroth.h:148
@ NUM_REDUCTION_TYPES
Definition: astaroth.h:59
AcResult acDeviceLoadMeshInfo(const Device device, const AcMeshInfo device_config)
Definition: kernels.cu:199
VertexBufferHandle
Definition: astaroth.h:111
Stream
Definition: astaroth.h:62
AcResult acNodeQueryDeviceConfiguration(const Node node, DeviceConfiguration *config)
Definition: node.cc:355
AcResult acDevicePrintInfo(const Device device)
Definition: device.cc:16
AcResult acNodeSynchronizeStream(const Node node, const Stream stream)
Definition: node.cc:374
AcResult acDeviceStoreVertexBufferWithOffset(const Device device, const Stream stream, const VertexBufferHandle vtxbuf_handle, const int3 src, const int3 dst, const int num_vertices, AcMesh *host_mesh)
Definition: device.cc:283
AcResult acNodeLoadVertexBufferWithOffset(const Node node, const Stream stream, const AcMesh host_mesh, const VertexBufferHandle vtxbuf_handle, const int3 src, const int3 dst, const int num_vertices)
Definition: node.cc:463
Definition: astaroth.h:152
@ RTYPE_MIN
Definition: astaroth.h:55
float3 AcReal3
Definition: astaroth.h:39
@ STREAM_3
Definition: astaroth.h:67
@ AC_FOR_USER_INT_PARAM_TYPES
Definition: astaroth.h:87
@ STREAM_8
Definition: astaroth.h:72
AcResult acDeviceDestroy(Device device)
Definition: device.cc:169
AcIntParam
Definition: astaroth.h:86
AcResult acDeviceTransferMeshWithOffset(const Device src_device, const Stream stream, const int3 src, const int3 dst, const int num_vertices, Device *dst_device)
AcResult acNodeStoreVertexBuffer(const Node node, const Stream stream, const VertexBufferHandle vtxbuf_handle, AcMesh *host_mesh)
Definition: node.cc:592
AcResult acNodeSwapBuffers(const Node node)
Definition: node.cc:441
@ STREAM_0
Definition: astaroth.h:64
AcResult acSynchronizeMesh(void)
Definition: astaroth.cc:142
@ STREAM_11
Definition: astaroth.h:75
@ STREAM_9
Definition: astaroth.h:73
AcResult acNodeSynchronizeMesh(const Node node, const Stream stream)
Definition: node.cc:431
@ STREAM_6
Definition: astaroth.h:70
ScalarArrayHandle
Definition: astaroth.h:106
AcResult acStore(AcMesh *host_mesh)
Definition: astaroth.cc:78
int acGetNumDevicesPerNode(void)
Definition: astaroth.cc:148
AcResult acDeviceTransferVertexBufferWithOffset(const Device src_device, const Stream stream, const VertexBufferHandle vtxbuf_handle, const int3 src, const int3 dst, const int num_vertices, Device dst_device)
Definition: device.cc:340
#define _UNUSED
Definition: astaroth.h:117
AcReal real_params[NUM_REAL_PARAMS]
Definition: astaroth.h:131
@ STREAM_15
Definition: astaroth.h:79
AcResult acInit(const AcMeshInfo mesh_info)
Definition: astaroth.cc:29
@ STREAM_10
Definition: astaroth.h:74
AcResult acDeviceStoreMesh(const Device device, const Stream stream, AcMesh *host_mesh)
Definition: device.cc:330
AcResult acIntegrate(const AcReal dt)
Definition: astaroth.cc:84
AcResult acDeviceTransferVertexBuffer(const Device src_device, const Stream stream, const VertexBufferHandle vtxbuf_handle, Device dst_device)
Definition: device.cc:370
AcResult acStoreWithOffset(const int3 dst, const size_t num_vertices, AcMesh *host_mesh)
Definition: astaroth.cc:130
Node acGetNode(void)
Definition: astaroth.cc:156
Definition: astaroth.h:135
AcResult acDeviceRunMPITest(void)
Definition: device.cc:1381
AcRealParam
Definition: astaroth.h:96
AcResult acDeviceLoadVectorUniform(const Device device, const Stream stream, const AcReal3Param param, const AcReal3 value)
Definition: kernels.cu:124
@ RTYPE_RMS
Definition: astaroth.h:56