OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.c/] [omp-loop01.c] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 735 jeremybenn
#include <stdlib.h>
2
#include <stdio.h>
3
#include <string.h>
4
#include <omp.h>
5
 
6
#define MAX     1000
7
 
8
void main1()
9
{
10
  int i, N1, N2, step;
11
  int a[MAX], b[MAX];
12
 
13
  N1 = rand () % 13;
14
  N2 = rand () % (MAX - 51) + 50;
15
  step = rand () % 7 + 1;
16
 
17
  printf ("N1 = %d\nN2 = %d\nstep = %d\n", N1, N2, step);
18
 
19
  for (i = N1; i <= N2; i += step)
20
    a[i] = 42+ i;
21
 
22
  /* COUNTING UP (<).  Fill in array 'b' in parallel.  */
23
  memset (b, 0, sizeof b);
24
#pragma omp parallel shared(a,b,N1,N2,step) private(i)
25
  {
26
#pragma omp for
27
    for (i = N1; i < N2; i += step)
28
      b[i] = a[i];
29
  }
30
 
31
  /* COUNTING UP (<).  Check that all the cells were filled in properly.  */
32
  for (i = N1; i < N2; i += step)
33
    if (a[i] != b[i])
34
      abort ();
35
 
36
  printf ("for (i = %d; i < %d; i += %d) [OK]\n", N1, N2, step);
37
 
38
  /* COUNTING UP (<=).  Fill in array 'b' in parallel.  */
39
  memset (b, 0, sizeof b);
40
#pragma omp parallel shared(a,b,N1,N2,step) private(i)
41
  {
42
#pragma omp for
43
    for (i = N1; i <= N2; i += step)
44
      b[i] = a[i];
45
  }
46
 
47
  /* COUNTING UP (<=).  Check that all the cells were filled in properly.  */
48
  for (i = N1; i <= N2; i += step)
49
    if (a[i] != b[i])
50
      abort ();
51
 
52
  printf ("for (i = %d; i <= %d; i += %d) [OK]\n", N1, N2, step);
53
 
54
  /* COUNTING DOWN (>).  Fill in array 'b' in parallel.  */
55
  memset (b, 0, sizeof b);
56
#pragma omp parallel shared(a,b,N1,N2,step) private(i)
57
  {
58
#pragma omp for
59
    for (i = N2; i > N1; i -= step)
60
      b[i] = a[i];
61
  }
62
 
63
  /* COUNTING DOWN (>).  Check that all the cells were filled in properly.  */
64
  for (i = N2; i > N1; i -= step)
65
    if (a[i] != b[i])
66
      abort ();
67
 
68
  printf ("for (i = %d; i > %d; i -= %d) [OK]\n", N2, N1, step);
69
 
70
  /* COUNTING DOWN (>=).  Fill in array 'b' in parallel.  */
71
  memset (b, 0, sizeof b);
72
#pragma omp parallel shared(a,b,N1,N2,step) private(i)
73
  {
74
#pragma omp for
75
    for (i = N2; i >= N1; i -= step)
76
      b[i] = a[i];
77
  }
78
 
79
  /* COUNTING DOWN (>=).  Check that all the cells were filled in properly.  */
80
  for (i = N2; i >= N1; i -= step)
81
    if (a[i] != b[i])
82
      abort ();
83
 
84
  printf ("for (i = %d; i >= %d; i -= %d) [OK]\n", N2, N1, step);
85
}
86
 
87
int
88
main ()
89
{
90
  int i;
91
 
92
  srand (0);
93
  for (i = 0; i < 10; ++i)
94
    main1();
95
  return 0;
96
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.