CLDevice::CLDevice() { std::vector<cl::Platform> platforms; std::vector<cl::Device> devices; // Can ignore return value, checking the vector size instead cl::Platform::get(&platforms); if (platforms.size() > 0) { cl::Platform default_platform = platforms[0]; // Can ignore the return value, checking the vector size instead default_platform.getDevices(CL_DEVICE_TYPE_GPU, &devices); if (devices.size() > 0) { default_device = devices[0]; } else { throw CLException("No devices found\n"); } } else { throw CLException("No platforms found\n"); } }
void BufferManager::cleanUp(GPUElement* gpuElement, JNIEnv *jenv) { cl_int status = CL_SUCCESS; if (gpuElement->javaObject != NULL) { jenv->DeleteGlobalRef(gpuElement->javaObject); if (config->isVerbose()){ fprintf(stderr, "DeleteGlobalRef for %p\n", gpuElement->javaObject); } } if (gpuElement->mem != 0) { if (config->isTrackingOpenCLResources()){ memList.remove(gpuElement->mem,__LINE__, __FILE__); } status = clReleaseMemObject((cl_mem)gpuElement->mem); if(status != CL_SUCCESS) throw CLException(status, "clReleaseMemObject()"); gpuElement->mem = (cl_mem) 0; } delete(gpuElement); }