source: CIVL/examples/translation/openclversion2.15/arrKernels.cvl@ 0e052af2

1.23 2.0 main test-branch
Last change on this file since 0e052af2 was 3192d8e, checked in by Jacob Trieu <fuufusuu@…>, 12 years ago

feature not implemented?

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@1434 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 2.3 KB
Line 
1 /*
2 cl_kernel kernel;
3 kernel = clCreateKernel(arguments, "nothing");
4
5 ((args*)kernel.arguments)->param[0] = (int*)malloc(sizeof(int));
6 memcpy(((args*)kernel.arguments)->param[0], &star, sizeof(int));
7
8 ((args*)kernel.arguments)->param[1] = one;
9
10 clReleaseKernel(kernel);
11
12 printf("single kernel works\n");
13 */
14
15
16#include "cl.cvl"
17#include <stdio.h>
18#include <stdlib.h>
19#include <string.h>
20#include <civlc.h>
21
22int numArgs = 2;
23int numKernels = 3;
24
25typedef struct
26{
27 void * param[numArgs];
28 int mallocflag[numArgs];
29}args;
30
31cl_kernel clCreateKernel(args * argument, char * function)
32{
33 cl_kernel kernel;
34 kernel.arguments = argument;
35 kernel.method = function;
36
37 for(int j = 0; j < numArgs; j++)
38 {
39 ((args*)kernel.arguments)->mallocflag[j] = 0;
40 }
41
42 return kernel;
43}
44
45void clReleaseKernel(cl_kernel kernel)
46{
47 for (int i = 0; i < numArgs; i++)
48 {
49 printf("I am argument %d with value %d\n", i, ((args*)kernel.arguments)->mallocflag[i]);
50 if (((args*)kernel.arguments)->mallocflag[i] == 1)
51 {
52 printf("and I pass the flag check\n");
53 free(((args*)kernel.arguments)->param[i]);
54 }
55 }
56}
57
58int main(int argc, char** argv)
59{
60 args * arguments;
61 arguments = (args*)malloc(sizeof(args) * numKernels);
62
63
64 int star = 1;
65
66 int * one = (int*)malloc(sizeof(int));
67 memcpy(one, &star, sizeof(int));
68
69 //cl_kernel *kernels = (cl_kernel*)malloc(numKernels * sizeof(cl_kernel));
70 cl_kernel kernels[numKernels];
71
72 printf("%d, %d\n", star, *one);
73
74 for (int i = 0; i < numKernels; i++)
75 {
76 kernels[i] = clCreateKernel(arguments+i, "eh");
77
78
79 }
80 for (int j = 0; j < numKernels; j++)
81 {
82 //printf("starts here\n");
83 ((args*)kernels[j].arguments)->param[0] = (int*)malloc(sizeof(int));
84 ((args*)kernels[j].arguments)->mallocflag[0] = 1;
85 //printf("malloc works\n");
86 memcpy(((args*)kernels[j].arguments)->param[0], &star, sizeof(int));
87
88 //printf("I am kernel of index %d, with a value of %d\n", j, ((args*)kernels[j].arguments)->param[0]);
89
90 //((args*)kernels[j].arguments)->param[1] = one;
91
92
93
94 }
95
96 //printf("assigned properly\n");
97
98 for (int k = 0; k < numKernels; k++)
99 {
100 clReleaseKernel(kernels[k]);
101 }
102
103 for (int k = 0; k < numKernels; k++)
104 {
105 //free(((args*)kernels[k].arguments)->param[0]);
106 }
107
108
109 free(one);
110 free(arguments);
111 return 0;
112}
113
114
Note: See TracBrowser for help on using the repository browser.