#include #include #include #include "cl_simple.h" int main (int argc, char ** argv) { struct cl_simple_context context; int out[4]; unsigned out_size = sizeof(out); cl_mem input_buffer; int in[4] = {1, 2, 3, 4}; unsigned in_size = sizeof(in); size_t global_work_size = 1; unsigned i, pass; if (!clSimpleSimpleInit(&context, "vec_load")) { return EXIT_FAILURE; } if (!clSimpleCreateBuffer(&input_buffer, context.cl_ctx, CL_MEM_READ_ONLY, in_size)) { return EXIT_FAILURE; } if (!clSimpleEnqueueWriteBuffer(context.command_queue, input_buffer, in_size, in)) { return EXIT_FAILURE; } if (!clSimpleSetOutputBuffer(&context, out_size)) { return EXIT_FAILURE; } if (!clSimpleKernelSetArg(context.kernel, 1, sizeof(cl_mem), &input_buffer)){ return EXIT_FAILURE; } if (!clSimpleEnqueueNDRangeKernel(context.command_queue, context.kernel, 1, &global_work_size, &global_work_size)) { return EXIT_FAILURE; } if (!clSimpleReadOutput(&context, out, out_size)) { return EXIT_FAILURE; } pass = 1; for (i = 0; i < 4; i++) { if (out[i] != in[i]) { fprintf(stderr, "Index %u: expected %d, found %d\n", i, in[i], out[i]); pass = 0; } } if (pass) { fprintf(stderr, "Pass\n"); return EXIT_SUCCESS; } else { fprintf(stderr, "Fail\n"); return EXIT_FAILURE; } }