MCPcopy Create free account
hub / github.com/arrayfire/forge / kernel

Function kernel

examples/opencl/bubblechart.cpp:86–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84}
85
86void kernel(cl::Buffer& devOut, int fnCode, int outFlags,
87 cl::Buffer& colorsOut, cl::Buffer& alphasOut, cl::Buffer& radiiOut,
88 cl::CommandQueue& queue, cl::Device& device)
89{
90 static bool compileFlag = true;
91
92 static cl::Program prog;
93 static cl::Kernel randKernel, colorsKernel, mapKernel;
94
95 std::srand((unsigned)(std::time(0)));
96
97 if (compileFlag) {
98 try {
99 prog = cl::Program(queue.getInfo<CL_QUEUE_CONTEXT>(), chartKernels, false);
100
101 std::vector<cl::Device> devs;
102 devs.push_back(device);
103 prog.build(devs);
104
105 randKernel = cl::Kernel(prog, "randKernel");
106 colorsKernel = cl::Kernel(prog, "colorsKernel");
107 mapKernel = cl::Kernel(prog, "mapKernel");
108 } catch (cl::Error err) {
109 std::cout << "Compile Errors: " << std::endl;
110 std::cout << err.what() << err.err() << std::endl;
111 std::cout << prog.getBuildInfo<CL_PROGRAM_BUILD_LOG>(device) << std::endl;
112 exit(255);
113 }
114 std::cout<< "Kernels compiled successfully" << std::endl;
115 compileFlag = false;
116 }
117
118 static const NDRange local(32);
119 NDRange global(local[0] * divup(DATA_SIZE, (int)(local[0])));
120
121 mapKernel.setArg(0, devOut);
122 mapKernel.setArg(1, fnCode);
123 mapKernel.setArg(2, FRANGE_START);
124 mapKernel.setArg(3, DX);
125 mapKernel.setArg(4, DATA_SIZE);
126 queue.enqueueNDRangeKernel(mapKernel, cl::NullRange, global, local);
127
128 if (outFlags & 0x00000001) {
129 colorsKernel.setArg(0, colorsOut);
130 colorsKernel.setArg(1, std::rand());
131 colorsKernel.setArg(2, std::rand());
132 colorsKernel.setArg(3, std::rand());
133 colorsKernel.setArg(4, DATA_SIZE);
134 queue.enqueueNDRangeKernel(colorsKernel, cl::NullRange, global, local);
135 }
136
137 if (outFlags & 0x00000002) {
138 randKernel.setArg(0, alphasOut);
139 randKernel.setArg(1, std::rand());
140 randKernel.setArg(2, 0.0f);
141 randKernel.setArg(3, 1.0f);
142 randKernel.setArg(4, DATA_SIZE);
143 queue.enqueueNDRangeKernel(randKernel, cl::NullRange, global, local);

Callers 1

mainFunction · 0.70

Calls 1

divupFunction · 0.70

Tested by

no test coverage detected