OpenCL* for CPU
Ask questions and share information on Intel® SDK for OpenCL™ Applications and OpenCL™ implementations for Intel® CPU.
Announcements
This forum covers OpenCL* for CPU only. OpenCL* for GPU questions can be asked in the GPU Compute Software forum. Intel® FPGA SDK for OpenCL™ questions can be ask in the FPGA Intel® High Level Design forum.
1719 Discussions

No image object were created with Intel HD 4400 and 4600

ChangYoun_C_1
Beginner
695 Views

Hello, 

As you can see the subject, I can't create image object with my Intel HD graphics.

I have 3 computers that each computer has 'NVidia', 'Intel HD 4400', 'Intel HD 4600' graphic chip-set. Initially made program and kernels with NVidia first. And now, I tried to run my application on other computers but it failed.

Intel HD graphic chip-set returns 'CL_INVALID_IMAGE_DESCRIPTOR(-65)' for create image with cl::Image2D(...) .

I am using Windows 7, Intel OpenCL SDK for build. and 10.18.10.3496 driver for Intel HD graphics. I have saw Intel HD graphics OpenCL driver version is 1.2 and succeed image creation from OpenGL texture sharing. So, I tested which image format is supported by Intel HD graphics.

Here is the source code for doing test,

const cl_channel_order channel_order_value[] = {
CL_R,
CL_A,
CL_RG,
CL_RA,
CL_RGB,
CL_RGBA,
CL_BGRA,
CL_ARGB,
CL_INTENSITY,
CL_LUMINANCE,
CL_Rx,
CL_RGx,
CL_RGBx,
CL_DEPTH,
CL_DEPTH_STENCIL
};

const cl_channel_type channel_type_value[] = {
CL_SNORM_INT8,
CL_SNORM_INT16,
CL_UNORM_INT8,
CL_UNORM_INT16,
CL_UNORM_SHORT_565,
CL_UNORM_SHORT_555,
CL_UNORM_INT_101010,
CL_SIGNED_INT8,
CL_SIGNED_INT16,
CL_SIGNED_INT32,
CL_UNSIGNED_INT8,
CL_UNSIGNED_INT16,
CL_UNSIGNED_INT32,
CL_HALF_FLOAT,
CL_FLOAT,
CL_UNORM_INT24
};

const char* channel_order_name[] = { "CL_R",
                                    "CL_A",
                                    "CL_RG",
                                    "CL_RA",
                                    "CL_RGB",
                                    "CL_RGBA",
                                    "CL_BGRA",
                                    "CL_ARGB",
                                    "CL_INTENSITY",
                                    "CL_LUMINANCE",
                                    "CL_Rx",
                                    "CL_RGx",
                                    "CL_RGBx",
                                    "CL_DEPTH",
                                    "CL_DEPTH_STENCIL" 
};

const char* channel_type_name[] = { "CL_SNORM_INT8",
                                    "CL_SNORM_INT16",
                                    "CL_UNORM_INT8",
                                    "CL_UNORM_INT16",
                                    "CL_UNORM_SHORT_565",
                                    "CL_UNORM_SHORT_555",
                                    "CL_UNORM_INT_101010",
                                    "CL_SIGNED_INT8",
                                    "CL_SIGNED_INT16",
                                    "CL_SIGNED_INT32",
                                    "CL_UNSIGNED_INT8",
                                    "CL_UNSIGNED_INT16",
                                    "CL_UNSIGNED_INT32",
                                    "CL_HALF_FLOAT",
                                    "CL_FLOAT",
                                    "CL_UNORM_INT24"
};

void doImageCreationTest()
{
    cl_int err = CL_SUCCESS;

    for (int order = 0; order < 15; ++order)
    {
        for (int type = 0; type < 16; ++type)
        {
            err = CL_SUCCESS;
            cl::Image2D img = cl::Image2D(context, CL_MEM_READ_WRITE, cl::ImageFormat(channel_order_value[order], channel_type_value[type]), 512, 512, 0, 0, &err);
            if (err == CL_SUCCESS)
            {
                cout << "=> " << channel_order_name[order] << " with " << channel_type_name[type] << endl;
            }
        }
    }
}

result:

[NVIDIA]

=> CL_R with CL_SNORM_INT8
=> CL_R with CL_SNORM_INT16
=> CL_R with CL_UNORM_INT8
=> CL_R with CL_UNORM_INT16
=> CL_R with CL_SIGNED_INT8
=> CL_R with CL_SIGNED_INT16
=> CL_R with CL_SIGNED_INT32
=> CL_R with CL_UNSIGNED_INT8
=> CL_R with CL_UNSIGNED_INT16
=> CL_R with CL_UNSIGNED_INT32
=> CL_R with CL_HALF_FLOAT
=> CL_R with CL_FLOAT
=> CL_A with CL_SNORM_INT8
=> CL_A with CL_SNORM_INT16
=> CL_A with CL_UNORM_INT8
=> CL_A with CL_UNORM_INT16
=> CL_A with CL_SIGNED_INT8
=> CL_A with CL_SIGNED_INT16
=> CL_A with CL_SIGNED_INT32
=> CL_A with CL_UNSIGNED_INT8
=> CL_A with CL_UNSIGNED_INT16
=> CL_A with CL_UNSIGNED_INT32
=> CL_A with CL_HALF_FLOAT
=> CL_A with CL_FLOAT
=> CL_RG with CL_SNORM_INT8
=> CL_RG with CL_SNORM_INT16
=> CL_RG with CL_UNORM_INT8
=> CL_RG with CL_UNORM_INT16
=> CL_RG with CL_SIGNED_INT8
=> CL_RG with CL_SIGNED_INT16
=> CL_RG with CL_SIGNED_INT32
=> CL_RG with CL_UNSIGNED_INT8
=> CL_RG with CL_UNSIGNED_INT16
=> CL_RG with CL_UNSIGNED_INT32
=> CL_RG with CL_HALF_FLOAT
=> CL_RG with CL_FLOAT
=> CL_RA with CL_SNORM_INT8
=> CL_RA with CL_SNORM_INT16
=> CL_RA with CL_UNORM_INT8
=> CL_RA with CL_UNORM_INT16
=> CL_RA with CL_SIGNED_INT8
=> CL_RA with CL_SIGNED_INT16
=> CL_RA with CL_SIGNED_INT32
=> CL_RA with CL_UNSIGNED_INT8
=> CL_RA with CL_UNSIGNED_INT16
=> CL_RA with CL_UNSIGNED_INT32
=> CL_RA with CL_HALF_FLOAT
=> CL_RA with CL_FLOAT
=> CL_RGB with CL_SNORM_INT8
=> CL_RGB with CL_SNORM_INT16
=> CL_RGB with CL_UNORM_INT8
=> CL_RGB with CL_UNORM_INT16
=> CL_RGB with CL_UNORM_SHORT_565
=> CL_RGB with CL_UNORM_SHORT_555
=> CL_RGB with CL_UNORM_INT_101010
=> CL_RGB with CL_SIGNED_INT8
=> CL_RGB with CL_SIGNED_INT16
=> CL_RGB with CL_SIGNED_INT32
=> CL_RGB with CL_UNSIGNED_INT8
=> CL_RGB with CL_UNSIGNED_INT16
=> CL_RGB with CL_UNSIGNED_INT32
=> CL_RGB with CL_HALF_FLOAT
=> CL_RGB with CL_FLOAT
=> CL_RGBA with CL_SNORM_INT8
=> CL_RGBA with CL_SNORM_INT16
=> CL_RGBA with CL_UNORM_INT8
=> CL_RGBA with CL_UNORM_INT16
=> CL_RGBA with CL_SIGNED_INT8
=> CL_RGBA with CL_SIGNED_INT16
=> CL_RGBA with CL_SIGNED_INT32
=> CL_RGBA with CL_UNSIGNED_INT8
=> CL_RGBA with CL_UNSIGNED_INT16
=> CL_RGBA with CL_UNSIGNED_INT32
=> CL_RGBA with CL_HALF_FLOAT
=> CL_RGBA with CL_FLOAT
=> CL_BGRA with CL_SNORM_INT8
=> CL_BGRA with CL_SNORM_INT16
=> CL_BGRA with CL_UNORM_INT8
=> CL_BGRA with CL_UNORM_INT16
=> CL_BGRA with CL_SIGNED_INT8
=> CL_BGRA with CL_SIGNED_INT16
=> CL_BGRA with CL_SIGNED_INT32
=> CL_BGRA with CL_UNSIGNED_INT8
=> CL_BGRA with CL_UNSIGNED_INT16
=> CL_BGRA with CL_UNSIGNED_INT32
=> CL_BGRA with CL_HALF_FLOAT
=> CL_BGRA with CL_FLOAT
=> CL_ARGB with CL_SNORM_INT8
=> CL_ARGB with CL_SNORM_INT16
=> CL_ARGB with CL_UNORM_INT8
=> CL_ARGB with CL_UNORM_INT16
=> CL_ARGB with CL_SIGNED_INT8
=> CL_ARGB with CL_SIGNED_INT16
=> CL_ARGB with CL_SIGNED_INT32
=> CL_ARGB with CL_UNSIGNED_INT8
=> CL_ARGB with CL_UNSIGNED_INT16
=> CL_ARGB with CL_UNSIGNED_INT32
=> CL_ARGB with CL_HALF_FLOAT
=> CL_ARGB with CL_FLOAT
=> CL_INTENSITY with CL_SNORM_INT8
=> CL_INTENSITY with CL_SNORM_INT16
=> CL_INTENSITY with CL_UNORM_INT8
=> CL_INTENSITY with CL_UNORM_INT16
=> CL_INTENSITY with CL_SIGNED_INT8
=> CL_INTENSITY with CL_SIGNED_INT16
=> CL_INTENSITY with CL_SIGNED_INT32
=> CL_INTENSITY with CL_UNSIGNED_INT8
=> CL_INTENSITY with CL_UNSIGNED_INT16
=> CL_INTENSITY with CL_UNSIGNED_INT32
=> CL_INTENSITY with CL_HALF_FLOAT
=> CL_INTENSITY with CL_FLOAT
=> CL_LUMINANCE with CL_SNORM_INT8
=> CL_LUMINANCE with CL_SNORM_INT16
=> CL_LUMINANCE with CL_UNORM_INT8
=> CL_LUMINANCE with CL_UNORM_INT16
=> CL_LUMINANCE with CL_SIGNED_INT8
=> CL_LUMINANCE with CL_SIGNED_INT16
=> CL_LUMINANCE with CL_SIGNED_INT32
=> CL_LUMINANCE with CL_UNSIGNED_INT8
=> CL_LUMINANCE with CL_UNSIGNED_INT16
=> CL_LUMINANCE with CL_UNSIGNED_INT32
=> CL_LUMINANCE with CL_HALF_FLOAT
=> CL_LUMINANCE with CL_FLOAT
=> CL_DEPTH with CL_SNORM_INT8
=> CL_DEPTH with CL_SNORM_INT16
=> CL_DEPTH with CL_UNORM_INT8
=> CL_DEPTH with CL_UNORM_INT16
=> CL_DEPTH with CL_SIGNED_INT8
=> CL_DEPTH with CL_SIGNED_INT16
=> CL_DEPTH with CL_SIGNED_INT32
=> CL_DEPTH with CL_UNSIGNED_INT8
=> CL_DEPTH with CL_UNSIGNED_INT16
=> CL_DEPTH with CL_UNSIGNED_INT32
=> CL_DEPTH with CL_HALF_FLOAT
=> CL_DEPTH with CL_FLOAT

But Intel HD cannot create any type of images.

What would I do for Intel HD graphics?

I am sorry for my poor English.

0 Kudos
6 Replies
Robert_I_Intel
Employee
695 Views

Could you please download and install the latest and greatest driver here: https://downloadcenter.intel.com/product/81497/Intel-HD-Graphics-4400-for-4th-Generation-Intel-Core-Processors and try it again.

0 Kudos
ChangYoun_C_1
Beginner
695 Views

Hi Robert, I have download and installed the latest driver successfully but I still getting error with image creation.

And I have confirmed my OS is not Windows7 but Windows 7 Embedded Standard (64bit).

The processor that I saw in System property is "Intel(R) Core(TM) i5-4300U  CPU @ 1.90GHz 2.50 GHz". New display adapters device driver version is '10.18.14.4264' with driver date '8/4/2015'.

Would you please let me know what I do next?

0 Kudos
Robert_I_Intel
Employee
695 Views

Hi Changyoun,

I successfully ran your code on a couple of my machines: one with Windows 8.1 with 3rd Gen Chip and the other with Windows 10 with 5th gen chip (see results below). I am wondering if what you are experiencing has something to do with Windows 7 Embedded - not sure if that is a supported platform. Do you have display connected to that platform? Are you able to run simple OpenCL kernels, create buffers ?

Thanks!

Robert

 

Windows 10:

=> CL_R with CL_SNORM_INT8
=> CL_R with CL_SNORM_INT16
=> CL_R with CL_UNORM_INT8
=> CL_R with CL_UNORM_INT16
=> CL_R with CL_SIGNED_INT8
=> CL_R with CL_SIGNED_INT16
=> CL_R with CL_SIGNED_INT32
=> CL_R with CL_UNSIGNED_INT8
=> CL_R with CL_UNSIGNED_INT16
=> CL_R with CL_UNSIGNED_INT32
=> CL_R with CL_HALF_FLOAT
=> CL_R with CL_FLOAT
=> CL_A with CL_UNORM_INT8
=> CL_RG with CL_SNORM_INT8
=> CL_RG with CL_SNORM_INT16
=> CL_RG with CL_UNORM_INT8
=> CL_RG with CL_UNORM_INT16
=> CL_RG with CL_SIGNED_INT8
=> CL_RG with CL_SIGNED_INT16
=> CL_RG with CL_SIGNED_INT32
=> CL_RG with CL_UNSIGNED_INT8
=> CL_RG with CL_UNSIGNED_INT16
=> CL_RG with CL_UNSIGNED_INT32
=> CL_RG with CL_HALF_FLOAT
=> CL_RG with CL_FLOAT
=> CL_RGBA with CL_SNORM_INT8
=> CL_RGBA with CL_SNORM_INT16
=> CL_RGBA with CL_UNORM_INT8
=> CL_RGBA with CL_UNORM_INT16
=> CL_RGBA with CL_SIGNED_INT8
=> CL_RGBA with CL_SIGNED_INT16
=> CL_RGBA with CL_SIGNED_INT32
=> CL_RGBA with CL_UNSIGNED_INT8
=> CL_RGBA with CL_UNSIGNED_INT16
=> CL_RGBA with CL_UNSIGNED_INT32
=> CL_RGBA with CL_HALF_FLOAT
=> CL_RGBA with CL_FLOAT
=> CL_BGRA with CL_UNORM_INT8
=> CL_LUMINANCE with CL_UNORM_INT8
=> CL_LUMINANCE with CL_UNORM_INT16
=> CL_LUMINANCE with CL_HALF_FLOAT
=> CL_LUMINANCE with CL_FLOAT
=> CL_DEPTH with CL_UNORM_INT16
=> CL_DEPTH with CL_FLOAT

Windows 8.1

=> CL_R with CL_UNORM_INT8
=> CL_R with CL_UNORM_INT16
=> CL_R with CL_SIGNED_INT8
=> CL_R with CL_SIGNED_INT16
=> CL_R with CL_SIGNED_INT32
=> CL_R with CL_UNSIGNED_INT8
=> CL_R with CL_UNSIGNED_INT16
=> CL_R with CL_UNSIGNED_INT32
=> CL_R with CL_HALF_FLOAT
=> CL_R with CL_FLOAT
=> CL_A with CL_UNORM_INT8
=> CL_RG with CL_UNORM_INT8
=> CL_RG with CL_UNORM_INT16
=> CL_RG with CL_SIGNED_INT8
=> CL_RG with CL_SIGNED_INT16
=> CL_RG with CL_SIGNED_INT32
=> CL_RG with CL_UNSIGNED_INT8
=> CL_RG with CL_UNSIGNED_INT16
=> CL_RG with CL_UNSIGNED_INT32
=> CL_RG with CL_HALF_FLOAT
=> CL_RG with CL_FLOAT
=> CL_RGBA with CL_UNORM_INT8
=> CL_RGBA with CL_UNORM_INT16
=> CL_RGBA with CL_SIGNED_INT8
=> CL_RGBA with CL_SIGNED_INT16
=> CL_RGBA with CL_SIGNED_INT32
=> CL_RGBA with CL_UNSIGNED_INT8
=> CL_RGBA with CL_UNSIGNED_INT16
=> CL_RGBA with CL_UNSIGNED_INT32
=> CL_RGBA with CL_HALF_FLOAT
=> CL_RGBA with CL_FLOAT
=> CL_BGRA with CL_UNORM_INT8
=> CL_LUMINANCE with CL_UNORM_INT8
=> CL_LUMINANCE with CL_UNORM_INT16
=> CL_LUMINANCE with CL_HALF_FLOAT
=> CL_LUMINANCE with CL_FLOAT
=> CL_DEPTH with CL_UNORM_INT16
=> CL_DEPTH with CL_FLOAT
 

0 Kudos
Robert_I_Intel
Employee
695 Views

BTW, which channel formats from NVidia list are important to you and are missing from the Intel lists that I provided?

Thanks!

 

0 Kudos
ChangYoun_C_
Beginner
695 Views
Hi Robert, As I know the driver will supports Windows 7 embedded standard.With my experience Intel HD, I have not succeed to create any type of image but buffer does. My expectation is both NVidia and Intel supports 1 channel luminance image type. (This type may be CL_R or CL_LUMINANCE with CL_UNORM_INT8) This is OK that your result has the format I expected. But finally I could not create image with my Intel HD. Anyway I have replaced my source code and kernels to use buffer instead to image, and it works fine. But I don't satisfy for the performance side since it takes double time to processed.
0 Kudos
Robert_I_Intel
Employee
695 Views

ChangYoun,

Regarding the performance of the buffer code: make sure to allocate you buffers the right way. See https://software.intel.com/en-us/articles/getting-the-most-from-opencl-12-how-to-increase-performance-by-minimizing-buffer-copies-on-intel-processor-graphics

0 Kudos
Reply