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");
    }
}
Esempio n. 2
0
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);
}