source: CIVL/examples/cuda/stream_test.cvl@ bb03188

main test-branch
Last change on this file since bb03188 was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1.4 KB
RevLine 
[9803bc1]1#include <civlc.cvh>
2#include "civlc-cuda.cv"
[fc22fbf]3#include <stdio.h>
4
5$input int N;
6$input int B;
[3ff27cf]7$assume((0 <= N && N <= B));
[fc22fbf]8
9int sum = 0;
10
11void _kernel_k(dim3 gridDim, dim3 blockDim, cudaStream_t s, int i) {
12
13 void _kernel (_kernelInstance *this, cudaEvent_t e) {
14
15 _waitInQueue(this, e);
16
17 void _block (uint3 blockIdx) {
18 int _numThreads = blockDim.x * blockDim.y * blockDim.z;
19 $gbarrier _block_barrier = $gbarrier_create($here, _numThreads);
20
21 void _thread (uint3 threadIdx) {
22
23 int _tid = _index(blockDim, threadIdx);
24 $barrier _b = $barrier_create($here, _block_barrier, _tid);
25 sum = i - sum;
26 $barrier_destroy(_b);
27 }
28 _runProcs(blockDim, _thread);
29 $gbarrier_destroy(_block_barrier);
30 }
31 _runProcs(gridDim, _block);
32 _kernelFinish(this);
33 }
34
35 _enqueueKernel(s, _kernel);
36}
37
38int main ( void ) {
39 _cudaInit();
40 dim3 gd = _toDim3(1);
41 dim3 bd = _toDim3(1);
42 cudaStream_t s;
43 cudaStreamCreate(&s);
44 int expected = 0;
45 for (int i = 0; i < N; i++) {
46 _kernel_k(gd, bd, 0, i);
47 expected = i - expected;
48 }
49 cudaStreamSynchronize(0);
50 printf("sum = %d, expected = %d\n", sum, expected);
[3ff27cf]51 $assert((sum == expected));
[fc22fbf]52 cudaStreamDestroy(s);
53 _cudaFinalize();
54 return 0;
55}
Note: See TracBrowser for help on using the repository browser.