forked from richa-batra/ParticleRobotSimulations
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparticlebot.cuh
121 lines (96 loc) · 3.81 KB
/
particlebot.cuh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
* Copyright 1993-2015 NVIDIA Corporation. All rights reserved.
*
* Please refer to the NVIDIA end user license agreement (EULA) associated
* with this source code for terms and conditions that govern your use of
* this software. Any use, reproduction, disclosure, or distribution of
* this software and related documentation outside the terms of the EULA
* is strictly prohibited.
*
*/
#include <curand.h>
#include <curand_kernel.h>
extern "C"
{
void cudaInit(int argc, char **argv);
void allocateArray(void **devPtr, int size);
void freeArray(void *devPtr);
void threadSync();
void copyArrayFromDevice(void *host, const void *device, struct cudaGraphicsResource **cuda_vbo_resource, int size);
void copyArrayToDevice(void *device, const void *host, int offset, int size);
void registerGLBufferObject(uint vbo, struct cudaGraphicsResource **cuda_vbo_resource);
void unregisterGLBufferObject(struct cudaGraphicsResource *cuda_vbo_resource);
void *mapGLBufferObject(struct cudaGraphicsResource **cuda_vbo_resource);
void unmapGLBufferObject(struct cudaGraphicsResource *cuda_vbo_resource);
void setParameters(SimParams *hostParams);
void integrateSystem(float *pos,
float *vel,
float *rad,
float deltaTime,
uint nCells,
float time);
void calcHash(uint *gridParticlebotHash,
uint *gridParticlebotIndex,
float *pos,
int nCells);
void reorderDataAndFindCellStart(uint *cellStart,
uint *cellEnd,
float *sortedPos,
float *sortedVel,
float *sortedRad,
uint *gridParticlebotHash,
uint *gridParticlebotIndex,
float *oldPos,
float *oldVel,
float *oldRad,
uint nCells,
uint numCells);
void updateRad_light_wave(float *pos,
float* absForce_a,
float* absForce_r,
float *rad,
float *phase,
float time,
float deltaTime,
int* dead,
int nCells);
void curand_setup(curandState *state, int N);
void add_normal_noise(curandState *state,
float *val,
float std,
int N);
void updatePhase(float *pos,
float *phase,
float spacing,
float max_d,
float min_d,
int nCells);
void updateCol(float *rad,
float *col,
int nCells,
float *pos,
float *phase,
int* dead);
void collide(float *newVel,
float* absForce_a,
float* absForce_r,
float *sortedPos,
float *sortedVel,
float *sortedRad,
uint *gridParticlebotIndex,
uint *cellStart,
uint *cellEnd,
uint nCells,
uint numCells,
float deltaTime);
void calcCOG(float *pos,
float *temppos,
float *temppos1,
int nCells,
float time,
int hist_steps,
float hist_int);
void sortParticlebots(uint *dGridParticlebotHash,
uint *dGridParticlebotIndex,
uint nCells);
}