| 87 | } |
| 88 | |
| 89 | void 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 | |
| 140 | int main(void) |
| 141 | { |