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

Function generatePoints

examples/opencl/stream.cpp:89–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89void generatePoints(Buffer& points, Buffer &dirs, Buffer& colors,
90 CommandQueue& queue, Device& device)
91{
92 static bool compileFlag = true;
93
94 static cl::Program prog;
95 static cl::Kernel pointGenKernel;
96 static cl::Kernel colorsKernel;
97
98 if (compileFlag) {
99 try {
100 prog = cl::Program(queue.getInfo<CL_QUEUE_CONTEXT>(), streamKernel, false);
101
102 std::vector<cl::Device> devs;
103 devs.push_back(device);
104 prog.build(devs);
105
106 pointGenKernel = cl::Kernel(prog, "pointGenKernel");
107 colorsKernel = cl::Kernel(prog, "genColorsKernel");
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(8, 8);
119 int blk_x = divup(NELEMS, (int)(local[0]));
120 int blk_y = divup(NELEMS, (int)(local[1]));
121
122 NDRange global(NELEMS * local[0] * blk_x, local[1] * blk_y);
123
124 pointGenKernel.setArg(0, points);
125 pointGenKernel.setArg(1, dirs);
126 pointGenKernel.setArg(2, blk_x);
127 pointGenKernel.setArg(3, NELEMS);
128 pointGenKernel.setArg(4, MINIMUM);
129 pointGenKernel.setArg(5, STEP);
130 queue.enqueueNDRangeKernel(pointGenKernel, cl::NullRange, global, local);
131 const int numElems = NELEMS*NELEMS*NELEMS;
132 static const NDRange thrds(64, 1);
133 NDRange glob(thrds[0] * divup(numElems, (int)(thrds[0])), (int)(thrds[1]));
134
135 colorsKernel.setArg(0, colors);
136 colorsKernel.setArg(1, NELEMS);
137 queue.enqueueNDRangeKernel(colorsKernel, cl::NullRange, glob, thrds);
138}
139
140int main(void)
141{

Callers 1

mainFunction · 0.70

Calls 1

divupFunction · 0.70

Tested by

no test coverage detected