// Free the resources allocated during initialization void cleanup() { for(unsigned i = 0; i < num_devices; ++i) { if(kernel && kernel[i]) { clReleaseKernel(kernel[i]); } if(queue && queue[i]) { clReleaseCommandQueue(queue[i]); } #if USE_SVM_API == 0 if(input_a_buf && input_a_buf[i]) { clReleaseMemObject(input_a_buf[i]); } if(input_b_buf && input_b_buf[i]) { clReleaseMemObject(input_b_buf[i]); } if(output_buf && output_buf[i]) { clReleaseMemObject(output_buf[i]); } #else if(input_a[i].get()) input_a[i].reset(); if(output[i].get()) output[i].reset(); #endif /* USE_SVM_API == 0 */ } #if USE_SVM_API == 1 if(input_b.get()) input_b.reset(); #endif /* USE_SVM_API == 1 */ if(program) { clReleaseProgram(program); } if(context) { clReleaseContext(context); } }