File: test.upc

package info (click to toggle)
source-highlight 3.1.8-1.2~deb9u1
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 10,224 kB
  • sloc: sh: 11,709; cpp: 10,226; ansic: 9,521; makefile: 1,902; lex: 1,200; yacc: 1,021; php: 213; perl: 211; awk: 98; erlang: 94; lisp: 90; java: 75; ruby: 69; python: 61; asm: 43; ada: 36; ml: 29; haskell: 27; xml: 23; cs: 11; sql: 8; tcl: 7; sed: 4
file content (43 lines) | stat: -rw-r--r-- 822 bytes parent folder | download | duplicates (7)
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
39
40
41
42
43
relaxed shared [5] int *shared shared_ptr_to_shared;
strict shared [5] int y[100 * THREADS];
strict shared [5] int z[100 * THREADS];
int x[100];
shared int shared_int;
int local_int = 99;
shared int *ptr_to_shared_int;

int
main ()
{
  int i;
  size_t size;
  upc_lock_t *lock;
  lock = upc_global_lock_alloc ();
  upc_barrier 1;
  upc_forall (i = 0; i < 100 * THREADS; ++i; &z[i])
    {
      int j;
      for (j = 0; j < 100; ++j)
	{
#pragma upc strict
	  if (x[i] < x[j])
	    {
	      upc_lock (lock);
	      z[i][j] = x[i] * y[j];
	      upc_unlock (lock);
	    }
	  else
	    {
	      upc_fence;
	      z[i][j] = -x[i] * y[j];
	      upc_fence;
	    }
	}
      upc_notify 10;
      upc_wait 10;
    }
  size = upc_blocksizeof (z);
  size = upc_localsizeof (z);
  size = upc_elemsizeof (z);
  upc_lock_free (lock);
}