| 55 | )"; |
| 56 | |
| 57 | void kernel(cl::Buffer& devOut, cl::CommandQueue& queue, int fnCode) |
| 58 | { |
| 59 | static std::once_flag compileFlag; |
| 60 | static cl::Program prog; |
| 61 | static cl::Kernel kern; |
| 62 | |
| 63 | std::call_once(compileFlag, |
| 64 | [queue]() { |
| 65 | prog = cl::Program(queue.getInfo<CL_QUEUE_CONTEXT>(), sinf_ocl_kernel, true); |
| 66 | kern = cl::Kernel(prog, "sinf"); |
| 67 | }); |
| 68 | |
| 69 | static const NDRange global(DATA_SIZE * 2); |
| 70 | |
| 71 | kern.setArg(0, devOut); |
| 72 | kern.setArg(1, dx); |
| 73 | kern.setArg(2, DATA_SIZE); |
| 74 | kern.setArg(3, fnCode); |
| 75 | queue.enqueueNDRangeKernel(kern, cl::NullRange, global); |
| 76 | } |
| 77 | |
| 78 | int main(void) |
| 79 | { |