Reordered src/core to have better division to host and device code (this is more likely to work when compiling with mpicxx). Disabled separate compilation of CUDA kernels as this complicates compilation and is a source of many cmake/cuda bugs. As a downside, GPU code takes longer to compile.
This commit is contained in:
82
src/core/kernels/kernels.h
Normal file
82
src/core/kernels/kernels.h
Normal file
@@ -0,0 +1,82 @@
|
||||
#pragma once
|
||||
#include "astaroth.h"
|
||||
|
||||
typedef struct {
|
||||
int3 dims;
|
||||
AcReal* data;
|
||||
} PackedData;
|
||||
|
||||
typedef struct {
|
||||
AcReal* in[NUM_VTXBUF_HANDLES];
|
||||
AcReal* out[NUM_VTXBUF_HANDLES];
|
||||
|
||||
AcReal* profiles[NUM_SCALARARRAY_HANDLES];
|
||||
} VertexBufferArray;
|
||||
|
||||
struct device_s {
|
||||
int id;
|
||||
AcMeshInfo local_config;
|
||||
|
||||
// Concurrency
|
||||
cudaStream_t streams[NUM_STREAMS];
|
||||
|
||||
// Memory
|
||||
VertexBufferArray vba;
|
||||
AcReal* reduce_scratchpad;
|
||||
AcReal* reduce_result;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** */
|
||||
AcResult acKernelPeriodicBoundconds(const cudaStream_t stream, const int3 start, const int3 end,
|
||||
AcReal* vtxbuf);
|
||||
|
||||
/** */
|
||||
AcResult acKernelDummy(void);
|
||||
|
||||
/** */
|
||||
AcResult acKernelAutoOptimizeIntegration(const int3 start, const int3 end, VertexBufferArray vba);
|
||||
|
||||
/** */
|
||||
AcResult acKernelIntegrateSubstep(const cudaStream_t stream, const int step_number,
|
||||
const int3 start, const int3 end, VertexBufferArray vba);
|
||||
|
||||
/** */
|
||||
AcResult acKernelPackData(const cudaStream_t stream, const VertexBufferArray vba,
|
||||
const int3 vba_start, PackedData packed);
|
||||
|
||||
/** */
|
||||
AcResult acKernelUnpackData(const cudaStream_t stream, const PackedData packed,
|
||||
const int3 vba_start, VertexBufferArray vba);
|
||||
|
||||
/** */
|
||||
AcReal acKernelReduceScal(const cudaStream_t stream, const ReductionType rtype, const int3 start,
|
||||
const int3 end, const AcReal* vtxbuf, AcReal* scratchpad,
|
||||
AcReal* reduce_result);
|
||||
|
||||
/** */
|
||||
AcReal acKernelReduceVec(const cudaStream_t stream, const ReductionType rtype, const int3 start,
|
||||
const int3 end, const AcReal* vtxbuf0, const AcReal* vtxbuf1,
|
||||
const AcReal* vtxbuf2, AcReal* scratchpad, AcReal* reduce_result);
|
||||
|
||||
AcResult acDeviceLoadMeshInfo(const Device device, const Stream stream,
|
||||
const AcMeshInfo device_config);
|
||||
|
||||
AcResult acDeviceLoadScalarUniform(const Device device, const Stream stream,
|
||||
const AcRealParam param, const AcReal value);
|
||||
|
||||
AcResult acDeviceLoadVectorUniform(const Device device, const Stream stream,
|
||||
const AcReal3Param param, const AcReal3 value);
|
||||
|
||||
AcResult acDeviceLoadIntUniform(const Device device, const Stream stream, const AcIntParam param,
|
||||
const int value);
|
||||
|
||||
AcResult acDeviceLoadInt3Uniform(const Device device, const Stream stream, const AcInt3Param param,
|
||||
const int3 value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
Reference in New Issue
Block a user