source: CIVL/examples/cuda/barrier.cvh@ f2ab81f

1.23 2.0 main test-branch
Last change on this file since f2ab81f was 6cc497b, checked in by Manchun Zheng <zmanchun@…>, 12 years ago

updated examples

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

  • Property mode set to 100644
File size: 584 bytes
Line 
1int num_in_barrier =0;
2int barrier_size = 0;
3
4void barrier_init(int* in_barrier, int size) {
5 barrier_size = size;
6 for (int i=0; i<size; i++) in_barrier[i] = 0;
7}
8
9void barrier(int* in_barrier, int tid) {
10 $atomic {
11 in_barrier[tid] = 1; // I am in the barrier
12 num_in_barrier++; // increment number in barrier
13 if (num_in_barrier == barrier_size) { // I am last to enter
14 for (int i=0; i<barrier_size; i++) in_barrier[i] = 0; // release all
15 num_in_barrier = 0; // now none are in barrier
16 }
17 }
18 $when (in_barrier[tid] == 0); // wait till I am released
19}
Note: See TracBrowser for help on using the repository browser.