bones-compiler 1.1.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. checksums.yaml +15 -0
  2. data/CHANGELOG +37 -0
  3. data/LICENSE +1 -1
  4. data/README.rdoc +95 -70
  5. data/Rakefile +78 -3
  6. data/VERSION +1 -1
  7. data/bin/adarwin +17 -0
  8. data/examples/benchmarks/PolyBench/2mm.c +104 -0
  9. data/examples/benchmarks/{3mm.c → PolyBench/3mm.c} +5 -2
  10. data/examples/benchmarks/{adi.c → PolyBench/adi.c} +6 -3
  11. data/examples/benchmarks/{atax.c → PolyBench/atax.c} +5 -2
  12. data/examples/benchmarks/{bicg.c → PolyBench/bicg.c} +5 -2
  13. data/examples/benchmarks/{cholesky.c → PolyBench/cholesky.c} +3 -0
  14. data/examples/benchmarks/{common.h → PolyBench/common.h} +2 -2
  15. data/examples/benchmarks/{correlation.c → PolyBench/correlation.c} +16 -7
  16. data/examples/benchmarks/{covariance.c → PolyBench/covariance.c} +7 -2
  17. data/examples/benchmarks/{doitgen.c → PolyBench/doitgen.c} +5 -2
  18. data/examples/benchmarks/{durbin.c → PolyBench/durbin.c} +3 -0
  19. data/examples/benchmarks/{dynprog.c → PolyBench/dynprog.c} +3 -0
  20. data/examples/benchmarks/{fdtd-2d-apml.c → PolyBench/fdtd-2d-apml.c} +3 -0
  21. data/examples/benchmarks/{fdtd-2d.c → PolyBench/fdtd-2d.c} +5 -2
  22. data/examples/benchmarks/{floyd-warshall.c → PolyBench/floyd-warshall.c} +3 -0
  23. data/examples/benchmarks/{gemm.c → PolyBench/gemm.c} +5 -2
  24. data/examples/benchmarks/{gemver.c → PolyBench/gemver.c} +5 -2
  25. data/examples/benchmarks/{gesummv.c → PolyBench/gesummv.c} +5 -2
  26. data/examples/benchmarks/{gramschmidt.c → PolyBench/gramschmidt.c} +3 -0
  27. data/examples/benchmarks/{jacobi-1d-imper.c → PolyBench/jacobi-1d-imper.c} +10 -2
  28. data/examples/benchmarks/{jacobi-2d-imper.c → PolyBench/jacobi-2d-imper.c} +8 -3
  29. data/examples/benchmarks/{lu.c → PolyBench/lu.c} +3 -0
  30. data/examples/benchmarks/{ludcmp.c → PolyBench/ludcmp.c} +3 -0
  31. data/examples/benchmarks/{mvt.c → PolyBench/mvt.c} +6 -2
  32. data/examples/benchmarks/{reg_detect.c → PolyBench/reg_detect.c} +3 -0
  33. data/examples/benchmarks/{seidel-2d.c → PolyBench/seidel-2d.c} +3 -0
  34. data/examples/benchmarks/{symm.c → PolyBench/symm.c} +3 -0
  35. data/examples/benchmarks/{syr2k.c → PolyBench/syr2k.c} +5 -2
  36. data/examples/benchmarks/{syrk.c → PolyBench/syrk.c} +7 -4
  37. data/examples/benchmarks/{trisolv.c → PolyBench/trisolv.c} +3 -0
  38. data/examples/benchmarks/{trmm.c → PolyBench/trmm.c} +3 -0
  39. data/examples/benchmarks/Rodinia/cfd.c +180 -0
  40. data/examples/benchmarks/Rodinia/hotspot.c +228 -0
  41. data/examples/benchmarks/Rodinia/kmeans.c +164 -0
  42. data/examples/benchmarks/Rodinia/srad.c +188 -0
  43. data/examples/benchmarks/other/common.h +0 -0
  44. data/examples/benchmarks/other/dct.c +58 -0
  45. data/examples/benchmarks/other/mm.c +50 -0
  46. data/examples/benchmarks/{saxpy.c → other/saxpy.c} +11 -7
  47. data/examples/chunk/{example1.c → example01.c} +0 -0
  48. data/examples/chunk/{example2.c → example02.c} +0 -0
  49. data/examples/chunk/{example3.c → example03.c} +0 -0
  50. data/examples/chunk/{example4.c → example04.c} +0 -0
  51. data/examples/chunk/{example5.c → example05.c} +0 -0
  52. data/examples/chunk/example06.c +45 -0
  53. data/examples/chunk/example07.c +49 -0
  54. data/examples/dependences/example01.c +42 -0
  55. data/examples/dependences/example02.c +40 -0
  56. data/examples/dependences/example03.c +43 -0
  57. data/examples/dependences/example04.c +44 -0
  58. data/examples/dependences/example05.c +42 -0
  59. data/examples/element/{example1.c → example01.c} +0 -0
  60. data/examples/element/{example2.c → example02.c} +2 -2
  61. data/examples/element/{example3.c → example03.c} +0 -0
  62. data/examples/element/{example4.c → example04.c} +0 -0
  63. data/examples/element/{example5.c → example05.c} +0 -0
  64. data/examples/element/{example6.c → example06.c} +0 -0
  65. data/examples/element/{example7.c → example07.c} +0 -0
  66. data/examples/element/{example8.c → example08.c} +0 -0
  67. data/examples/element/{example9.c → example09.c} +0 -0
  68. data/examples/element/example13.c +73 -0
  69. data/examples/fusion/example01.c +68 -0
  70. data/examples/fusion/example02.c +73 -0
  71. data/examples/fusion/example03.c +72 -0
  72. data/examples/fusion/example04.c +61 -0
  73. data/examples/fusion/example05.c +55 -0
  74. data/examples/neighbourhood/{example1.c → example01.c} +0 -0
  75. data/examples/neighbourhood/{example2.c → example02.c} +0 -0
  76. data/examples/neighbourhood/{example3.c → example03.c} +0 -0
  77. data/examples/neighbourhood/{example4.c → example04.c} +0 -0
  78. data/examples/neighbourhood/example05.c +44 -0
  79. data/examples/shared/{example1.c → example01.c} +0 -0
  80. data/examples/shared/{example2.c → example02.c} +0 -0
  81. data/examples/shared/{example3.c → example03.c} +0 -0
  82. data/examples/shared/{example4.c → example04.c} +0 -0
  83. data/examples/shared/{example5.c → example05.c} +0 -0
  84. data/lib/adarwin.rb +62 -0
  85. data/lib/adarwin/dependences.rb +268 -0
  86. data/lib/adarwin/engine.rb +277 -0
  87. data/lib/adarwin/fusion.rb +174 -0
  88. data/lib/adarwin/interval.rb +57 -0
  89. data/lib/adarwin/memorycopies.rb +153 -0
  90. data/lib/adarwin/nest.rb +225 -0
  91. data/lib/adarwin/preprocessor.rb +76 -0
  92. data/lib/adarwin/reference.rb +261 -0
  93. data/lib/bones.rb +4 -55
  94. data/lib/bones/algorithm.rb +77 -40
  95. data/lib/bones/copy.rb +26 -0
  96. data/lib/bones/engine.rb +147 -31
  97. data/lib/bones/preprocessor.rb +92 -12
  98. data/lib/bones/species.rb +4 -3
  99. data/lib/bones/structure.rb +14 -4
  100. data/lib/castaddon.rb +11 -6
  101. data/lib/castaddon/node_adarwin.rb +245 -0
  102. data/lib/castaddon/node_bones.rb +316 -0
  103. data/lib/castaddon/node_common.rb +289 -0
  104. data/lib/castaddon/transformations.rb +236 -0
  105. data/lib/common.rb +216 -0
  106. data/skeletons/CPU-C/common/header.c +3 -0
  107. data/skeletons/CPU-C/common/mem_global.c +0 -0
  108. data/skeletons/CPU-C/common/timer_2_start.c +11 -13
  109. data/skeletons/CPU-C/common/timer_2_stop.c +1 -1
  110. data/skeletons/CPU-C/common/timer_globals.c +29 -0
  111. data/skeletons/CPU-OPENCL-INTEL/common/globals.c +1 -1
  112. data/skeletons/CPU-OPENCL-INTEL/common/header.c +3 -0
  113. data/skeletons/CPU-OPENCL-INTEL/common/mem_copy_D2H.c +7 -2
  114. data/skeletons/CPU-OPENCL-INTEL/common/mem_copy_H2D.c +4 -2
  115. data/skeletons/CPU-OPENCL-INTEL/common/mem_global.c +0 -0
  116. data/skeletons/CPU-OPENCL-INTEL/common/mem_prologue.c +6 -3
  117. data/skeletons/CPU-OPENCL-INTEL/common/timer_2_stop.c +1 -1
  118. data/skeletons/CPU-OPENCL-INTEL/common/timer_globals.c +24 -0
  119. data/skeletons/CPU-OPENMP/common/globals.c +1 -0
  120. data/skeletons/CPU-OPENMP/common/header.c +3 -0
  121. data/skeletons/CPU-OPENMP/common/mem_global.c +0 -0
  122. data/skeletons/CPU-OPENMP/common/timer_1_start.c +0 -12
  123. data/skeletons/CPU-OPENMP/common/timer_2_stop.c +1 -1
  124. data/skeletons/CPU-OPENMP/common/timer_globals.c +33 -0
  125. data/skeletons/GPU-CUDA/common/globals.c +27 -3
  126. data/skeletons/GPU-CUDA/common/header.c +2 -0
  127. data/skeletons/GPU-CUDA/common/mem_async_alloc.c +6 -0
  128. data/skeletons/GPU-CUDA/common/mem_async_copyin.c +6 -0
  129. data/skeletons/GPU-CUDA/common/mem_async_copyout.c +6 -0
  130. data/skeletons/GPU-CUDA/common/mem_async_free.c +6 -0
  131. data/skeletons/GPU-CUDA/common/mem_copy_D2H.c +2 -1
  132. data/skeletons/GPU-CUDA/common/mem_copy_H2D.c +2 -1
  133. data/skeletons/GPU-CUDA/common/mem_global.c +1 -0
  134. data/skeletons/GPU-CUDA/common/mem_prologue.c +1 -2
  135. data/skeletons/GPU-CUDA/common/scheduler.c +86 -0
  136. data/skeletons/GPU-CUDA/common/timer_2_start.c +2 -4
  137. data/skeletons/GPU-CUDA/common/timer_2_stop.c +3 -5
  138. data/skeletons/GPU-CUDA/common/timer_globals.c +26 -0
  139. data/skeletons/GPU-CUDA/kernel/2xN-N-chunk-1-N-to-D-element.kernel.cu +5 -7
  140. data/skeletons/GPU-CUDA/kernel/N-N-chunk-1-N-to-D-element.kernel.cu +4 -6
  141. data/skeletons/GPU-CUDA/kernel/default.host.c +1 -1
  142. data/skeletons/GPU-CUDA/kernel/default.kernel.cu +6 -8
  143. data/skeletons/GPU-CUDA/skeletons.txt +6 -5
  144. data/{examples/benchmarks/2mm.c → test/examples/benchmarks/PolyBench/2mm_species.c} +19 -15
  145. data/test/examples/benchmarks/PolyBench/3mm_species.c +82 -0
  146. data/test/examples/benchmarks/PolyBench/adi_species.c +89 -0
  147. data/test/examples/benchmarks/PolyBench/atax_species.c +69 -0
  148. data/test/examples/benchmarks/PolyBench/bicg_species.c +71 -0
  149. data/test/examples/benchmarks/PolyBench/cholesky_species.c +68 -0
  150. data/test/examples/benchmarks/PolyBench/correlation_species.c +97 -0
  151. data/test/examples/benchmarks/PolyBench/covariance_species.c +78 -0
  152. data/test/examples/benchmarks/PolyBench/doitgen_species.c +67 -0
  153. data/test/examples/benchmarks/PolyBench/durbin_species.c +80 -0
  154. data/test/examples/benchmarks/PolyBench/dynprog_species.c +71 -0
  155. data/test/examples/benchmarks/PolyBench/fdtd-2d-apml_species.c +112 -0
  156. data/test/examples/benchmarks/PolyBench/fdtd-2d_species.c +78 -0
  157. data/test/examples/benchmarks/PolyBench/floyd-warshall_species.c +54 -0
  158. data/test/examples/benchmarks/PolyBench/gemm_species.c +73 -0
  159. data/test/examples/benchmarks/PolyBench/gemver_species.c +93 -0
  160. data/test/examples/benchmarks/PolyBench/gesummv_species.c +68 -0
  161. data/test/examples/benchmarks/PolyBench/gramschmidt_species.c +78 -0
  162. data/test/examples/benchmarks/PolyBench/jacobi-1d-imper_species.c +59 -0
  163. data/test/examples/benchmarks/PolyBench/jacobi-2d-imper_species.c +65 -0
  164. data/test/examples/benchmarks/PolyBench/lu_species.c +57 -0
  165. data/test/examples/benchmarks/PolyBench/ludcmp_species.c +89 -0
  166. data/test/examples/benchmarks/PolyBench/mvt_species.c +69 -0
  167. data/test/examples/benchmarks/PolyBench/reg_detect_species.c +86 -0
  168. data/test/examples/benchmarks/PolyBench/seidel-2d_species.c +53 -0
  169. data/test/examples/benchmarks/PolyBench/symm_species.c +74 -0
  170. data/test/examples/benchmarks/PolyBench/syr2k_species.c +69 -0
  171. data/test/examples/benchmarks/PolyBench/syrk_species.c +66 -0
  172. data/test/examples/benchmarks/PolyBench/trisolv_species.c +61 -0
  173. data/test/examples/benchmarks/PolyBench/trmm_species.c +61 -0
  174. data/test/examples/chunk/example01_species.c +58 -0
  175. data/test/examples/chunk/example02_species.c +48 -0
  176. data/test/examples/chunk/example03_species.c +63 -0
  177. data/test/examples/chunk/example04_species.c +58 -0
  178. data/test/examples/chunk/example05_species.c +56 -0
  179. data/test/examples/chunk/example06_species.c +49 -0
  180. data/test/examples/chunk/example07_species.c +53 -0
  181. data/test/examples/dependences/example01_species.c +46 -0
  182. data/test/examples/dependences/example02_species.c +44 -0
  183. data/test/examples/dependences/example03_species.c +47 -0
  184. data/test/examples/dependences/example04_species.c +48 -0
  185. data/test/examples/dependences/example05_species.c +46 -0
  186. data/test/examples/element/example01_species.c +50 -0
  187. data/test/examples/element/example02_species.c +50 -0
  188. data/test/examples/element/example03_species.c +62 -0
  189. data/test/examples/element/example04_species.c +53 -0
  190. data/test/examples/element/example05_species.c +59 -0
  191. data/test/examples/element/example06_species.c +50 -0
  192. data/test/examples/element/example07_species.c +58 -0
  193. data/test/examples/element/example08_species.c +49 -0
  194. data/test/examples/element/example09_species.c +52 -0
  195. data/test/examples/element/example10_species.c +54 -0
  196. data/test/examples/element/example11_species.c +51 -0
  197. data/test/examples/element/example12_species.c +60 -0
  198. data/test/examples/element/example13_species.c +77 -0
  199. data/test/examples/neighbourhood/example01_species.c +57 -0
  200. data/test/examples/neighbourhood/example02_species.c +56 -0
  201. data/test/examples/neighbourhood/example03_species.c +83 -0
  202. data/test/examples/neighbourhood/example04_species.c +55 -0
  203. data/test/examples/neighbourhood/example05_species.c +48 -0
  204. data/test/examples/shared/example01_species.c +49 -0
  205. data/test/examples/shared/example02_species.c +55 -0
  206. data/test/examples/shared/example03_species.c +59 -0
  207. data/test/examples/shared/example04_species.c +56 -0
  208. data/test/examples/shared/example05_species.c +52 -0
  209. metadata +193 -73
  210. data/examples/benchmarks/overview.txt +0 -38
  211. data/lib/castaddon/node.rb +0 -753
@@ -34,12 +34,13 @@ int main(void) {
34
34
  float G[NI][NL];
35
35
 
36
36
  // Set the input data
37
- for (i=0; i<NI; i++) { for (j=0; j<NK; j++) { A[i][j] = ((float) i*j) / NI; } }
37
+ /* for (i=0; i<NI; i++) { for (j=0; j<NK; j++) { A[i][j] = ((float) i*j) / NI; } }
38
38
  for (i=0; i<NK; i++) { for (j=0; j<NJ; j++) { B[i][j] = ((float) i*(j+1)) / NJ; } }
39
39
  for (i=0; i<NL; i++) { for (j=0; j<NJ; j++) { C[i][j] = ((float) i*(j+3)) / NL; } }
40
40
  for (i=0; i<NI; i++) { for (j=0; j<NL; j++) { D[i][j] = ((float) i*(j+2)) / NK; } }
41
-
41
+ */
42
42
  // Perform the computation (G := E*F, with E := A*B and F := C*D)
43
+ #pragma scop
43
44
  #pragma species kernel 0:NI-1,0:NK-1|chunk(0:0,0:NK-1) ^ 0:NK-1,0:NJ-1|chunk(0:NK-1,0:0) -> 0:NI-1,0:NJ-1|element
44
45
  // E := A*B
45
46
  for (i=0; i<NI; i++) {
@@ -73,9 +74,11 @@ int main(void) {
73
74
  }
74
75
  }
75
76
  #pragma species endkernel 3mm-part3
77
+ #pragma endscop
76
78
 
77
79
  // Clean-up and exit the function
78
80
  fflush(stdout);
81
+ G[8][9] = G[8][9];
79
82
  return 0;
80
83
  }
81
84
 
@@ -30,15 +30,16 @@ int main(void) {
30
30
  float B[N][N];
31
31
 
32
32
  // Set the input data
33
- for (i=0; i<N; i++) {
33
+ /* for (i=0; i<N; i++) {
34
34
  for (j=0; j<N; j++) {
35
35
  X[i][j] = ((float) i*(j+1) + 1) / N;
36
36
  A[i][j] = ((float) i*(j+2) + 2) / N;
37
37
  B[i][j] = ((float) i*(j+3) + 3) / N;
38
38
  }
39
39
  }
40
-
40
+ */
41
41
  // Perform the computation
42
+ #pragma scop
42
43
  for (t=0; t<TSTEPS; t++) {
43
44
  for (i1=0; i1<N; i1++) {
44
45
  for (i2=1; i2<N; i2++) {
@@ -46,7 +47,7 @@ int main(void) {
46
47
  B[i1][i2] = B[i1][i2] - A[i1][i2] * A[i1][i2] / B[i1][i2-1];
47
48
  }
48
49
  }
49
- #pragma species kernel 0:N-1,N-1:N-1|element ^ 0:N-1,N-1:N-1|element -> 0:N-1,N-1:N-1|element
50
+ #pragma species kernel 0:N-1,N-1:N-1|element ^ 0:N-1,N-1:N-1|element -> 0:N-1,N-1:N-1|element
50
51
  for (i1=0; i1<N; i1++) {
51
52
  X[i1][N-1] = X[i1][N-1] / B[i1][N-1];
52
53
  }
@@ -73,9 +74,11 @@ int main(void) {
73
74
  }
74
75
  }
75
76
  }
77
+ #pragma endscop
76
78
 
77
79
  // Clean-up and exit the function
78
80
  fflush(stdout);
81
+ X[8][9] = X[8][9];
79
82
  return 0;
80
83
  }
81
84
 
@@ -31,7 +31,7 @@ int main(void) {
31
31
  float tmp[NX];
32
32
 
33
33
  // Set the input data
34
- for (i=0; i<NY; i++) {
34
+ /* for (i=0; i<NY; i++) {
35
35
  x[i] = i*3.14159;
36
36
  }
37
37
  for (i=0; i<NX; i++) {
@@ -39,8 +39,9 @@ int main(void) {
39
39
  A[i][j] = ((float) i*(j+1)) / NX;
40
40
  }
41
41
  }
42
-
42
+ */
43
43
  // Perform the computation (y := A'Ax)
44
+ #pragma scop
44
45
  #pragma species kernel 0:NX-1,0:NY-1|chunk(0:0,0:NY-1) ^ 0:NY-1|full -> 0:NX-1|element
45
46
  for (i=0; i<NX; i++) {
46
47
  tmp[i] = 0;
@@ -57,9 +58,11 @@ int main(void) {
57
58
  }
58
59
  }
59
60
  #pragma species endkernel atax-part2
61
+ #pragma endscop
60
62
 
61
63
  // Clean-up and exit the function
62
64
  fflush(stdout);
65
+ y[9] = y[9];
63
66
  return 0;
64
67
  }
65
68
 
@@ -32,7 +32,7 @@ int main(void) {
32
32
  float s[NY];
33
33
 
34
34
  // Set the input data
35
- for (i=0; i<NY; i++) {
35
+ /* for (i=0; i<NY; i++) {
36
36
  p[i] = i*3.14159;
37
37
  }
38
38
  for (i=0; i<NX; i++) {
@@ -41,8 +41,9 @@ int main(void) {
41
41
  A[i][j] = ((float) i*(j+1)) / NX;
42
42
  }
43
43
  }
44
-
44
+ */
45
45
  // Perform the computation
46
+ #pragma scop
46
47
  #pragma species kernel 0:NX-1|full ^ 0:NX-1,0:NY-1|chunk(0:NX-1,0:0) -> 0:NY-1|element
47
48
  for (j=0; j<NY; j++) {
48
49
  s[j] = 0;
@@ -59,9 +60,11 @@ int main(void) {
59
60
  }
60
61
  }
61
62
  #pragma species endkernel bicg-part2
63
+ #pragma endscop
62
64
 
63
65
  // Clean-up and exit the function
64
66
  fflush(stdout);
67
+ q[9] = q[9];
65
68
  return 0;
66
69
  }
67
70
 
@@ -38,6 +38,7 @@ int main(void) {
38
38
  }
39
39
 
40
40
  // Perform the computation
41
+ #pragma scop
41
42
  for (i=0; i<N; i++) {
42
43
  x[0] = A[i][i];
43
44
  #pragma species kernel i:i,0:i-1|element -> 0:0|shared
@@ -57,8 +58,10 @@ int main(void) {
57
58
  }
58
59
  #pragma species endkernel cholesky-part2
59
60
  }
61
+ #pragma endscop
60
62
 
61
63
  // Clean-up and exit the function
62
64
  fflush(stdout);
65
+ A[8][9] = A[8][9];
63
66
  return 0;
64
67
  }
@@ -25,9 +25,9 @@
25
25
 
26
26
  // Select a dataset size
27
27
  //#define MINI_DATASET
28
- #define SMALL_DATASET
28
+ //#define SMALL_DATASET
29
29
  //#define STANDARD_DATASET
30
- //#define LARGE_DATASET
30
+ #define LARGE_DATASET
31
31
  //#define EXTRALARGE_DATASET
32
32
 
33
33
  // Defines used per benchmark:
@@ -15,7 +15,7 @@
15
15
  // == File information
16
16
  // Filename...........benchmark/correlation.c
17
17
  // Author.............Cedric Nugteren
18
- // Last modified on...26-Jun-2012
18
+ // Last modified on...07-Feb-2013
19
19
  //
20
20
 
21
21
  #include "common.h"
@@ -36,13 +36,15 @@ int main(void) {
36
36
  float eps = 0.1;
37
37
 
38
38
  // Set the input data
39
- for (i=0; i<N; i++) {
39
+ /* for (i=0; i<N; i++) {
40
40
  for (j=0; j<M; j++) {
41
41
  data[i][j] = ((float) i*j) / M;
42
42
  }
43
43
  }
44
-
44
+ */
45
45
  // Perform the computation
46
+ #pragma scop
47
+
46
48
  // Determine the mean of the column vectors of the input data matrix
47
49
  #pragma species kernel 0:N-1,0:M-1|chunk(0:N-1,0:0) -> 0:M-1|element
48
50
  for (j=0; j<M; j++) {
@@ -53,8 +55,9 @@ int main(void) {
53
55
  mean[j] /= float_n;
54
56
  }
55
57
  #pragma species endkernel correlation-part1
56
- #pragma species kernel 0:M-1|element ^ 0:N-1,0:M-1|chunk(0:N-1,0:0) -> 0:M-1|element
58
+
57
59
  // Determine the standard deviations of the column vectors of the input data matrix
60
+ #pragma species kernel 0:M-1|element ^ 0:N-1,0:M-1|chunk(0:N-1,0:0) -> 0:M-1|element
58
61
  for (j=0; j<M; j++) {
59
62
  stddev[j] = 0.0;
60
63
  meanj = mean[j];
@@ -66,8 +69,9 @@ int main(void) {
66
69
  stddev[j] = stddev[j] <= eps ? 1.0 : stddev[j];
67
70
  }
68
71
  #pragma species endkernel correlation-part2
69
- #pragma species kernel 0:N-1,0:M-1|element ^ 0:M-1|element ^ 0:M-1|element -> 0:N-1,0:M-1|element
72
+
70
73
  // Center and reduce the column vectors
74
+ #pragma species kernel 0:N-1,0:M-1|element ^ 0:M-1|element ^ 0:M-1|element -> 0:N-1,0:M-1|element
71
75
  for (i=0; i<N; i++) {
72
76
  for (j=0; j<M; j++) {
73
77
  data[i][j] -= mean[j];
@@ -75,10 +79,14 @@ int main(void) {
75
79
  }
76
80
  }
77
81
  #pragma species endkernel correlation-part3
82
+
83
+ // End of the computation
84
+ #pragma endscop
85
+
78
86
  // Calculate the MxM correlation matrix
79
87
  for (j1=0; j1<M-1; j1++) {
80
88
  symmat[j1][j1] = 1.0;
81
- #pragma species kernel 0:N-1,j1:j1|full ^ 0:N-1,j1+1:M-1|chunk(0:N-1,0:0) -> j1+1:M-1,j1:j1|element ^ j1:j1,j1+1:M-1|element
89
+ //#pragma species kernel 0:N-1,j1:j1|full ^ 0:N-1,j1+1:M-1|chunk(0:N-1,0:0) -> j1+1:M-1,j1:j1|element ^ j1:j1,j1+1:M-1|element
82
90
  for (j2=j1+1; j2<M; j2++) {
83
91
  symmat[j1][j2] = 0.0;
84
92
  for (i = 0; i<N; i++) {
@@ -86,12 +94,13 @@ int main(void) {
86
94
  }
87
95
  symmat[j2][j1] = symmat[j1][j2];
88
96
  }
89
- #pragma species endkernel correlation-part4
97
+ //#pragma species endkernel correlation-part4
90
98
  }
91
99
  symmat[M-1][M-1] = 1.0;
92
100
 
93
101
  // Clean-up and exit the function
94
102
  fflush(stdout);
103
+ symmat[8][9] = symmat[8][9];
95
104
  return 0;
96
105
  }
97
106
 
@@ -33,13 +33,14 @@ int main(void) {
33
33
  float float_n = 1.2;
34
34
 
35
35
  // Set the input data
36
- for (i=0; i<N; i++) {
36
+ /* for (i=0; i<N; i++) {
37
37
  for (j=0; j<M; j++) {
38
38
  data[i][j] = ((float) i*j) / M;
39
39
  }
40
40
  }
41
-
41
+ */
42
42
  // Perform the computation
43
+ #pragma scop
43
44
  #pragma species kernel 0:N-1,0:M-1|chunk(0:N-1,0:0) -> 0:M-1|element
44
45
  // Determine the mean of the column vectors of the input data matrix
45
46
  for (j=0; j<M; j++) {
@@ -58,6 +59,9 @@ int main(void) {
58
59
  }
59
60
  }
60
61
  #pragma species endkernel covariance-part2
62
+
63
+ #pragma endscop
64
+
61
65
  // Calculate the MxM covariance matrix
62
66
  for (j1=0; j1<M; j1++) {
63
67
  #pragma species kernel 0:N-1,j1:j1|full ^ 0:N-1,j1:M-1|chunk(0:N-1,0:0) -> j1:M-1,j1:j1|element ^ j1:j1,j1:M-1|element
@@ -73,5 +77,6 @@ int main(void) {
73
77
 
74
78
  // Clean-up and exit the function
75
79
  fflush(stdout);
80
+ symmat[8][9] = symmat[8][9];
76
81
  return 0;
77
82
  }
@@ -30,10 +30,11 @@ int main(void) {
30
30
  float C4[NP][NP];
31
31
 
32
32
  // Set the input data
33
- for (i=0; i<NR; i++) { for (j=0; j<NQ; j++) { for (k=0; k<NP; k++) { A[i][j][k] = ((float) i*j + k) / NP; } } }
33
+ /* for (i=0; i<NR; i++) { for (j=0; j<NQ; j++) { for (k=0; k<NP; k++) { A[i][j][k] = ((float) i*j + k) / NP; } } }
34
34
  for (i=0; i<NP; i++) { for (j=0; j<NP; j++) { C4[i][j] = ((float) i*j) / NP; } }
35
-
35
+ */
36
36
  // Perform the computation
37
+ #pragma scop
37
38
  #pragma species kernel 0:NR-1,0:NQ-1,0:NP-1|chunk(0:0,0:0,0:NP-1) ^ 0:NP-1,0:NP-1|chunk(0:NP-1,0:0) -> 0:NR-1,0:NQ-1,0:NP-1|element
38
39
  for (r=0; r<NR; r++) {
39
40
  for (q=0; q<NQ; q++) {
@@ -55,9 +56,11 @@ int main(void) {
55
56
  }
56
57
  }
57
58
  #pragma species endkernel doitgen-part2
59
+ #pragma endscop
58
60
 
59
61
  // Clean-up and exit the function
60
62
  fflush(stdout);
63
+ A[8][9][3] = A[8][9][3];
61
64
  return 0;
62
65
  }
63
66
 
@@ -45,6 +45,7 @@ int main(void) {
45
45
  }
46
46
 
47
47
  // Perform the computation
48
+ #pragma scop
48
49
  y[0][0] = r[0];
49
50
  beta[0] = 1;
50
51
  alpha[0] = r[0];
@@ -68,9 +69,11 @@ int main(void) {
68
69
  out[i] = y[i][NX-1];
69
70
  }
70
71
  #pragma species endkernel durbin-part2
72
+ #pragma endscop
71
73
 
72
74
  // Clean-up and exit the function
73
75
  fflush(stdout);
76
+ out[9] = out[9];
74
77
  return 0;
75
78
  }
76
79
 
@@ -40,6 +40,7 @@ int main(void) {
40
40
  }
41
41
 
42
42
  // Perform the computation
43
+ #pragma scop
43
44
  for (iter=0; iter<ITER; iter++) {
44
45
  #pragma species kernel 0:0|void -> 0:LENGTH-1,0:LENGTH-1|element
45
46
  for (i=0; i<=LENGTH-1; i++) {
@@ -59,9 +60,11 @@ int main(void) {
59
60
  }
60
61
  out += c[0][LENGTH-1];
61
62
  }
63
+ #pragma endscop
62
64
 
63
65
  // Clean-up and exit the function
64
66
  fflush(stdout);
67
+ c[8][9] = c[8][9];
65
68
  return 0;
66
69
  }
67
70
 
@@ -72,6 +72,7 @@ int main(void) {
72
72
  }
73
73
 
74
74
  // Perform the computation
75
+ #pragma scop
75
76
  for (iz=0; iz<CZ; iz++) {
76
77
  for (iy=0; iy<CYM; iy++) {
77
78
  czm_iz = czm[iz];
@@ -106,9 +107,11 @@ int main(void) {
106
107
  Bza[iz][CYM][CXM] = tmp;
107
108
  }
108
109
  }
110
+ #pragma endscop
109
111
 
110
112
  // Clean-up and exit the function
111
113
  fflush(stdout);
114
+ Hz[8][9][3] = Hz[8][9][3];
112
115
  return 0;
113
116
  }
114
117
 
@@ -30,15 +30,16 @@ int main(void) {
30
30
  float hz[NI][NJ];
31
31
 
32
32
  // Set the input data
33
- for (i=0; i<NI; i++) {
33
+ /* for (i=0; i<NI; i++) {
34
34
  for (j=0; j<NJ; j++) {
35
35
  ex[i][j] = ((float) i*(j+1)) / NI;
36
36
  ey[i][j] = ((float) i*(j+2)) / NJ;
37
37
  hz[i][j] = ((float) i*(j+3)) / NI;
38
38
  }
39
39
  }
40
-
40
+ */
41
41
  // Perform the computation
42
+ #pragma scop
42
43
  for (t=0; t<TSTEPS; t++) {
43
44
  #pragma species kernel 0:0|void -> 0:0,0:NJ-1|element
44
45
  for (j=0; j<NJ; j++) {
@@ -67,8 +68,10 @@ int main(void) {
67
68
  }
68
69
  #pragma species endkernel fdtd-2d-part4
69
70
  }
71
+ #pragma endscop
70
72
 
71
73
  // Clean-up and exit the function
72
74
  fflush(stdout);
75
+ hz[8][9] = hz[8][9];
73
76
  return 0;
74
77
  }
@@ -35,6 +35,7 @@ int main(void) {
35
35
  }
36
36
 
37
37
  // Perform the computation
38
+ #pragma scop
38
39
  for (k=0; k<N; k++) {
39
40
  for (i=0; i<N; i++) {
40
41
  for (j=0; j<N; j++) {
@@ -42,9 +43,11 @@ int main(void) {
42
43
  }
43
44
  }
44
45
  }
46
+ #pragma endscop
45
47
 
46
48
  // Clean-up and exit the function
47
49
  fflush(stdout);
50
+ path[8][9] = path[8][9];
48
51
  return 0;
49
52
  }
50
53
 
@@ -34,7 +34,7 @@ int main(void) {
34
34
  int beta = 2123;
35
35
 
36
36
  // Set the input data
37
- for (i=0; i<NI; i++) {
37
+ /* for (i=0; i<NI; i++) {
38
38
  for (j=0; j<NK; j++) {
39
39
  A[i][j] = ((float) i*j) / NI;
40
40
  }
@@ -49,8 +49,9 @@ int main(void) {
49
49
  C[i][j] = ((float) i*j) / NI;
50
50
  }
51
51
  }
52
-
52
+ */
53
53
  // Perform the computation (C := alpha*A*B + beta*C)
54
+ #pragma scop
54
55
  #pragma species kernel 0:NI-1,0:NJ-1|element ^ 0:NI-1,0:NK-1|chunk(0:0,0:NK-1) ^ 0:NK-1,0:NJ-1|chunk(0:NK-1,0:0) -> 0:NI-1,0:NJ-1|element
55
56
  for (i=0; i<NI; i++) {
56
57
  for (j=0; j<NJ; j++) {
@@ -61,9 +62,11 @@ int main(void) {
61
62
  }
62
63
  }
63
64
  #pragma species endkernel gemm
65
+ #pragma endscop
64
66
 
65
67
  // Clean-up and exit the function
66
68
  fflush(stdout);
69
+ C[8][9] = C[8][9];
67
70
  return 0;
68
71
  }
69
72