Accelerating Pattern Matching with OpenCL by Fraser Adams

Accelerating Pattern Matching with OpenCL by Fraser Adams

Author:Fraser Adams [Adams, Fraser]
Language: eng
Format: azw3
Publisher: Fraser Adams
Published: 2017-09-30T04:00:00+00:00


queue.enqueueWriteBuffer(inputBuffer, CL_TRUE, 0, size, input.data()); /** * The kernel processes the input characters in groups of * four (OpenCL int), so we therefore need to calculate * our global work size in terms of how many OpenCL * integers it comprises. The computed global work size is * then rounded up to a multiple of the local work-group * size (thread block size). */ // Number of OpenCL integers that would completely // contain the input bytes. const cl_int n = (size + sizeof(cl_int) - 1)/sizeof(cl_int); // Given n round up if necessary to a multiple // of WORK_GROUP_SIZE. const auto r = n % WORK_GROUP_SIZE; const auto global = (r == 0) ? n : n + WORK_GROUP_SIZE - r; const cl_int initialState = dictionary->initialState; pfacKernel.setArg(0, initialTransitions); pfacKernel.setArg(1, hashRow); pfacKernel.setArg(2, hashVal); pfacKernel.setArg(3, initialState); pfacKernel.setArg(4, inputBuffer); pfacKernel.setArg(5, outputBuffer); pfacKernel.setArg(6, size); pfacKernel.setArg(7, n); queue.enqueueNDRangeKernel(pfacKernel, cl::NullRange, cl::NDRange(global), cl::NDRange(WORK_GROUP_SIZE)); queue.enqueueReadBuffer(outputBuffer, CL_TRUE, 0, size*sizeof(cl_int), output.data());



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.