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
@@ -0,0 +1,62 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example3.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #define N1 2//8
18
+ #define N2 4//16
19
+ #define N3 8//32
20
+ #define N4 16//64
21
+
22
+ // This is 'example3', demonstrating a 4D array and defines for array sizes
23
+ int main(void) {
24
+ int i,j,k,l;
25
+
26
+ // Declare input/output arrays
27
+ int A[N1][N2][N3][N4];
28
+ int B[N1][N2][N3][N4];
29
+
30
+ // Set the input data
31
+ for(i=0;i<N1;i++) {
32
+ for(j=0;j<N2;j++) {
33
+ for(k=0;k<N3;k++) {
34
+ for(l=0;l<N4;l++) {
35
+ A[i][j][k][l] = i*j+k-l;
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ // Perform the computation
42
+ #pragma scop
43
+ {
44
+ #pragma species kernel A[0:N1-1,0:N2-1,0:N3-1,0:N4-1]|element -> B[0:N1-1,0:N2-1,0:N3-1,0:N4-1]|element
45
+ for (i = 0; i < N1; i++) {
46
+ for (j = 0; j < N2; j++) {
47
+ for (k = 0; k < N3; k++) {
48
+ for (l = 0; l < N4; l++) {
49
+ B[i][j][k][l] = 3 * A[i][j][k][l] + 6;
50
+ }
51
+ }
52
+ }
53
+ }
54
+ #pragma species endkernel example03_k1
55
+ }
56
+ #pragma endscop
57
+
58
+ // Clean-up and exit the function
59
+ fflush(stdout);
60
+ return 0;
61
+ }
62
+
@@ -0,0 +1,53 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example4.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+
18
+ // This is 'example4', demonstrating two input arrays and an inner-loop as the computational body
19
+ int main(void) {
20
+ int i,l;
21
+ float factor = 0;
22
+
23
+ // Declare input/output arrays
24
+ float A[700];
25
+ float B[700];
26
+ float C[700];
27
+
28
+ // Set the input data
29
+ for(i=0;i<700;i++) {
30
+ A[i] = i*2.3;
31
+ B[i] = i+6.0;
32
+ }
33
+
34
+ // Perform the computation
35
+ #pragma scop
36
+ {
37
+ #pragma species kernel A[0:699]|element ^ B[0:699]|element -> C[0:699]|element
38
+ for (i = 0; i < 700; i++) {
39
+ factor = 0.5;
40
+ for (l = 0; l < 3; l++) {
41
+ factor = factor + 0.2 * factor;
42
+ }
43
+ C[i] = factor * A[i] + factor * B[i];
44
+ }
45
+ #pragma species endkernel example04_k1
46
+ }
47
+ #pragma endscop
48
+
49
+ // Clean-up and exit the function
50
+ fflush(stdout);
51
+ return 0;
52
+ }
53
+
@@ -0,0 +1,59 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example5.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #define SIZE 2311
18
+
19
+ // This is 'example5', demonstrating multiple inputs and outputs of different types
20
+ int main(void) {
21
+ int i;
22
+ float result = 0;
23
+
24
+ // Declare input/output arrays
25
+ float in1[SIZE];
26
+ int in2[SIZE];
27
+ char in3[SIZE];
28
+ float out1[SIZE];
29
+ float out2[SIZE];
30
+
31
+ // Set the input data
32
+ for(i=0;i<SIZE;i++) {
33
+ in1[i] = -0.34*i;
34
+ in2[i] = i*3;
35
+ in3[i] = i%100;
36
+ }
37
+
38
+ // Perform the computation
39
+ #pragma scop
40
+ {
41
+ #pragma species kernel in2[0:SIZE-1]|element ^ in1[0:SIZE-1]|element ^ in3[0:SIZE-1]|element -> out1[0:SIZE-1]|element ^ out2[0:SIZE-1]|element
42
+ for (i = 0; i < SIZE; i++) {
43
+ if (in3[i] > 50) {
44
+ result = in2[i] / in1[i];
45
+ } else {
46
+ result = in2[i] * in1[i];
47
+ }
48
+ out1[i] = result;
49
+ out2[i] = in3[i] / 255.0;
50
+ }
51
+ #pragma species endkernel example05_k1
52
+ }
53
+ #pragma endscop
54
+
55
+ // Clean-up and exit the function
56
+ fflush(stdout);
57
+ return 0;
58
+ }
59
+
@@ -0,0 +1,50 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example6.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #include <stdlib.h>
18
+
19
+ // This is 'example6', demonstrating dynamically sized arrays, a dynamically sized kernel, and a classification including variables
20
+ int main(void) {
21
+ int i;
22
+ int N = 2048*2048;
23
+
24
+ // Declare input/output arrays
25
+ int *A = (int *)malloc(N*sizeof(int));
26
+ int *B = (int *)malloc(N*sizeof(int));
27
+
28
+ // Set the input data
29
+ for(i=0;i<N;i++) {
30
+ A[i] = i;
31
+ }
32
+
33
+ // Perform the computation
34
+ #pragma scop
35
+ {
36
+ #pragma species kernel A[0:N-1]|element -> B[0:N-1]|element
37
+ for (i = 0; i < N; i++) {
38
+ B[i] = A[i] + 3;
39
+ }
40
+ #pragma species endkernel example06_k1
41
+ }
42
+ #pragma endscop
43
+
44
+ // Clean-up and exit the function
45
+ free(A);
46
+ free(B);
47
+ fflush(stdout);
48
+ return 0;
49
+ }
50
+
@@ -0,0 +1,58 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example7.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+
15
+ #include <stdio.h>
16
+ #include <stdlib.h>
17
+
18
+ // This is 'example7', demonstrating variable length arrays (C99 VLAs)
19
+ int main(void) {
20
+ int a,b,c;
21
+ int dim_1A = 50;
22
+ int dim_1B = 40;
23
+
24
+ // Declare input/output arrays
25
+ int in1[dim_1A][dim_1B][30];
26
+ int in2[dim_1A][dim_1B][30];
27
+ int out[dim_1A][dim_1B][30];
28
+
29
+ // Set the input data
30
+ for(a=0;a<dim_1A;a++) {
31
+ for(b=0;b<dim_1B;b++) {
32
+ for(c=0;c<30;c++) {
33
+ in1[a][b][c] = a*b+c;
34
+ in2[a][b][c] = -(c/4)+6;
35
+ }
36
+ }
37
+ }
38
+
39
+ // Perform the computation
40
+ #pragma scop
41
+ {
42
+ #pragma species kernel in1[0:dim_1A-1,0:dim_1B-1,0:29]|element ^ in2[0:dim_1A-1,0:dim_1B-1,0:29]|element -> out[0:dim_1A-1,0:dim_1B-1,0:29]|element
43
+ for (a = 0; a < dim_1A; a++) {
44
+ for (b = 0; b < dim_1B; b++) {
45
+ for (c = 0; c < 30; c++) {
46
+ out[a][b][c] = in1[a][b][c] + in2[a][b][c];
47
+ }
48
+ }
49
+ }
50
+ #pragma species endkernel example07_k1
51
+ }
52
+ #pragma endscop
53
+
54
+ // Clean-up and exit the function
55
+ fflush(stdout);
56
+ return 0;
57
+ }
58
+
@@ -0,0 +1,49 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example8.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+
18
+ // This is 'example8', demonstrating a reading and writing from the same array
19
+ int main(void) {
20
+ int i,j;
21
+
22
+ // Declare input/output arrays
23
+ int A[100][16];
24
+
25
+ // Set the input data
26
+ for(i=0;i<100;i++) {
27
+ for(j=0;j<16;j++) {
28
+ A[i][j] = i+j;
29
+ }
30
+ }
31
+
32
+ // Perform the computation
33
+ #pragma scop
34
+ {
35
+ #pragma species kernel A[0:99,0:15]|element -> A[0:99,0:15]|element
36
+ for (i = 0; i < 100; i++) {
37
+ for (j = 0; j < 16; j++) {
38
+ A[i][j] = 2 * A[i][j];
39
+ }
40
+ }
41
+ #pragma species endkernel example08_k1
42
+ }
43
+ #pragma endscop
44
+
45
+ // Clean-up and exit the function
46
+ fflush(stdout);
47
+ return 0;
48
+ }
49
+
@@ -0,0 +1,52 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example9.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #include <stdlib.h>
18
+
19
+ // This is 'example9', demonstrating a for-loop that does not start at zero
20
+ int main(void) {
21
+ int i;
22
+ int result;
23
+ int N = 2048*2048;
24
+
25
+ // Declare input/output arrays
26
+ int *A = (int *)malloc(N*sizeof(int));
27
+ int *B = (int *)malloc(N*sizeof(int));
28
+
29
+ // Set the input data
30
+ for(i=0;i<N;i++) {
31
+ A[i] = i;
32
+ }
33
+
34
+ // Perform the computation
35
+ #pragma scop
36
+ {
37
+ #pragma species kernel A[2:N-1]|element -> B[2:N-1]|element
38
+ for (i = 2; i < N; i++) {
39
+ result = A[i] + 3;
40
+ B[i] = result * 3;
41
+ }
42
+ #pragma species endkernel example09_k1
43
+ }
44
+ #pragma endscop
45
+
46
+ // Clean-up and exit the function
47
+ free(A);
48
+ free(B);
49
+ fflush(stdout);
50
+ return 0;
51
+ }
52
+
@@ -0,0 +1,54 @@
1
+ //
2
+ // This file is part of the Bones source-to-source compiler examples. This C-code
3
+ // example is meant to illustrate the use of Bones. For more information on Bones
4
+ // use the contact information below.
5
+ //
6
+ // == More information on Bones
7
+ // Contact............Cedric Nugteren <c.nugteren@tue.nl>
8
+ // Web address........http://parse.ele.tue.nl/bones/
9
+ //
10
+ // == File information
11
+ // Filename...........element/example10.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #include <stdlib.h>
18
+
19
+ // This is 'example10', demonstrating multiple loops not starting at 0 for a 2D array and a kernel without a given name
20
+ int main(void) {
21
+ int i,j;
22
+ int N = 4;
23
+ int M = 5;
24
+
25
+ // Declare input/output arrays
26
+ int A[N][M];
27
+ int B[N][M];
28
+
29
+ // Set the input data
30
+ for(i=0;i<N;i++) {
31
+ for(j=0;j<M;j++) {
32
+ A[i][j] = i*M+j;
33
+ B[i][j] = 9;
34
+ }
35
+ }
36
+
37
+ // Perform the computation
38
+ #pragma scop
39
+ {
40
+ #pragma species kernel A[2:N-1,1:M-1]|element -> B[2:N-1,1:M-1]|element
41
+ for (i = 2; i < N; i++) {
42
+ for (j = 1; j < M; j++) {
43
+ B[i][j] = A[i][j];
44
+ }
45
+ }
46
+ #pragma species endkernel example10_k1
47
+ }
48
+ #pragma endscop
49
+
50
+ // Clean-up and exit the function
51
+ fflush(stdout);
52
+ return 0;
53
+ }
54
+