aboutsummaryrefslogtreecommitdiff
path: root/trampoline.c
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2017-11-19 23:12:13 +1300
committerDavid Phillips <david@sighup.nz>2018-04-24 17:11:30 +1200
commit27e9f33ed36c10b1a4e34c0ebc86d87ab2cfb5ff (patch)
treed1d5ea55e9875d83c41b1fbb572a420850102fc3 /trampoline.c
parent036c470e94c278aeddcd9528f857eb66809ac7d6 (diff)
downloadsand-leek-27e9f33ed36c10b1a4e34c0ebc86d87ab2cfb5ff.tar.xz
Initial dump of SHA CL port
Diffstat (limited to 'trampoline.c')
-rw-r--r--trampoline.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/trampoline.c b/trampoline.c
index bfbc508..bebb160 100644
--- a/trampoline.c
+++ b/trampoline.c
@@ -193,9 +193,15 @@ void tramp_destroy()
{
clReleaseKernel(kernel);
clReleaseProgram(program);
+ clFlush(command_queue);
+ clFinish(command_queue);
clReleaseCommandQueue(command_queue);
clReleaseContext(context);
+ clReleaseMemObject(device_result);
+ clReleaseMemObject(device_sha);
+ clReleaseMemObject(device_search);
+
if (devices) {
free(devices);
devices = NULL;
@@ -322,11 +328,11 @@ int tramp_compile_kernel()
*
* FIXME investigate using something more flexible?
*/
-int tramp_set_kernel_args(unsigned int raw_len)
+int tramp_set_kernel_args(unsigned int raw_len, unsigned int bitmask)
{
cl_int ret = 0;
- device_result = clCreateBuffer(context, CL_MEM_WRITE_ONLY, 65536, NULL, &ret);
+ device_result = clCreateBuffer(context, CL_MEM_WRITE_ONLY, 65536*4, NULL, &ret);
if (ret != CL_SUCCESS) {
fprintf(stderr, "Failed to create buffer for slave device: %s ", get_cl_error_string(ret));
return 1;
@@ -368,6 +374,12 @@ int tramp_set_kernel_args(unsigned int raw_len)
return 1;
}
+ ret = clSetKernelArg(kernel, 4, sizeof(cl_int), &bitmask);
+ if (ret != CL_SUCCESS) {
+ fprintf(stderr, "Error on bitmask argument: %s ", get_cl_error_string(ret));
+ return 1;
+ }
+
return 0;
}
@@ -383,7 +395,7 @@ int tramp_run_kernel()
cl_event event;
cl_int ret = 0;
size_t workgroup_sizes[2];
- workgroup_sizes[0] = 65536;
+ workgroup_sizes[0] = 63356;
workgroup_sizes[1] = 1;
ret = clEnqueueNDRangeKernel(command_queue, kernel, 2, NULL, workgroup_sizes, NULL, 0, NULL, &event);