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
|
| Line | |
|---|
| 1 | #include <civlc.cvh>
|
|---|
| 2 | #include "civlc-cuda.cv"
|
|---|
| 3 | #include <stdio.h>
|
|---|
| 4 |
|
|---|
| 5 | $input int N;
|
|---|
| 6 | $input int B;
|
|---|
| 7 | $assume((0 <= N && N <= B));
|
|---|
| 8 |
|
|---|
| 9 | int sum = 0;
|
|---|
| 10 |
|
|---|
| 11 | void _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 |
|
|---|
| 38 | int 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);
|
|---|
| 51 | $assert((sum == expected));
|
|---|
| 52 | cudaStreamDestroy(s);
|
|---|
| 53 | _cudaFinalize();
|
|---|
| 54 | return 0;
|
|---|
| 55 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.