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

1.23 2.0 acw/focus-triggers main test-branch
Last change on this file since c2a3f74 was efe0043, checked in by Jacob Trieu <fuufusuu@…>, 12 years ago

changes to format of translation

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

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