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
|
@@ -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/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 scop
|
|
35
|
+
{
|
|
36
|
+
#pragma species kernel A[2:N-1]|chunk(0:1) -> B[2:N-1]|chunk(0:1)
|
|
37
|
+
for (i = 2; i < N - 1; i = i + 2) {
|
|
38
|
+
B[i] = A[i];
|
|
39
|
+
B[i + 1] = A[i + 1];
|
|
40
|
+
}
|
|
41
|
+
#pragma species endkernel example06_k1
|
|
42
|
+
}
|
|
43
|
+
#pragma endscop
|
|
44
|
+
|
|
45
|
+
// Clean-up and exit the function
|
|
46
|
+
fflush(stdout);
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
@@ -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...........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 scop
|
|
35
|
+
{
|
|
36
|
+
#pragma species kernel A[2:N-1]|chunk(0:1) -> B[2:N-1]|chunk(0:1)
|
|
37
|
+
for (i = 2; i < N - 1; i = i + 2) {
|
|
38
|
+
temp = 0;
|
|
39
|
+
for (j = 0; j < 2; j++) {
|
|
40
|
+
temp += A[i + j];
|
|
41
|
+
}
|
|
42
|
+
B[i] = temp;
|
|
43
|
+
B[i + 1] = temp;
|
|
44
|
+
}
|
|
45
|
+
#pragma species endkernel example07_k1
|
|
46
|
+
}
|
|
47
|
+
#pragma endscop
|
|
48
|
+
|
|
49
|
+
// Clean-up and exit the function
|
|
50
|
+
fflush(stdout);
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
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 scop
|
|
33
|
+
{
|
|
34
|
+
#pragma species kernel A[1:8*N-7]|element -> A[6:2*N+4]|element
|
|
35
|
+
for (i = 0; i < N; i++) {
|
|
36
|
+
A[2 * i + 6] = A[8 * i + 1];
|
|
37
|
+
}
|
|
38
|
+
#pragma species endkernel example01_k1
|
|
39
|
+
}
|
|
40
|
+
#pragma endscop
|
|
41
|
+
|
|
42
|
+
// Clean-up and exit the function
|
|
43
|
+
fflush(stdout);
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
@@ -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/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
|
+
#pragma scop
|
|
33
|
+
{
|
|
34
|
+
for (i = 0; i < N; i++) {
|
|
35
|
+
A[2 * i + 6] = A[3 * i + 1];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
#pragma endscop
|
|
39
|
+
|
|
40
|
+
// Clean-up and exit the function
|
|
41
|
+
fflush(stdout);
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
#pragma scop
|
|
35
|
+
{
|
|
36
|
+
for (i = 2; i < N; i++) {
|
|
37
|
+
B[i] = A[i];
|
|
38
|
+
B[i + 1] = A[i + 1];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
#pragma endscop
|
|
42
|
+
|
|
43
|
+
// Clean-up and exit the function
|
|
44
|
+
fflush(stdout);
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
@@ -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...........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 scop
|
|
35
|
+
{
|
|
36
|
+
#pragma species kernel D[1:8*N-7,1:8*N-7]|element -> D[6:2*N+4,6:2*N+4]|element
|
|
37
|
+
for (i = 0; i < N; i++) {
|
|
38
|
+
D[2 * i + 6][2 * i + 6] = D[8 * i + 1][8 * i + 1];
|
|
39
|
+
}
|
|
40
|
+
#pragma species endkernel example04_k1
|
|
41
|
+
}
|
|
42
|
+
#pragma endscop
|
|
43
|
+
|
|
44
|
+
// Clean-up and exit the function
|
|
45
|
+
fflush(stdout);
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
#pragma scop
|
|
35
|
+
{
|
|
36
|
+
for (i = 0; i < N; i++) {
|
|
37
|
+
D[2 * i + 6][2 * i + 6] = D[8 * i + 1][3 * i + 1];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
#pragma endscop
|
|
41
|
+
|
|
42
|
+
// Clean-up and exit the function
|
|
43
|
+
fflush(stdout);
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
@@ -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/example1.c
|
|
12
|
+
// Author.............Cedric Nugteren
|
|
13
|
+
// Last modified on...16-April-2012
|
|
14
|
+
//
|
|
15
|
+
|
|
16
|
+
#include <stdio.h>
|
|
17
|
+
|
|
18
|
+
// This is 'example1', a very basic element to element example using 2D arrays.
|
|
19
|
+
int main(void) {
|
|
20
|
+
int i,j;
|
|
21
|
+
|
|
22
|
+
// Declare input/output arrays
|
|
23
|
+
int A[100][16];
|
|
24
|
+
int B[100][16];
|
|
25
|
+
|
|
26
|
+
// Set the input data
|
|
27
|
+
for(i=0;i<100;i++) {
|
|
28
|
+
for(j=0;j<16;j++) {
|
|
29
|
+
A[i][j] = i+j;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Perform the computation
|
|
34
|
+
#pragma scop
|
|
35
|
+
{
|
|
36
|
+
#pragma species kernel A[0:99,0:15]|element -> B[0:99,0:15]|element
|
|
37
|
+
for (i = 0; i < 100; i++) {
|
|
38
|
+
for (j = 0; j < 16; j++) {
|
|
39
|
+
B[i][j] = 2 * A[i][j];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
#pragma species endkernel example01_k1
|
|
43
|
+
}
|
|
44
|
+
#pragma endscop
|
|
45
|
+
|
|
46
|
+
// Clean-up and exit the function
|
|
47
|
+
fflush(stdout);
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
@@ -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/example2.c
|
|
12
|
+
// Author.............Cedric Nugteren
|
|
13
|
+
// Last modified on...06-May-2013
|
|
14
|
+
//
|
|
15
|
+
|
|
16
|
+
#include <stdio.h>
|
|
17
|
+
|
|
18
|
+
// This is 'example2', demonstrating unordered element-wise computation
|
|
19
|
+
int main(void) {
|
|
20
|
+
int i,j;
|
|
21
|
+
|
|
22
|
+
// Declare input/output arrays
|
|
23
|
+
int A[4][8];
|
|
24
|
+
int B[4][8];
|
|
25
|
+
|
|
26
|
+
// Set the input data
|
|
27
|
+
for(i=0;i<4;i++) {
|
|
28
|
+
for(j=0;j<8;j++) {
|
|
29
|
+
A[i][j] = i+j;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Perform the computation
|
|
34
|
+
#pragma scop
|
|
35
|
+
{
|
|
36
|
+
#pragma species kernel A[0:3,0:7]|element -> B[0:3,0:7]|element
|
|
37
|
+
for (i = 0; i < 4; i++) {
|
|
38
|
+
for (j = 0; j < 8; j++) {
|
|
39
|
+
B[i][j] = A[i][7 - j];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
#pragma species endkernel example02_k1
|
|
43
|
+
}
|
|
44
|
+
#pragma endscop
|
|
45
|
+
|
|
46
|
+
// Clean-up and exit the function
|
|
47
|
+
fflush(stdout);
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
|