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.
- checksums.yaml +15 -0
- data/CHANGELOG +37 -0
- data/LICENSE +1 -1
- data/README.rdoc +95 -70
- data/Rakefile +78 -3
- data/VERSION +1 -1
- data/bin/adarwin +17 -0
- data/examples/benchmarks/PolyBench/2mm.c +104 -0
- data/examples/benchmarks/{3mm.c → PolyBench/3mm.c} +5 -2
- data/examples/benchmarks/{adi.c → PolyBench/adi.c} +6 -3
- data/examples/benchmarks/{atax.c → PolyBench/atax.c} +5 -2
- data/examples/benchmarks/{bicg.c → PolyBench/bicg.c} +5 -2
- data/examples/benchmarks/{cholesky.c → PolyBench/cholesky.c} +3 -0
- data/examples/benchmarks/{common.h → PolyBench/common.h} +2 -2
- data/examples/benchmarks/{correlation.c → PolyBench/correlation.c} +16 -7
- data/examples/benchmarks/{covariance.c → PolyBench/covariance.c} +7 -2
- data/examples/benchmarks/{doitgen.c → PolyBench/doitgen.c} +5 -2
- data/examples/benchmarks/{durbin.c → PolyBench/durbin.c} +3 -0
- data/examples/benchmarks/{dynprog.c → PolyBench/dynprog.c} +3 -0
- data/examples/benchmarks/{fdtd-2d-apml.c → PolyBench/fdtd-2d-apml.c} +3 -0
- data/examples/benchmarks/{fdtd-2d.c → PolyBench/fdtd-2d.c} +5 -2
- data/examples/benchmarks/{floyd-warshall.c → PolyBench/floyd-warshall.c} +3 -0
- data/examples/benchmarks/{gemm.c → PolyBench/gemm.c} +5 -2
- data/examples/benchmarks/{gemver.c → PolyBench/gemver.c} +5 -2
- data/examples/benchmarks/{gesummv.c → PolyBench/gesummv.c} +5 -2
- data/examples/benchmarks/{gramschmidt.c → PolyBench/gramschmidt.c} +3 -0
- data/examples/benchmarks/{jacobi-1d-imper.c → PolyBench/jacobi-1d-imper.c} +10 -2
- data/examples/benchmarks/{jacobi-2d-imper.c → PolyBench/jacobi-2d-imper.c} +8 -3
- data/examples/benchmarks/{lu.c → PolyBench/lu.c} +3 -0
- data/examples/benchmarks/{ludcmp.c → PolyBench/ludcmp.c} +3 -0
- data/examples/benchmarks/{mvt.c → PolyBench/mvt.c} +6 -2
- data/examples/benchmarks/{reg_detect.c → PolyBench/reg_detect.c} +3 -0
- data/examples/benchmarks/{seidel-2d.c → PolyBench/seidel-2d.c} +3 -0
- data/examples/benchmarks/{symm.c → PolyBench/symm.c} +3 -0
- data/examples/benchmarks/{syr2k.c → PolyBench/syr2k.c} +5 -2
- data/examples/benchmarks/{syrk.c → PolyBench/syrk.c} +7 -4
- data/examples/benchmarks/{trisolv.c → PolyBench/trisolv.c} +3 -0
- data/examples/benchmarks/{trmm.c → PolyBench/trmm.c} +3 -0
- data/examples/benchmarks/Rodinia/cfd.c +180 -0
- data/examples/benchmarks/Rodinia/hotspot.c +228 -0
- data/examples/benchmarks/Rodinia/kmeans.c +164 -0
- data/examples/benchmarks/Rodinia/srad.c +188 -0
- data/examples/benchmarks/other/common.h +0 -0
- data/examples/benchmarks/other/dct.c +58 -0
- data/examples/benchmarks/other/mm.c +50 -0
- data/examples/benchmarks/{saxpy.c → other/saxpy.c} +11 -7
- data/examples/chunk/{example1.c → example01.c} +0 -0
- data/examples/chunk/{example2.c → example02.c} +0 -0
- data/examples/chunk/{example3.c → example03.c} +0 -0
- data/examples/chunk/{example4.c → example04.c} +0 -0
- data/examples/chunk/{example5.c → example05.c} +0 -0
- data/examples/chunk/example06.c +45 -0
- data/examples/chunk/example07.c +49 -0
- data/examples/dependences/example01.c +42 -0
- data/examples/dependences/example02.c +40 -0
- data/examples/dependences/example03.c +43 -0
- data/examples/dependences/example04.c +44 -0
- data/examples/dependences/example05.c +42 -0
- data/examples/element/{example1.c → example01.c} +0 -0
- data/examples/element/{example2.c → example02.c} +2 -2
- data/examples/element/{example3.c → example03.c} +0 -0
- data/examples/element/{example4.c → example04.c} +0 -0
- data/examples/element/{example5.c → example05.c} +0 -0
- data/examples/element/{example6.c → example06.c} +0 -0
- data/examples/element/{example7.c → example07.c} +0 -0
- data/examples/element/{example8.c → example08.c} +0 -0
- data/examples/element/{example9.c → example09.c} +0 -0
- data/examples/element/example13.c +73 -0
- data/examples/fusion/example01.c +68 -0
- data/examples/fusion/example02.c +73 -0
- data/examples/fusion/example03.c +72 -0
- data/examples/fusion/example04.c +61 -0
- data/examples/fusion/example05.c +55 -0
- data/examples/neighbourhood/{example1.c → example01.c} +0 -0
- data/examples/neighbourhood/{example2.c → example02.c} +0 -0
- data/examples/neighbourhood/{example3.c → example03.c} +0 -0
- data/examples/neighbourhood/{example4.c → example04.c} +0 -0
- data/examples/neighbourhood/example05.c +44 -0
- data/examples/shared/{example1.c → example01.c} +0 -0
- data/examples/shared/{example2.c → example02.c} +0 -0
- data/examples/shared/{example3.c → example03.c} +0 -0
- data/examples/shared/{example4.c → example04.c} +0 -0
- data/examples/shared/{example5.c → example05.c} +0 -0
- data/lib/adarwin.rb +62 -0
- data/lib/adarwin/dependences.rb +268 -0
- data/lib/adarwin/engine.rb +277 -0
- data/lib/adarwin/fusion.rb +174 -0
- data/lib/adarwin/interval.rb +57 -0
- data/lib/adarwin/memorycopies.rb +153 -0
- data/lib/adarwin/nest.rb +225 -0
- data/lib/adarwin/preprocessor.rb +76 -0
- data/lib/adarwin/reference.rb +261 -0
- data/lib/bones.rb +4 -55
- data/lib/bones/algorithm.rb +77 -40
- data/lib/bones/copy.rb +26 -0
- data/lib/bones/engine.rb +147 -31
- data/lib/bones/preprocessor.rb +92 -12
- data/lib/bones/species.rb +4 -3
- data/lib/bones/structure.rb +14 -4
- data/lib/castaddon.rb +11 -6
- data/lib/castaddon/node_adarwin.rb +245 -0
- data/lib/castaddon/node_bones.rb +316 -0
- data/lib/castaddon/node_common.rb +289 -0
- data/lib/castaddon/transformations.rb +236 -0
- data/lib/common.rb +216 -0
- data/skeletons/CPU-C/common/header.c +3 -0
- data/skeletons/CPU-C/common/mem_global.c +0 -0
- data/skeletons/CPU-C/common/timer_2_start.c +11 -13
- data/skeletons/CPU-C/common/timer_2_stop.c +1 -1
- data/skeletons/CPU-C/common/timer_globals.c +29 -0
- data/skeletons/CPU-OPENCL-INTEL/common/globals.c +1 -1
- data/skeletons/CPU-OPENCL-INTEL/common/header.c +3 -0
- data/skeletons/CPU-OPENCL-INTEL/common/mem_copy_D2H.c +7 -2
- data/skeletons/CPU-OPENCL-INTEL/common/mem_copy_H2D.c +4 -2
- data/skeletons/CPU-OPENCL-INTEL/common/mem_global.c +0 -0
- data/skeletons/CPU-OPENCL-INTEL/common/mem_prologue.c +6 -3
- data/skeletons/CPU-OPENCL-INTEL/common/timer_2_stop.c +1 -1
- data/skeletons/CPU-OPENCL-INTEL/common/timer_globals.c +24 -0
- data/skeletons/CPU-OPENMP/common/globals.c +1 -0
- data/skeletons/CPU-OPENMP/common/header.c +3 -0
- data/skeletons/CPU-OPENMP/common/mem_global.c +0 -0
- data/skeletons/CPU-OPENMP/common/timer_1_start.c +0 -12
- data/skeletons/CPU-OPENMP/common/timer_2_stop.c +1 -1
- data/skeletons/CPU-OPENMP/common/timer_globals.c +33 -0
- data/skeletons/GPU-CUDA/common/globals.c +27 -3
- data/skeletons/GPU-CUDA/common/header.c +2 -0
- data/skeletons/GPU-CUDA/common/mem_async_alloc.c +6 -0
- data/skeletons/GPU-CUDA/common/mem_async_copyin.c +6 -0
- data/skeletons/GPU-CUDA/common/mem_async_copyout.c +6 -0
- data/skeletons/GPU-CUDA/common/mem_async_free.c +6 -0
- data/skeletons/GPU-CUDA/common/mem_copy_D2H.c +2 -1
- data/skeletons/GPU-CUDA/common/mem_copy_H2D.c +2 -1
- data/skeletons/GPU-CUDA/common/mem_global.c +1 -0
- data/skeletons/GPU-CUDA/common/mem_prologue.c +1 -2
- data/skeletons/GPU-CUDA/common/scheduler.c +86 -0
- data/skeletons/GPU-CUDA/common/timer_2_start.c +2 -4
- data/skeletons/GPU-CUDA/common/timer_2_stop.c +3 -5
- data/skeletons/GPU-CUDA/common/timer_globals.c +26 -0
- data/skeletons/GPU-CUDA/kernel/2xN-N-chunk-1-N-to-D-element.kernel.cu +5 -7
- data/skeletons/GPU-CUDA/kernel/N-N-chunk-1-N-to-D-element.kernel.cu +4 -6
- data/skeletons/GPU-CUDA/kernel/default.host.c +1 -1
- data/skeletons/GPU-CUDA/kernel/default.kernel.cu +6 -8
- data/skeletons/GPU-CUDA/skeletons.txt +6 -5
- data/{examples/benchmarks/2mm.c → test/examples/benchmarks/PolyBench/2mm_species.c} +19 -15
- data/test/examples/benchmarks/PolyBench/3mm_species.c +82 -0
- data/test/examples/benchmarks/PolyBench/adi_species.c +89 -0
- data/test/examples/benchmarks/PolyBench/atax_species.c +69 -0
- data/test/examples/benchmarks/PolyBench/bicg_species.c +71 -0
- data/test/examples/benchmarks/PolyBench/cholesky_species.c +68 -0
- data/test/examples/benchmarks/PolyBench/correlation_species.c +97 -0
- data/test/examples/benchmarks/PolyBench/covariance_species.c +78 -0
- data/test/examples/benchmarks/PolyBench/doitgen_species.c +67 -0
- data/test/examples/benchmarks/PolyBench/durbin_species.c +80 -0
- data/test/examples/benchmarks/PolyBench/dynprog_species.c +71 -0
- data/test/examples/benchmarks/PolyBench/fdtd-2d-apml_species.c +112 -0
- data/test/examples/benchmarks/PolyBench/fdtd-2d_species.c +78 -0
- data/test/examples/benchmarks/PolyBench/floyd-warshall_species.c +54 -0
- data/test/examples/benchmarks/PolyBench/gemm_species.c +73 -0
- data/test/examples/benchmarks/PolyBench/gemver_species.c +93 -0
- data/test/examples/benchmarks/PolyBench/gesummv_species.c +68 -0
- data/test/examples/benchmarks/PolyBench/gramschmidt_species.c +78 -0
- data/test/examples/benchmarks/PolyBench/jacobi-1d-imper_species.c +59 -0
- data/test/examples/benchmarks/PolyBench/jacobi-2d-imper_species.c +65 -0
- data/test/examples/benchmarks/PolyBench/lu_species.c +57 -0
- data/test/examples/benchmarks/PolyBench/ludcmp_species.c +89 -0
- data/test/examples/benchmarks/PolyBench/mvt_species.c +69 -0
- data/test/examples/benchmarks/PolyBench/reg_detect_species.c +86 -0
- data/test/examples/benchmarks/PolyBench/seidel-2d_species.c +53 -0
- data/test/examples/benchmarks/PolyBench/symm_species.c +74 -0
- data/test/examples/benchmarks/PolyBench/syr2k_species.c +69 -0
- data/test/examples/benchmarks/PolyBench/syrk_species.c +66 -0
- data/test/examples/benchmarks/PolyBench/trisolv_species.c +61 -0
- data/test/examples/benchmarks/PolyBench/trmm_species.c +61 -0
- data/test/examples/chunk/example01_species.c +58 -0
- data/test/examples/chunk/example02_species.c +48 -0
- data/test/examples/chunk/example03_species.c +63 -0
- data/test/examples/chunk/example04_species.c +58 -0
- data/test/examples/chunk/example05_species.c +56 -0
- data/test/examples/chunk/example06_species.c +49 -0
- data/test/examples/chunk/example07_species.c +53 -0
- data/test/examples/dependences/example01_species.c +46 -0
- data/test/examples/dependences/example02_species.c +44 -0
- data/test/examples/dependences/example03_species.c +47 -0
- data/test/examples/dependences/example04_species.c +48 -0
- data/test/examples/dependences/example05_species.c +46 -0
- data/test/examples/element/example01_species.c +50 -0
- data/test/examples/element/example02_species.c +50 -0
- data/test/examples/element/example03_species.c +62 -0
- data/test/examples/element/example04_species.c +53 -0
- data/test/examples/element/example05_species.c +59 -0
- data/test/examples/element/example06_species.c +50 -0
- data/test/examples/element/example07_species.c +58 -0
- data/test/examples/element/example08_species.c +49 -0
- data/test/examples/element/example09_species.c +52 -0
- data/test/examples/element/example10_species.c +54 -0
- data/test/examples/element/example11_species.c +51 -0
- data/test/examples/element/example12_species.c +60 -0
- data/test/examples/element/example13_species.c +77 -0
- data/test/examples/neighbourhood/example01_species.c +57 -0
- data/test/examples/neighbourhood/example02_species.c +56 -0
- data/test/examples/neighbourhood/example03_species.c +83 -0
- data/test/examples/neighbourhood/example04_species.c +55 -0
- data/test/examples/neighbourhood/example05_species.c +48 -0
- data/test/examples/shared/example01_species.c +49 -0
- data/test/examples/shared/example02_species.c +55 -0
- data/test/examples/shared/example03_species.c +59 -0
- data/test/examples/shared/example04_species.c +56 -0
- data/test/examples/shared/example05_species.c +52 -0
- metadata +193 -73
- data/examples/benchmarks/overview.txt +0 -38
- data/lib/castaddon/node.rb +0 -753
File without changes
|
@@ -0,0 +1,58 @@
|
|
1
|
+
//
|
2
|
+
// This file is part of the Bones source-to-source compiler examples. For more
|
3
|
+
// information on Bones please use the contact information below.
|
4
|
+
//
|
5
|
+
// == More information on Bones
|
6
|
+
// Contact............Cedric Nugteren <c.nugteren@tue.nl>
|
7
|
+
// Web address........http://parse.ele.tue.nl/bones/
|
8
|
+
//
|
9
|
+
// == File information
|
10
|
+
// Filename...........benchmark/dct.c
|
11
|
+
// Author.............Cedric Nugteren
|
12
|
+
// Last modified on...15-Jul-2013
|
13
|
+
//
|
14
|
+
|
15
|
+
#include <stdio.h>
|
16
|
+
#include <stdlib.h>
|
17
|
+
|
18
|
+
#define N 2048
|
19
|
+
|
20
|
+
// This is 'dct', a 2D 8x8 discrete cosine transform kernel
|
21
|
+
int main(void) {
|
22
|
+
int i;
|
23
|
+
int x,y;
|
24
|
+
int u,v;
|
25
|
+
|
26
|
+
// Declare arrays on the stack
|
27
|
+
float A[N*N];
|
28
|
+
float B[N*N];
|
29
|
+
|
30
|
+
// Set the input data
|
31
|
+
for (i=0; i<N*N; i++) {
|
32
|
+
A[i] = i*1.4;
|
33
|
+
B[i] = i/0.9;
|
34
|
+
}
|
35
|
+
|
36
|
+
// Set the constants
|
37
|
+
float alpha = 1.414213f * 0.5f;
|
38
|
+
|
39
|
+
// Perform the computation (y := ax+y)
|
40
|
+
#pragma scop
|
41
|
+
for (y=0; y<8; y++) {
|
42
|
+
for (x=0; x<8; x++) {
|
43
|
+
B[y*8+x] = 0;
|
44
|
+
for (u=0; u<8; u++) {
|
45
|
+
for (v=0; v<8; v++) {
|
46
|
+
B[y*8+x] += alpha * alpha * A[u*8+v] *
|
47
|
+
cos(PI * u * (2.0f*x+1) * (1.0f/16.0f)) *
|
48
|
+
cos(PI * v * (2.0f*y+1) * (1.0f/16.0f));
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
#pragma endscop
|
54
|
+
|
55
|
+
// Clean-up and exit the function
|
56
|
+
fflush(stdout);
|
57
|
+
return 0;
|
58
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
//
|
2
|
+
// This file is part of the Bones source-to-source compiler examples. For more
|
3
|
+
// information on Bones please use the contact information below.
|
4
|
+
//
|
5
|
+
// == More information on Bones
|
6
|
+
// Contact............Cedric Nugteren <c.nugteren@tue.nl>
|
7
|
+
// Web address........http://parse.ele.tue.nl/bones/
|
8
|
+
//
|
9
|
+
// == File information
|
10
|
+
// Filename...........benchmark/mm.c
|
11
|
+
// Author.............Cedric Nugteren
|
12
|
+
// Last modified on...08-Jul-2013
|
13
|
+
//
|
14
|
+
|
15
|
+
#include <stdio.h>
|
16
|
+
#include <stdlib.h>
|
17
|
+
#define N 512
|
18
|
+
|
19
|
+
// This is 'mm', a matrix multiplication kernel
|
20
|
+
int main(void) {
|
21
|
+
int i,j,k;
|
22
|
+
|
23
|
+
// Declare arrays on the stack
|
24
|
+
float A[N][N];
|
25
|
+
float B[N][N];
|
26
|
+
float C[N][N];
|
27
|
+
|
28
|
+
// Set the input data
|
29
|
+
for (i=0; i<N; i++) { for (k=0; k<N; k++) { A[i][k] = (i+k)*1.4; } }
|
30
|
+
for (k=0; k<N; k++) { for (j=0; j<N; j++) { B[k][j] = k*j/0.9; } }
|
31
|
+
for (i=0; i<N; i++) { for (j=0; j<N; j++) { C[i][j] = 0; } }
|
32
|
+
|
33
|
+
// Perform the computation (C := A*B)
|
34
|
+
#pragma species kernel 0:N-1,0:N-1|chunk(0:0,0:N-1) ^ 0:N-1,0:N-1|chunk(0:N-1,0:0) -> 0:N-1,0:N-1|element
|
35
|
+
for (i=0; i<N; i++) {
|
36
|
+
for (j=0; j<N; j++) {
|
37
|
+
C[i][j] = 0;
|
38
|
+
for (k=0; k<N; k++) {
|
39
|
+
C[i][j] += A[i][k] * B[k][j];
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
#pragma species endkernel mm
|
44
|
+
#pragma endscop
|
45
|
+
|
46
|
+
// Clean-up and exit the function
|
47
|
+
fflush(stdout);
|
48
|
+
return 0;
|
49
|
+
}
|
50
|
+
|
@@ -9,21 +9,23 @@
|
|
9
9
|
// == File information
|
10
10
|
// Filename...........benchmark/saxpy.c
|
11
11
|
// Author.............Cedric Nugteren
|
12
|
-
// Last modified on...
|
12
|
+
// Last modified on...09-Aug-2012
|
13
13
|
//
|
14
14
|
|
15
|
-
#include
|
15
|
+
#include <stdio.h>
|
16
|
+
#include <stdlib.h>
|
17
|
+
#define N 2048*2048
|
16
18
|
|
17
19
|
// This is 'saxpy', a scalar multiplication and vector addition kernel
|
18
20
|
int main(void) {
|
19
21
|
int i;
|
20
22
|
|
21
23
|
// Declare arrays on the stack
|
22
|
-
float x[
|
23
|
-
float y[
|
24
|
+
float x[N];
|
25
|
+
float y[N];
|
24
26
|
|
25
27
|
// Set the input data
|
26
|
-
for (i=0; i<
|
28
|
+
for (i=0; i<N; i++) {
|
27
29
|
x[i] = i*1.4;
|
28
30
|
y[i] = i/0.9;
|
29
31
|
}
|
@@ -32,11 +34,13 @@ int main(void) {
|
|
32
34
|
float a = 411.3;
|
33
35
|
|
34
36
|
// Perform the computation (y := ax+y)
|
35
|
-
#pragma
|
36
|
-
|
37
|
+
#pragma scop
|
38
|
+
#pragma species kernel 0:N-1|element ^ 0:N-1|element -> 0:N-1|element
|
39
|
+
for (i=0; i<N; i++) {
|
37
40
|
y[i] = a*x[i] + y[i];
|
38
41
|
}
|
39
42
|
#pragma species endkernel saxpy
|
43
|
+
#pragma endscop
|
40
44
|
|
41
45
|
// Clean-up and exit the function
|
42
46
|
fflush(stdout);
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,45 @@
|
|
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...........chunk/example06.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example06', a chunk/chunk with a step of 2
|
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 species kernel A[2:N-1]|chunk(0:1) -> B[2:N-1]|chunk(0:1)
|
35
|
+
for (i=2; i<N-1; i=i+2) {
|
36
|
+
B[i] = A[i];
|
37
|
+
B[i+1] = A[i+1];
|
38
|
+
}
|
39
|
+
#pragma species endkernel example06
|
40
|
+
|
41
|
+
// Clean-up and exit the function
|
42
|
+
fflush(stdout);
|
43
|
+
return 0;
|
44
|
+
}
|
45
|
+
|
@@ -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...........chunk/example07.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example07', a chunk/chunk with a step of 2
|
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 species kernel A[2:N-1]|chunk(0:1) -> B[2:N-1]|chunk(0:1)
|
35
|
+
for (i=2; i<N-1; i=i+2) {
|
36
|
+
temp = 0;
|
37
|
+
for (j=0; j<2; j++) {
|
38
|
+
temp += A[i+j];
|
39
|
+
}
|
40
|
+
B[i] = temp;
|
41
|
+
B[i+1] = temp;
|
42
|
+
}
|
43
|
+
#pragma species endkernel example07
|
44
|
+
|
45
|
+
// Clean-up and exit the function
|
46
|
+
fflush(stdout);
|
47
|
+
return 0;
|
48
|
+
}
|
49
|
+
|
@@ -0,0 +1,42 @@
|
|
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...........dependences/example01.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example01', an element -> element example WITHOUT dependences.
|
19
|
+
int main(void) {
|
20
|
+
int i;
|
21
|
+
int N = 256;
|
22
|
+
|
23
|
+
// Declare input/output arrays
|
24
|
+
int A[N];
|
25
|
+
|
26
|
+
// Set the input data
|
27
|
+
for(i=0;i<N;i++) {
|
28
|
+
A[i] = i;
|
29
|
+
}
|
30
|
+
|
31
|
+
// Perform the computation
|
32
|
+
#pragma species kernel A[1:8*N-7]|element -> A[6:2*N+4]|element
|
33
|
+
for (i=0; i<N; i++) { // No dependence
|
34
|
+
A[2*i+6] = A[8*i+1];
|
35
|
+
}
|
36
|
+
#pragma species endkernel example01
|
37
|
+
|
38
|
+
// Clean-up and exit the function
|
39
|
+
fflush(stdout);
|
40
|
+
return 0;
|
41
|
+
}
|
42
|
+
|
@@ -0,0 +1,40 @@
|
|
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...........dependences/example02.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example02', an element -> element example WITH dependences.
|
19
|
+
int main(void) {
|
20
|
+
int i;
|
21
|
+
int N = 256;
|
22
|
+
|
23
|
+
// Declare input/output arrays
|
24
|
+
int A[N];
|
25
|
+
|
26
|
+
// Set the input data
|
27
|
+
for(i=0;i<N;i++) {
|
28
|
+
A[i] = i;
|
29
|
+
}
|
30
|
+
|
31
|
+
// Perform the computation
|
32
|
+
for (i=0; i<N; i++) { // Read-write dependence
|
33
|
+
A[2*i+6] = A[3*i+1];
|
34
|
+
}
|
35
|
+
|
36
|
+
// Clean-up and exit the function
|
37
|
+
fflush(stdout);
|
38
|
+
return 0;
|
39
|
+
}
|
40
|
+
|
@@ -0,0 +1,43 @@
|
|
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...........dependences/example03.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example03', an element -> element example WITH dependences.
|
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] = 0;
|
31
|
+
}
|
32
|
+
|
33
|
+
// Perform the computation
|
34
|
+
for (i=2; i<N; i++) { // Write-write dependence
|
35
|
+
B[i] = A[i];
|
36
|
+
B[i+1] = A[i+1];
|
37
|
+
}
|
38
|
+
|
39
|
+
// Clean-up and exit the function
|
40
|
+
fflush(stdout);
|
41
|
+
return 0;
|
42
|
+
}
|
43
|
+
|
@@ -0,0 +1,44 @@
|
|
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...........dependences/example04.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example04', a 2D example WITHOUT dependences.
|
19
|
+
int main(void) {
|
20
|
+
int i,j;
|
21
|
+
int N = 256;
|
22
|
+
|
23
|
+
// Declare input/output arrays
|
24
|
+
int D[N][N];
|
25
|
+
|
26
|
+
// Set the input data
|
27
|
+
for(i=0;i<N;i++) {
|
28
|
+
for(j=0;j<N;j++) {
|
29
|
+
D[i][j] = i*j+3;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
// Perform the computation
|
34
|
+
#pragma species kernel D[1:8*N-7,1:8*N-7]|element -> D[6:2*N+4,6:2*N+4]|element
|
35
|
+
for (i=0; i<N; i++) { // No dependence
|
36
|
+
D[2*i+6][2*i+6] = D[8*i+1][8*i+1];
|
37
|
+
}
|
38
|
+
#pragma species endkernel example04
|
39
|
+
|
40
|
+
// Clean-up and exit the function
|
41
|
+
fflush(stdout);
|
42
|
+
return 0;
|
43
|
+
}
|
44
|
+
|
@@ -0,0 +1,42 @@
|
|
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...........dependences/example05.c
|
12
|
+
// Author.............Cedric Nugteren
|
13
|
+
// Last modified on...07-May-2013
|
14
|
+
//
|
15
|
+
|
16
|
+
#include <stdio.h>
|
17
|
+
|
18
|
+
// This is 'example05', a 2D example WITH dependences.
|
19
|
+
int main(void) {
|
20
|
+
int i,j;
|
21
|
+
int N = 256;
|
22
|
+
|
23
|
+
// Declare input/output arrays
|
24
|
+
int D[N][N];
|
25
|
+
|
26
|
+
// Set the input data
|
27
|
+
for(i=0;i<N;i++) {
|
28
|
+
for(j=0;j<N;j++) {
|
29
|
+
D[i][j] = i*j+3;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
// Perform the computation
|
34
|
+
for (i=0; i<N; i++) { // Read-write dependence
|
35
|
+
D[2*i+6][2*i+6] = D[8*i+1][3*i+1];
|
36
|
+
}
|
37
|
+
|
38
|
+
// Clean-up and exit the function
|
39
|
+
fflush(stdout);
|
40
|
+
return 0;
|
41
|
+
}
|
42
|
+
|