source: CIVL/examples/adder.cvl@ 73f1e27

1.23 2.0 main test-branch
Last change on this file since 73f1e27 was 5b49b89, checked in by Tim Zirkel <zirkeltk@…>, 13 years ago

Updated version of adder example

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

  • Property mode set to 100644
File size: 603 bytes
RevLine 
[844ebd8]1\input double a[3];
2
3double adderSeq(int n) {
4 double s = 0.0;
5
6 for (int i = 0; i < n; i++) {
7 s += a[i];
8 }
9 return s;
10}
11
12double adderPar(int m) {
13 double s = 0.0;
14 int mutex = 0;
15 \proc workers[m];
[5b49b89]16
[844ebd8]17 void worker(int i) {
[5b49b89]18 double t;
19
[844ebd8]20 \when (mutex == 0) mutex = 1;
[5b49b89]21 t = s;
22 t += a[i];
23 s = t;
[844ebd8]24 mutex = 0;
25 }
26
27 for (int j = 0; j < m; j++) {
[5b49b89]28 workers[j] = \spawn worker(j);
29 }
30 for (int k = 0; k < m; k++) {
31 \wait workers[k];
[844ebd8]32 }
33 return s;
34}
35
36void main() {
37 double seq;
38 double par;
39
40 seq = adderSeq(3);
41 par = adderPar(3);
42 \assert seq == par;
43}
Note: See TracBrowser for help on using the repository browser.