コード例 #1
0
OCL_Program::~OCL_Program()
{
	cl_int ret;
	ret = clReleaseProgram( m_program );
	CLERR(ret);

	for( int i = 0; i < m_kernels.size(); i++ )
	{
		ret = clReleaseKernel( m_kernels[i] );
		CLERR(ret);
	}
}
コード例 #2
0
void OCL_Environment::InitOpenCL()
{
	cl_int ret;

	// Get platform info
	ret = clGetPlatformIDs( 1, &m_platformId, &m_numPlatforms );
	CLERR(ret)

	// Get device info
	ret = clGetDeviceIDs( m_platformId, CL_DEVICE_TYPE_GPU, 1, &m_deviceId, &m_numDevices );
	CLERR(ret)

	// Create OpenCL context
	m_context = clCreateContext( 0, 1, &m_deviceId, 0, 0, &ret );
	CLERR(ret)

	// Create command queue
	m_commandQueue = clCreateCommandQueue( m_context, m_deviceId, 0, &ret );
	CLERR(ret)
}
コード例 #3
0
void OCL_Environment::Release()
{
	cl_int ret;

	// Release OpenCL Resources
	ret = clFlush( m_commandQueue );
	CLERR(ret);
	ret = clFinish( m_commandQueue );
	CLERR(ret);
	ret = clReleaseCommandQueue( m_commandQueue );
	CLERR(ret);
	ret = clReleaseContext( m_context );
	CLERR(ret);
	
	for( int i = 0; i < programs.size(); i++ )
	{
		ReleaseProgram( &programs[i] );
	}
	
}
コード例 #4
0
ファイル: ext_OpenCL.c プロジェクト: Rich5/oclHashcat
const char *val2cstr_cl (cl_int CL_err)
{
  #define CLERR(a) case a: return #a

  switch (CL_err)
  {
    CLERR (CL_BUILD_PROGRAM_FAILURE);
    CLERR (CL_COMPILER_NOT_AVAILABLE);
    CLERR (CL_DEVICE_NOT_FOUND);
    CLERR (CL_INVALID_ARG_INDEX);
    CLERR (CL_INVALID_ARG_SIZE);
    CLERR (CL_INVALID_ARG_VALUE);
    CLERR (CL_INVALID_BINARY);
    CLERR (CL_INVALID_BUFFER_SIZE);
    CLERR (CL_INVALID_BUILD_OPTIONS);
    CLERR (CL_INVALID_COMMAND_QUEUE);
    CLERR (CL_INVALID_CONTEXT);
    CLERR (CL_INVALID_DEVICE);
    CLERR (CL_INVALID_DEVICE_TYPE);
    CLERR (CL_INVALID_EVENT);
    CLERR (CL_INVALID_EVENT_WAIT_LIST);
    CLERR (CL_INVALID_GLOBAL_OFFSET);
    CLERR (CL_INVALID_HOST_PTR);
    CLERR (CL_INVALID_KERNEL);
    CLERR (CL_INVALID_KERNEL_ARGS);
    CLERR (CL_INVALID_KERNEL_DEFINITION);
    CLERR (CL_INVALID_KERNEL_NAME);
    CLERR (CL_INVALID_MEM_OBJECT);
    CLERR (CL_INVALID_OPERATION);
    CLERR (CL_INVALID_PLATFORM);
    CLERR (CL_INVALID_PROGRAM);
    CLERR (CL_INVALID_PROGRAM_EXECUTABLE);
    CLERR (CL_INVALID_QUEUE_PROPERTIES);
    CLERR (CL_INVALID_SAMPLER);
    CLERR (CL_INVALID_VALUE);
    CLERR (CL_INVALID_WORK_DIMENSION);
    CLERR (CL_INVALID_WORK_GROUP_SIZE);
    CLERR (CL_INVALID_WORK_ITEM_SIZE);
    CLERR (CL_MISALIGNED_SUB_BUFFER_OFFSET);
    CLERR (CL_MAP_FAILURE);
    CLERR (CL_MEM_COPY_OVERLAP);
    CLERR (CL_MEM_OBJECT_ALLOCATION_FAILURE);
    CLERR (CL_OUT_OF_HOST_MEMORY);
    CLERR (CL_OUT_OF_RESOURCES);
  }

  return "CL_UNKNOWN_ERROR";
}
コード例 #5
0
void OCL_Program::AddKernel( const char* kernel_name )
{
	cl_int ret;
	m_kernels.push_back( clCreateKernel( m_program, kernel_name, &ret ) );
	CLERR(ret);
}
コード例 #6
0
ファイル: ext_OpenCL.c プロジェクト: Duncaen/hashcat
const char *val2cstr_cl (cl_int CL_err)
{
  #define CLERR(a) case a: return #a

  switch (CL_err)
  {
    /**
     * OpenCL runtime errors
     */

    #if defined (CL_VERSION_1_0)
    CLERR (CL_SUCCESS);
    CLERR (CL_DEVICE_NOT_FOUND);
    CLERR (CL_DEVICE_NOT_AVAILABLE);
    CLERR (CL_COMPILER_NOT_AVAILABLE);
    CLERR (CL_MEM_OBJECT_ALLOCATION_FAILURE);
    CLERR (CL_OUT_OF_RESOURCES);
    CLERR (CL_OUT_OF_HOST_MEMORY);
    CLERR (CL_PROFILING_INFO_NOT_AVAILABLE);
    CLERR (CL_MEM_COPY_OVERLAP);
    CLERR (CL_IMAGE_FORMAT_MISMATCH);
    CLERR (CL_IMAGE_FORMAT_NOT_SUPPORTED);
    CLERR (CL_BUILD_PROGRAM_FAILURE);
    CLERR (CL_MAP_FAILURE);
    #endif

    #if defined (CL_VERSION_1_1)
    CLERR (CL_MISALIGNED_SUB_BUFFER_OFFSET);
    CLERR (CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST);
    #endif

    #if defined (CL_VERSION_1_2)
    CLERR (CL_COMPILE_PROGRAM_FAILURE);
    CLERR (CL_LINKER_NOT_AVAILABLE);
    CLERR (CL_LINK_PROGRAM_FAILURE);
    CLERR (CL_DEVICE_PARTITION_FAILED);
    CLERR (CL_KERNEL_ARG_INFO_NOT_AVAILABLE);
    #endif

    /**
     * OpenCL compile-time errors
     */

    #if defined (CL_VERSION_1_0)
    CLERR (CL_INVALID_VALUE);
    CLERR (CL_INVALID_DEVICE_TYPE);
    CLERR (CL_INVALID_PLATFORM);
    CLERR (CL_INVALID_DEVICE);
    CLERR (CL_INVALID_CONTEXT);
    CLERR (CL_INVALID_QUEUE_PROPERTIES);
    CLERR (CL_INVALID_COMMAND_QUEUE);
    CLERR (CL_INVALID_HOST_PTR);
    CLERR (CL_INVALID_MEM_OBJECT);
    CLERR (CL_INVALID_IMAGE_FORMAT_DESCRIPTOR);
    CLERR (CL_INVALID_IMAGE_SIZE);
    CLERR (CL_INVALID_SAMPLER);
    CLERR (CL_INVALID_BINARY);
    CLERR (CL_INVALID_BUILD_OPTIONS);
    CLERR (CL_INVALID_PROGRAM);
    CLERR (CL_INVALID_PROGRAM_EXECUTABLE);
    CLERR (CL_INVALID_KERNEL_NAME);
    CLERR (CL_INVALID_KERNEL_DEFINITION);
    CLERR (CL_INVALID_KERNEL);
    CLERR (CL_INVALID_ARG_INDEX);
    CLERR (CL_INVALID_ARG_VALUE);
    CLERR (CL_INVALID_ARG_SIZE);
    CLERR (CL_INVALID_KERNEL_ARGS);
    CLERR (CL_INVALID_WORK_DIMENSION);
    CLERR (CL_INVALID_WORK_GROUP_SIZE);
    CLERR (CL_INVALID_WORK_ITEM_SIZE);
    CLERR (CL_INVALID_GLOBAL_OFFSET);
    CLERR (CL_INVALID_EVENT_WAIT_LIST);
    CLERR (CL_INVALID_EVENT);
    CLERR (CL_INVALID_OPERATION);
    CLERR (CL_INVALID_GL_OBJECT);
    CLERR (CL_INVALID_BUFFER_SIZE);
    CLERR (CL_INVALID_MIP_LEVEL);
    CLERR (CL_INVALID_GLOBAL_WORK_SIZE);
    #endif

    #if defined (CL_VERSION_1_1)
    CLERR (CL_INVALID_PROPERTY);
    #endif

    #if defined (CL_VERSION_1_2)
    CLERR (CL_INVALID_IMAGE_DESCRIPTOR);
    CLERR (CL_INVALID_COMPILER_OPTIONS);
    CLERR (CL_INVALID_LINKER_OPTIONS);
    CLERR (CL_INVALID_DEVICE_PARTITION_COUNT);
    #endif

    #if defined (CL_VERSION_2_0)
    CLERR (CL_INVALID_PIPE_SIZE);
    CLERR (CL_INVALID_DEVICE_QUEUE);
    #endif

    /**
     * OpenCL extension error values
     */

    #if defined (__OPENCL_CL_GL_H) && defined (cl_khr_gl_sharing)
    CLERR (CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR);
    #endif

    #if defined (__CL_EXT_H) && defined (cl_khr_icd)
    CLERR (CL_PLATFORM_NOT_FOUND_KHR);
    #else
    case -1001: return "CL_PLATFORM_NOT_FOUND_KHR";
    #endif

    #if defined (__OPENCL_CL_D3D10_H)
    CLERR (CL_INVALID_D3D10_DEVICE_KHR);
    CLERR (CL_INVALID_D3D10_RESOURCE_KHR);
    CLERR (CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR);
    CLERR (CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR);
    #endif

    #if defined (__OPENCL_CL_D3D11_H)
    CLERR (CL_INVALID_D3D11_DEVICE_KHR);
    CLERR (CL_INVALID_D3D11_RESOURCE_KHR);
    CLERR (CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR);
    CLERR (CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR);
    #endif

    #if defined (__OPENCL_CL_DX9_MEDIA_SHARING_H)
    CLERR (CL_INVALID_DX9_MEDIA_ADAPTER_KHR);
    CLERR (CL_INVALID_DX9_MEDIA_SURFACE_KHR);
    CLERR (CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR);
    CLERR (CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR);
    #endif

    #if defined (__CL_EXT_H) && defined (cl_ext_device_fission)
    CLERR (CL_DEVICE_PARTITION_FAILED_EXT);
    CLERR (CL_INVALID_PARTITION_COUNT_EXT);
    CLERR (CL_INVALID_PARTITION_NAME_EXT);
    #endif

    #if defined (__OPENCL_CL_EGL_H)
    CLERR (CL_EGL_RESOURCE_NOT_ACQUIRED_KHR);
    CLERR (CL_INVALID_EGL_OBJECT_KHR);
    #endif

    #if defined (__CL_EXT_H) && defined (cl_intel_accelerator)
    CLERR (CL_INVALID_ACCELERATOR_INTEL);
    CLERR (CL_INVALID_ACCELERATOR_TYPE_INTEL);
    CLERR (CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL);
    CLERR (CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL);
    #endif
  }

  #undef CLERR

  return "CL_UNKNOWN_ERROR";
}