source: CIVL/examples/translation/opencl/square.cvl@ aef8b11

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

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

  • Property mode set to 100644
File size: 2.3 KB
RevLine 
[9c7b25c]1#include <civlc.h>
2#include <stdio.h>
[6777880]3#include "setup/openCL.cvl"
[8472eb5]4
5//this is the kernel that gets loaded into the program
6// Simple compute kernel which computes the square of an input array
7//CIVL can't turn a string into a function at this time
8
[2259218]9//const char *KernelSource = "__kernel void square( __global float* input, __global float* output, const unsigned int count){ int i = get_global_id(0); if(i < count) output[i] = input[i] * input[i];}";
[8472eb5]10
[2259218]11// Simple compute kernel which computes the square of an input array
12//
13const char *KernelSource = "\n" \
14"__kernel void square( \n" \
15" __global float* input, \n" \
16" __global float* output, \n" \
17" const unsigned int count) \n" \
18"{ \n" \
19" int i = get_global_id(0); \n" \
20" if(i < count) \n" \
21" output[i] = input[i] * input[i]; \n" \
22"} \n" \
23"\n";
[8472eb5]24/*
25void square(float* input, float* output, const unsigned int count)
26{
27 int i = get_global_id(0);
28 if (i < count)
29 {
30 output[i] = input[i] * input[i];
31 }
32}
33*/
[e01b89d]34void main()
35{
36 int err;
[9c7b25c]37 int num_entries = 3;
38
39 cl_device_id device_id;
[0744ab0]40 cl_context context;
41 cl_command_queue commands;
[8472eb5]42 cl_program program;
43 cl_kernel kernel;
[9c7b25c]44
[0744ab0]45 //assumes you have hardware that works, does not check that part
[8472eb5]46 //fills the device_id with device ids, returns CL_SUCCESS if it works
[9c7b25c]47 err = clGetDeviceIDs(NULL,
48 CL_DEVICE_TYPE_GPU,
49 num_entries,
50 &device_id,
51 NULL);
52 printf("devices is %d", device_id[0]);
53 $assert (err == CL_SUCCESS);
[0744ab0]54
[8472eb5]55 //Returns a context, which has device information
[0744ab0]56 context = clCreateContext(0, 1, &device_id, NULL, NULL, &err);
57 $assert (context != NULL);
58
[8472eb5]59 commands = clCreateCommandQueue(context, device_id, 0, &err);
60 $assert (commands != NULL);
61
62 program = clCreateProgramWithSource(context, 1, (const char **) & KernelSource, NULL, &err);
[1a54e12]63 $assert (program != NULL);
64
[e8b328b]65 //err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL);
[9c7b25c]66}
Note: See TracBrowser for help on using the repository browser.