-
Notifications
You must be signed in to change notification settings - Fork 0
/
cuDynamicArray.cu
38 lines (30 loc) · 1.33 KB
/
cuDynamicArray.cu
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
/*-------------------------------------------------------------------------.
| Dynamic Array For Parse Tree Stored as History of Actions Taken |
`-------------------------------------------------------------------------*/
__global__ void initializeActionsTaken ( dynamicArray *newArray )
{
actionsTaken = newArray;
}
__global__ void initializeDeviceArray ( dynamicArray mainArray , dynamicArray *destinationArray )
{
superCudaMemcpy( (byte*)destinationArray , (byte*)&mainArray , sizeof(dynamicArray) );
}
__device__ void addElement ( actionHistorySnippet DATA , dynamicArray *destinationArray )
{
((unsigned int*)destinationArray->buffer)[destinationArray->index++] = *((unsigned int*)&DATA);
}
__device__ void addActionTaken ( actionHistorySnippet DATA )
{
((unsigned int*)actionsTaken->buffer)[actionsTaken->index++] = *((unsigned int*)&DATA);
}
void initializeActionsTakenArray( int lInputSize )
{
cudaMalloc( (void**)&lActionsTaken , sizeof( dynamicArray ) );
cudaMalloc( (void**)&(mainArray.buffer) , lInputSize * lInputSize * sizeof(actionHistorySnippet) );
mainArray.upperLimit = lInputSize * lInputSize;
mainArray.index = 0;
initializeDeviceArray<<<1,1>>>( mainArray , lActionsTaken );
cudaThreadSynchronize();
initializeActionsTaken<<<1,1>>>( lActionsTaken );
cudaThreadSynchronize();
}