bones-compiler 1.1.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,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
|
+
|