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,48 @@
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...........neighbourhood/example05.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...07-May-2013
14
+ //
15
+
16
+ #include <stdio.h>
17
+
18
+ // This is 'example05', an unrolled one-sided neighbourhood
19
+ int main(void) {
20
+ int i;
21
+ int N = 256;
22
+
23
+ // Declare input/output arrays
24
+ int A[N];
25
+ int B[N];
26
+
27
+ // Set the input data
28
+ for(i=0;i<N;i++) {
29
+ A[i] = i;
30
+ B[i] = i+5;
31
+ }
32
+
33
+ // Perform the computation
34
+ #pragma scop
35
+ {
36
+ #pragma species kernel A[2:N]|neighbourhood(0:1) -> B[2:N-1]|element
37
+ for (i = 2; i < N; i++) {
38
+ B[i] = A[i] + A[i + 1];
39
+ }
40
+ #pragma species endkernel example05_k1
41
+ }
42
+ #pragma endscop
43
+
44
+ // Clean-up and exit the function
45
+ fflush(stdout);
46
+ return 0;
47
+ }
48
+
@@ -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...........shared/example1.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #include <stdlib.h>
18
+ #define SIZE 512*1024
19
+
20
+ // This is 'example1', a basic associative and commutative reduction to scalar
21
+ int main(void) {
22
+ int i;
23
+
24
+ // Declare input/output arrays
25
+ int *A = (int *)malloc(SIZE*sizeof(int));
26
+ int B[1];
27
+
28
+ // Set the input data
29
+ for(i=0;i<SIZE;i++) {
30
+ A[i] = 1;
31
+ }
32
+
33
+ // Perform the computation
34
+ B[0] = 0;
35
+ #pragma scop
36
+ {
37
+ #pragma species kernel B[0:0]|full ^ A[0:SIZE-1]|element -> B[0:0]|shared
38
+ for (i = 0; i < SIZE; i++) {
39
+ B[0] = B[0] + A[i];
40
+ }
41
+ #pragma species endkernel example01_k1
42
+ }
43
+ #pragma endscop
44
+
45
+ // Clean-up and exit the function
46
+ fflush(stdout);
47
+ return 0;
48
+ }
49
+
@@ -0,0 +1,55 @@
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...........shared/example2.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...09-May-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+
18
+ // This is 'example2', demonstrating a 3D input reduction to scalar
19
+ int main(void) {
20
+ int a,b,c;
21
+
22
+ // Declare input/output arrays
23
+ float in[8][16][32];
24
+ float out[1];
25
+
26
+ // Set the input data
27
+ for(a=0;a<8;a++) {
28
+ for(b=0;b<16;b++) {
29
+ for(c=0;c<32;c++) {
30
+ in[a][b][c] = 1;
31
+ }
32
+ }
33
+ }
34
+
35
+ // Perform the computation
36
+ out[0] = 0;
37
+ #pragma scop
38
+ {
39
+ #pragma species kernel out[0:0]|full ^ in[0:7,0:15,0:31]|element -> out[0:0]|shared
40
+ for (a = 0; a < 8; a++) {
41
+ for (b = 0; b < 16; b++) {
42
+ for (c = 0; c < 32; c++) {
43
+ out[0] = out[0] + in[a][b][c];
44
+ }
45
+ }
46
+ }
47
+ #pragma species endkernel example02_k1
48
+ }
49
+ #pragma endscop
50
+
51
+ // Clean-up and exit the function
52
+ fflush(stdout);
53
+ return 0;
54
+ }
55
+
@@ -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...........shared/example3.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #include <stdlib.h>
18
+ #define SIZE 1024
19
+
20
+ // This is 'example3', demonstrating a reduction to a 2D array
21
+ int main(void) {
22
+ int i,p,q;
23
+ int index1,index2;
24
+
25
+ // Declare input/output arrays
26
+ int *in = (int *)malloc(SIZE*sizeof(int));
27
+ int B[20][10];
28
+
29
+ // Set the input data
30
+ for(i=0;i<SIZE;i++) {
31
+ in[i] = (SIZE-i);
32
+ }
33
+
34
+ // Set the output to zero before starting
35
+ for(p=0;p<20;p++) {
36
+ for(q=0;q<10;q++) {
37
+ B[p][q] = 0;
38
+ }
39
+ }
40
+
41
+ // Perform the computation
42
+ #pragma scop
43
+ {
44
+ #pragma species kernel in[0:SIZE-1]|element ^ B[0:19,0:9]|full -> B[0:19,0:9]|shared
45
+ for (i = 0; i < SIZE; i++) {
46
+ index1 = in[i] % 20;
47
+ index2 = in[i] % 10;
48
+ B[index1][index2] = B[index1][index2] + 1;
49
+ }
50
+ #pragma species endkernel example03_k1
51
+ }
52
+ #pragma endscop
53
+
54
+ // Clean-up and exit the function
55
+ free(in);
56
+ fflush(stdout);
57
+ return 0;
58
+ }
59
+
@@ -0,0 +1,56 @@
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...........shared/example4.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...16-April-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+ #include <stdlib.h>
18
+ #define SIZE 1024*1024
19
+
20
+ // This is 'example4', demonstrating a basic 256-bin histogram computation
21
+ int main(void) {
22
+ int i;
23
+ unsigned char index;
24
+
25
+ // Declare input/output arrays
26
+ unsigned char *A = (unsigned char *)malloc(SIZE*sizeof(unsigned char));
27
+ int B[256];
28
+
29
+ // Set the input data
30
+ for(i=0;i<SIZE;i++) {
31
+ A[i] = i%256;
32
+ }
33
+
34
+ // Set the output to zero before starting
35
+ for (i=0;i<256;i++) {
36
+ B[i] = 0;
37
+ }
38
+
39
+ // Perform the computation
40
+ #pragma scop
41
+ {
42
+ #pragma species kernel A[0:SIZE-1]|element ^ B[0:255]|full -> B[0:255]|shared
43
+ for (i = 0; i < SIZE; i++) {
44
+ index = A[i];
45
+ B[index]++;
46
+ }
47
+ #pragma species endkernel example04_k1
48
+ }
49
+ #pragma endscop
50
+
51
+ // Clean-up and exit the function
52
+ free(A);
53
+ fflush(stdout);
54
+ return 0;
55
+ }
56
+
@@ -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...........shared/example5.c
12
+ // Author.............Cedric Nugteren
13
+ // Last modified on...07-May-2012
14
+ //
15
+
16
+ #include <stdio.h>
17
+
18
+ // This is 'example5', demonstrating an inner-loop only classification of a reduction to scalar
19
+ int main(void) {
20
+ int a,b,c;
21
+
22
+ // Declare input/output arrays
23
+ float in[16][16];
24
+ float out[1];
25
+
26
+ // Set the input data
27
+ out[0] = -1;
28
+ for(a=0;a<16;a++) {
29
+ for(b=0;b<16;b++) {
30
+ in[a][b] = 1.001;
31
+ }
32
+ }
33
+
34
+ // Perform the computation
35
+ for(a=0;a<16;a++) {
36
+ #pragma scop
37
+ {
38
+ #pragma species kernel out[0:0]|full ^ in[a:a,0:a]|element -> out[0:0]|shared
39
+ for (b = 0; b <= a; b++) {
40
+ out[0] = out[0] - in[a][b] * in[a][b];
41
+ }
42
+ #pragma species endkernel example05_k1
43
+ }
44
+ #pragma endscop
45
+ out[0] = 1.002;
46
+ }
47
+
48
+ // Clean-up and exit the function
49
+ fflush(stdout);
50
+ return 0;
51
+ }
52
+
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bones-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
5
- prerelease:
4
+ version: 1.3.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Cedric Nugteren
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-08-07 00:00:00.000000000 Z
11
+ date: 2013-10-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: trollop
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: cast
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,92 +48,141 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: symbolic
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
58
65
  requirements:
59
66
  - - ! '>='
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  description: Bones is a source-to-source compiler based on algorithmic skeletons and
63
- algorithmic species. It takes C code as input (annotated with species information),
64
- and generates parallel code in languages such as CUDA, OpenCL, and OpenMP. The generated
65
- code is to be executed on a GPU or a multi-core CPU.
70
+ algorithmic species. It takes C code as input (annotated with species information
71
+ by A-Darwin), and generates parallel code in languages such as CUDA, OpenCL, and
72
+ OpenMP. The generated code can be executed on a GPU or a multi-core CPU.
66
73
  email: c.nugteren@tue.nl
67
74
  executables:
68
75
  - bones
76
+ - adarwin
69
77
  extensions: []
70
78
  extra_rdoc_files:
71
79
  - README.rdoc
72
80
  files:
73
81
  - Rakefile
82
+ - bin/adarwin
74
83
  - bin/bones
75
84
  - examples/applications/ffos.c
76
- - examples/element/example5.c
77
- - examples/element/example8.c
85
+ - examples/element/example06.c
78
86
  - examples/element/example12.c
79
- - examples/element/example3.c
80
- - examples/element/example7.c
81
- - examples/element/example9.c
82
- - examples/element/example6.c
83
- - examples/element/example1.c
84
- - examples/element/example2.c
87
+ - examples/element/example13.c
88
+ - examples/element/example04.c
89
+ - examples/element/example02.c
90
+ - examples/element/example07.c
91
+ - examples/element/example08.c
92
+ - examples/element/example09.c
93
+ - examples/element/example05.c
94
+ - examples/element/example03.c
85
95
  - examples/element/example10.c
96
+ - examples/element/example01.c
86
97
  - examples/element/example11.c
87
- - examples/element/example4.c
88
- - examples/chunk/example5.c
89
- - examples/chunk/example3.c
90
- - examples/chunk/example1.c
91
- - examples/chunk/example2.c
92
- - examples/chunk/example4.c
93
- - examples/neighbourhood/example3.c
94
- - examples/neighbourhood/example1.c
95
- - examples/neighbourhood/example2.c
96
- - examples/neighbourhood/example4.c
97
- - examples/shared/example5.c
98
- - examples/shared/example3.c
99
- - examples/shared/example1.c
100
- - examples/shared/example2.c
101
- - examples/shared/example4.c
102
- - examples/benchmarks/saxpy.c
103
- - examples/benchmarks/trisolv.c
104
- - examples/benchmarks/gemm.c
105
- - examples/benchmarks/covariance.c
106
- - examples/benchmarks/gramschmidt.c
107
- - examples/benchmarks/gemver.c
108
- - examples/benchmarks/fdtd-2d.c
109
- - examples/benchmarks/gesummv.c
110
- - examples/benchmarks/cholesky.c
111
- - examples/benchmarks/fdtd-2d-apml.c
112
- - examples/benchmarks/dynprog.c
113
- - examples/benchmarks/seidel-2d.c
114
- - examples/benchmarks/syrk.c
115
- - examples/benchmarks/mvt.c
116
- - examples/benchmarks/bicg.c
117
- - examples/benchmarks/adi.c
118
- - examples/benchmarks/3mm.c
119
- - examples/benchmarks/syr2k.c
120
- - examples/benchmarks/common.h
121
- - examples/benchmarks/trmm.c
122
- - examples/benchmarks/atax.c
123
- - examples/benchmarks/reg_detect.c
124
- - examples/benchmarks/2mm.c
125
- - examples/benchmarks/ludcmp.c
126
- - examples/benchmarks/jacobi-2d-imper.c
127
- - examples/benchmarks/symm.c
128
- - examples/benchmarks/overview.txt
129
- - examples/benchmarks/correlation.c
130
- - examples/benchmarks/floyd-warshall.c
131
- - examples/benchmarks/lu.c
132
- - examples/benchmarks/durbin.c
133
- - examples/benchmarks/doitgen.c
134
- - examples/benchmarks/jacobi-1d-imper.c
135
- - lib/castaddon/node.rb
98
+ - examples/chunk/example06.c
99
+ - examples/chunk/example04.c
100
+ - examples/chunk/example02.c
101
+ - examples/chunk/example07.c
102
+ - examples/chunk/example05.c
103
+ - examples/chunk/example03.c
104
+ - examples/chunk/example01.c
105
+ - examples/neighbourhood/example04.c
106
+ - examples/neighbourhood/example02.c
107
+ - examples/neighbourhood/example05.c
108
+ - examples/neighbourhood/example03.c
109
+ - examples/neighbourhood/example01.c
110
+ - examples/shared/example04.c
111
+ - examples/shared/example02.c
112
+ - examples/shared/example05.c
113
+ - examples/shared/example03.c
114
+ - examples/shared/example01.c
115
+ - examples/benchmarks/PolyBench/trisolv.c
116
+ - examples/benchmarks/PolyBench/gemm.c
117
+ - examples/benchmarks/PolyBench/covariance.c
118
+ - examples/benchmarks/PolyBench/gramschmidt.c
119
+ - examples/benchmarks/PolyBench/gemver.c
120
+ - examples/benchmarks/PolyBench/fdtd-2d.c
121
+ - examples/benchmarks/PolyBench/gesummv.c
122
+ - examples/benchmarks/PolyBench/cholesky.c
123
+ - examples/benchmarks/PolyBench/fdtd-2d-apml.c
124
+ - examples/benchmarks/PolyBench/dynprog.c
125
+ - examples/benchmarks/PolyBench/seidel-2d.c
126
+ - examples/benchmarks/PolyBench/syrk.c
127
+ - examples/benchmarks/PolyBench/mvt.c
128
+ - examples/benchmarks/PolyBench/bicg.c
129
+ - examples/benchmarks/PolyBench/adi.c
130
+ - examples/benchmarks/PolyBench/3mm.c
131
+ - examples/benchmarks/PolyBench/syr2k.c
132
+ - examples/benchmarks/PolyBench/common.h
133
+ - examples/benchmarks/PolyBench/trmm.c
134
+ - examples/benchmarks/PolyBench/atax.c
135
+ - examples/benchmarks/PolyBench/reg_detect.c
136
+ - examples/benchmarks/PolyBench/2mm.c
137
+ - examples/benchmarks/PolyBench/ludcmp.c
138
+ - examples/benchmarks/PolyBench/jacobi-2d-imper.c
139
+ - examples/benchmarks/PolyBench/symm.c
140
+ - examples/benchmarks/PolyBench/correlation.c
141
+ - examples/benchmarks/PolyBench/floyd-warshall.c
142
+ - examples/benchmarks/PolyBench/lu.c
143
+ - examples/benchmarks/PolyBench/durbin.c
144
+ - examples/benchmarks/PolyBench/doitgen.c
145
+ - examples/benchmarks/PolyBench/jacobi-1d-imper.c
146
+ - examples/benchmarks/Rodinia/hotspot.c
147
+ - examples/benchmarks/Rodinia/srad.c
148
+ - examples/benchmarks/Rodinia/kmeans.c
149
+ - examples/benchmarks/Rodinia/cfd.c
150
+ - examples/benchmarks/other/saxpy.c
151
+ - examples/benchmarks/other/dct.c
152
+ - examples/benchmarks/other/mm.c
153
+ - examples/benchmarks/other/common.h
154
+ - examples/fusion/example04.c
155
+ - examples/fusion/example02.c
156
+ - examples/fusion/example05.c
157
+ - examples/fusion/example03.c
158
+ - examples/fusion/example01.c
159
+ - examples/dependences/example04.c
160
+ - examples/dependences/example02.c
161
+ - examples/dependences/example05.c
162
+ - examples/dependences/example03.c
163
+ - examples/dependences/example01.c
164
+ - lib/adarwin/reference.rb
165
+ - lib/adarwin/fusion.rb
166
+ - lib/adarwin/interval.rb
167
+ - lib/adarwin/preprocessor.rb
168
+ - lib/adarwin/memorycopies.rb
169
+ - lib/adarwin/engine.rb
170
+ - lib/adarwin/nest.rb
171
+ - lib/adarwin/dependences.rb
172
+ - lib/common.rb
173
+ - lib/castaddon/transformations.rb
174
+ - lib/castaddon/node_bones.rb
175
+ - lib/castaddon/node_adarwin.rb
176
+ - lib/castaddon/node_common.rb
136
177
  - lib/castaddon/index.rb
137
178
  - lib/castaddon/type.rb
179
+ - lib/adarwin.rb
138
180
  - lib/castaddon.rb
139
181
  - lib/bones.rb
140
182
  - lib/bones/variablelist.rb
141
183
  - lib/bones/structure.rb
142
184
  - lib/bones/preprocessor.rb
185
+ - lib/bones/copy.rb
143
186
  - lib/bones/engine.rb
144
187
  - lib/bones/variable.rb
145
188
  - lib/bones/algorithm.rb
@@ -158,9 +201,11 @@ files:
158
201
  - skeletons/CPU-OPENMP/common/prologue.c
159
202
  - skeletons/CPU-OPENMP/common/mem_copy_H2D.c
160
203
  - skeletons/CPU-OPENMP/common/mem_copy_D2H.c
204
+ - skeletons/CPU-OPENMP/common/timer_globals.c
161
205
  - skeletons/CPU-OPENMP/common/globals_kernel.c
162
206
  - skeletons/CPU-OPENMP/common/timer_2_stop.c
163
207
  - skeletons/CPU-OPENMP/common/timer_1_stop.c
208
+ - skeletons/CPU-OPENMP/common/mem_global.c
164
209
  - skeletons/CPU-OPENMP/common/timer_2_start.c
165
210
  - skeletons/CPU-OPENMP/common/timer_1_start.c
166
211
  - skeletons/CPU-OPENMP/common/mem_epilogue.c
@@ -176,9 +221,11 @@ files:
176
221
  - skeletons/CPU-OPENCL-INTEL/common/prologue.c
177
222
  - skeletons/CPU-OPENCL-INTEL/common/mem_copy_H2D.c
178
223
  - skeletons/CPU-OPENCL-INTEL/common/mem_copy_D2H.c
224
+ - skeletons/CPU-OPENCL-INTEL/common/timer_globals.c
179
225
  - skeletons/CPU-OPENCL-INTEL/common/globals_kernel.c
180
226
  - skeletons/CPU-OPENCL-INTEL/common/timer_2_stop.c
181
227
  - skeletons/CPU-OPENCL-INTEL/common/timer_1_stop.c
228
+ - skeletons/CPU-OPENCL-INTEL/common/mem_global.c
182
229
  - skeletons/CPU-OPENCL-INTEL/common/timer_2_start.c
183
230
  - skeletons/CPU-OPENCL-INTEL/common/timer_1_start.c
184
231
  - skeletons/CPU-OPENCL-INTEL/common/mem_epilogue.c
@@ -228,9 +275,11 @@ files:
228
275
  - skeletons/CPU-C/common/prologue.c
229
276
  - skeletons/CPU-C/common/mem_copy_H2D.c
230
277
  - skeletons/CPU-C/common/mem_copy_D2H.c
278
+ - skeletons/CPU-C/common/timer_globals.c
231
279
  - skeletons/CPU-C/common/globals_kernel.c
232
280
  - skeletons/CPU-C/common/timer_2_stop.c
233
281
  - skeletons/CPU-C/common/timer_1_stop.c
282
+ - skeletons/CPU-C/common/mem_global.c
234
283
  - skeletons/CPU-C/common/timer_2_start.c
235
284
  - skeletons/CPU-C/common/timer_1_start.c
236
285
  - skeletons/CPU-C/common/mem_epilogue.c
@@ -250,14 +299,21 @@ files:
250
299
  - skeletons/GPU-CUDA/kernel/D-element-to-1-shared.host.c
251
300
  - skeletons/GPU-CUDA/skeletons.txt
252
301
  - skeletons/GPU-CUDA/common/globals.c
302
+ - skeletons/GPU-CUDA/common/mem_async_copyout.c
253
303
  - skeletons/GPU-CUDA/common/epilogue.c
254
304
  - skeletons/GPU-CUDA/common/prologue.c
255
305
  - skeletons/GPU-CUDA/common/mem_copy_H2D.c
306
+ - skeletons/GPU-CUDA/common/mem_async_copyin.c
256
307
  - skeletons/GPU-CUDA/common/mem_copy_D2H.c
308
+ - skeletons/GPU-CUDA/common/timer_globals.c
257
309
  - skeletons/GPU-CUDA/common/globals_kernel.c
310
+ - skeletons/GPU-CUDA/common/scheduler.c
258
311
  - skeletons/GPU-CUDA/common/timer_2_stop.c
259
312
  - skeletons/GPU-CUDA/common/timer_1_stop.c
313
+ - skeletons/GPU-CUDA/common/mem_global.c
260
314
  - skeletons/GPU-CUDA/common/timer_2_start.c
315
+ - skeletons/GPU-CUDA/common/mem_async_free.c
316
+ - skeletons/GPU-CUDA/common/mem_async_alloc.c
261
317
  - skeletons/GPU-CUDA/common/timer_1_start.c
262
318
  - skeletons/GPU-CUDA/common/mem_epilogue.c
263
319
  - skeletons/GPU-CUDA/common/header.c
@@ -268,6 +324,71 @@ files:
268
324
  - test/bones/test_common.rb
269
325
  - test/bones/test_algorithm.rb
270
326
  - test/bones/test_variable.rb
327
+ - test/examples/element/example08_species.c
328
+ - test/examples/element/example04_species.c
329
+ - test/examples/element/example07_species.c
330
+ - test/examples/element/example06_species.c
331
+ - test/examples/element/example09_species.c
332
+ - test/examples/element/example02_species.c
333
+ - test/examples/element/example05_species.c
334
+ - test/examples/element/example03_species.c
335
+ - test/examples/element/example10_species.c
336
+ - test/examples/element/example11_species.c
337
+ - test/examples/element/example13_species.c
338
+ - test/examples/element/example12_species.c
339
+ - test/examples/element/example01_species.c
340
+ - test/examples/chunk/example04_species.c
341
+ - test/examples/chunk/example07_species.c
342
+ - test/examples/chunk/example06_species.c
343
+ - test/examples/chunk/example02_species.c
344
+ - test/examples/chunk/example05_species.c
345
+ - test/examples/chunk/example03_species.c
346
+ - test/examples/chunk/example01_species.c
347
+ - test/examples/neighbourhood/example04_species.c
348
+ - test/examples/neighbourhood/example02_species.c
349
+ - test/examples/neighbourhood/example05_species.c
350
+ - test/examples/neighbourhood/example03_species.c
351
+ - test/examples/neighbourhood/example01_species.c
352
+ - test/examples/shared/example04_species.c
353
+ - test/examples/shared/example02_species.c
354
+ - test/examples/shared/example05_species.c
355
+ - test/examples/shared/example03_species.c
356
+ - test/examples/shared/example01_species.c
357
+ - test/examples/benchmarks/PolyBench/gesummv_species.c
358
+ - test/examples/benchmarks/PolyBench/durbin_species.c
359
+ - test/examples/benchmarks/PolyBench/cholesky_species.c
360
+ - test/examples/benchmarks/PolyBench/seidel-2d_species.c
361
+ - test/examples/benchmarks/PolyBench/fdtd-2d-apml_species.c
362
+ - test/examples/benchmarks/PolyBench/trmm_species.c
363
+ - test/examples/benchmarks/PolyBench/syrk_species.c
364
+ - test/examples/benchmarks/PolyBench/trisolv_species.c
365
+ - test/examples/benchmarks/PolyBench/jacobi-1d-imper_species.c
366
+ - test/examples/benchmarks/PolyBench/gramschmidt_species.c
367
+ - test/examples/benchmarks/PolyBench/fdtd-2d_species.c
368
+ - test/examples/benchmarks/PolyBench/atax_species.c
369
+ - test/examples/benchmarks/PolyBench/mvt_species.c
370
+ - test/examples/benchmarks/PolyBench/covariance_species.c
371
+ - test/examples/benchmarks/PolyBench/3mm_species.c
372
+ - test/examples/benchmarks/PolyBench/adi_species.c
373
+ - test/examples/benchmarks/PolyBench/doitgen_species.c
374
+ - test/examples/benchmarks/PolyBench/ludcmp_species.c
375
+ - test/examples/benchmarks/PolyBench/gemm_species.c
376
+ - test/examples/benchmarks/PolyBench/2mm_species.c
377
+ - test/examples/benchmarks/PolyBench/reg_detect_species.c
378
+ - test/examples/benchmarks/PolyBench/syr2k_species.c
379
+ - test/examples/benchmarks/PolyBench/symm_species.c
380
+ - test/examples/benchmarks/PolyBench/dynprog_species.c
381
+ - test/examples/benchmarks/PolyBench/jacobi-2d-imper_species.c
382
+ - test/examples/benchmarks/PolyBench/bicg_species.c
383
+ - test/examples/benchmarks/PolyBench/correlation_species.c
384
+ - test/examples/benchmarks/PolyBench/gemver_species.c
385
+ - test/examples/benchmarks/PolyBench/lu_species.c
386
+ - test/examples/benchmarks/PolyBench/floyd-warshall_species.c
387
+ - test/examples/dependences/example04_species.c
388
+ - test/examples/dependences/example02_species.c
389
+ - test/examples/dependences/example05_species.c
390
+ - test/examples/dependences/example03_species.c
391
+ - test/examples/dependences/example01_species.c
271
392
  - README.rdoc
272
393
  - LICENSE
273
394
  - CHANGELOG
@@ -275,6 +396,7 @@ files:
275
396
  homepage: http://parse.ele.tue.nl/bones/
276
397
  licenses:
277
398
  - LICENSE
399
+ metadata: {}
278
400
  post_install_message:
279
401
  rdoc_options:
280
402
  - --title
@@ -283,21 +405,19 @@ rdoc_options:
283
405
  require_paths:
284
406
  - lib
285
407
  required_ruby_version: !ruby/object:Gem::Requirement
286
- none: false
287
408
  requirements:
288
409
  - - ! '>='
289
410
  - !ruby/object:Gem::Version
290
411
  version: '0'
291
412
  required_rubygems_version: !ruby/object:Gem::Requirement
292
- none: false
293
413
  requirements:
294
414
  - - ! '>='
295
415
  - !ruby/object:Gem::Version
296
416
  version: '0'
297
417
  requirements: []
298
418
  rubyforge_project:
299
- rubygems_version: 1.8.24
419
+ rubygems_version: 2.1.10
300
420
  signing_key:
301
- specification_version: 3
421
+ specification_version: 4
302
422
  summary: The Bones source-to-source compiler
303
423
  test_files: []