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,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
|
+
|