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.
1663 Discussions

Eclipse Code Builder - kernel arguments and configuration locked

MathieuT
Beginner
174 Views

Hello,

I 'm currently trying to deploy Intel OpenCL on the GPU of my Intel(R) Xeon(R) CPU E3-1505M v5 @ 2.80GHz on Centos 7.1. My configuration is :

- intel_sdk_for_opencl_2016_6.3.0.1904_x64.tgz

- driver r3.1.58620

- eclipse Oxygen, jre-8u111-linux-x64, mono-4.0.1-4.x86_64

I'm following the Code Builder tutorial. Every thing works fine until this step : https://software.intel.com/en-us/node/671857

When I try to launch the kernel, I have an error message telling me that the buffers are not assigned:

execution analysis error: No variable assigned to kernel argument #0 (ptrInput)

So I go to the OpenCL Kernel Analysis Input view and the configuration as well as the assigned variables are all in grey. I cannot click on the configuration and the kernel variables fields are empty.

Can you please help me ?

Regards,

Mathieu

Here are the buffers I have declared :

<!--  Kernel Builder Variables Database  -->
<KernelBuilderBuffers>
    <BufferDetails>
        <Name>ptrInput</Name>
        <DataType>uchar</DataType>
        <MemoryFlags>CL_MEM_READ_WRITE</MemoryFlags>
        <AccessQualifier>READ_ONLY</AccessQualifier>
        <I_O_Mode>0</I_O_Mode>
        <Source>/home/user/STI/THOREL/workspace_eclipse/Code Builder Sessions/session_0/bin_ptrInput.bin</Source>
        <ReadOutput>true</ReadOutput>
        <BufferSize>262144</BufferSize>
        <InitByRandom>false</InitByRandom>
        <InitByZero>true</InitByZero>
        <UseAsSVM>false</UseAsSVM>
    </BufferDetails>
    <BufferDetails>
        <Name>ptrOutput</Name>
        <DataType>uchar</DataType>
        <MemoryFlags>CL_MEM_READ_WRITE</MemoryFlags>
        <AccessQualifier>READ_ONLY</AccessQualifier>
        <I_O_Mode>1</I_O_Mode>
        <Source></Source>
        <ReadOutput>true</ReadOutput>
        <BufferSize>262144</BufferSize>
        <InitByRandom>false</InitByRandom>
        <InitByZero>false</InitByZero>
        <UseAsSVM>false</UseAsSVM>
    </BufferDetails>
</KernelBuilderBuffers>

<KernelBuilderImages/>

<KernelBuilderSamplers/>

 

The kernel is :

 

#define FILTER_WIDTH ( 11 )
#define FILTER_SIZE  ( FILTER_WIDTH * FILTER_WIDTH )
#define FILTER_INF   ( 5 ) // Need to be calculated -> floor( FILTER_WIDTH / 2 )

__kernel void convolve_no_local( const __global unsigned char * restrict ptrInput,
                                       __global unsigned char * restrict ptrOutput,
                                 const          int                      iWidth,
                                 const          int                      iHeight )
{
    // Must be normalized
    const int arrFilter[ FILTER_SIZE ] = { -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,  0,
                                           -2, -2, -2, -2, -2, -2, -2, -2, -2,  0,  2,
                                           -2, -2, -2, -2, -2, -2, -2, -2,  0,  2,  2,
                                           -2, -2, -2, -2, -2, -2, -2,  0,  2,  2,  2,
                                           -2, -2, -2, -2, -2, -2,  0,  2,  2,  2,  2,
                                           -2, -2, -2, -2, -2,  0,  2,  2,  2,  2,  2,
                                           -2, -2, -2, -2,  0,  2,  2,  2,  2,  2,  2,
                                           -2, -2, -2,  0,  2,  2,  2,  2,  2,  2,  2,
                                           -2, -2,  0,  2,  2,  2,  2,  2,  2,  2,  2,
                                           -2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,
                                            0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2 };
    
    const int iWorkGlobalX = get_global_id( 0 );
    const int iWorkGlobalY = get_global_id( 1 );
    
    if( iWorkGlobalX >= FILTER_INF && iWorkGlobalX < iWidth  - FILTER_INF &&
        iWorkGlobalY >= FILTER_INF && iWorkGlobalY < iHeight - FILTER_INF )
    {
        const int iInputX = ( iWorkGlobalX - FILTER_INF );
        const int iInputY = ( iWorkGlobalY - FILTER_INF );
        
        int iInput;
        int iValue = 0;
        
#ifdef __UNROLL_3x3__
        iInput = iInputX + iInputY * iWidth;
        iValue = iValue + ( arrFilter[ 0 ] * convert_int( ptrInput[ iInput     ] ));
        iValue = iValue + ( arrFilter[ 1 ] * convert_int( ptrInput[ iInput + 1 ] ));
        iValue = iValue + ( arrFilter[ 2 ] * convert_int( ptrInput[ iInput + 2 ] ));
        iInput = iInput + iWidth;
        iValue = iValue + ( arrFilter[ 3 ] * convert_int( ptrInput[ iInput     ] ));
        iValue = iValue + ( arrFilter[ 4 ] * convert_int( ptrInput[ iInput + 1 ] ));
        iValue = iValue + ( arrFilter[ 5 ] * convert_int( ptrInput[ iInput + 2 ] ));
        iInput = iInput + iWidth;
        iValue = iValue + ( arrFilter[ 6 ] * convert_int( ptrInput[ iInput     ] ));
        iValue = iValue + ( arrFilter[ 7 ] * convert_int( ptrInput[ iInput + 1 ] ));
        iValue = iValue + ( arrFilter[ 8 ] * convert_int( ptrInput[ iInput + 2 ] ));
#else
        int iRow;
        int iCol;
        int iFilter = 0;
        
        for( iRow = 0 ; iRow < FILTER_WIDTH ; iRow++ )
        {
            iInput = iInputX + ( iInputY + iRow ) * iWidth;

            for( iCol = 0 ; iCol < FILTER_WIDTH ; iCol++ )
            {
                iValue = iValue + ( arrFilter[ iFilter ] * convert_int( ptrInput[ iInput ] ));

                iInput++;
                iFilter++;
            }
        }
#endif  
        ptrOutput[ iWorkGlobalX + iWorkGlobalY * iWidth ] = convert_uchar_sat( iValue );
    }
}

 

Here are the view screeshots :

1.png      2.png

3.png     4.png    

0 Kudos
1 Solution
Jeffrey_M_Intel1
Employee
174 Views

The only Eclipse versions supported right now are Mars and Luna.  (See https://software.intel.com/en-us/intel-opencl). ; According to Eclipse, Oxygen is not due to be released until June 2017.   Is there any chance you could try one of these earlier supported versions of Eclipse?

View solution in original post

3 Replies
Jeffrey_M_Intel1
Employee
175 Views

The only Eclipse versions supported right now are Mars and Luna.  (See https://software.intel.com/en-us/intel-opencl). ; According to Eclipse, Oxygen is not due to be released until June 2017.   Is there any chance you could try one of these earlier supported versions of Eclipse?

MathieuT
Beginner
174 Views

Hello,

As you mentioned I installed Eclipse Mars.2 and it works even if sometimes the OpenCL Kernel Analysis Input view crash. Thank you Jeffrey.

I can now select the buffers and launch the kernel. However, the firefox (version 51 and 38) html report page is empty. An error message is displayed: "Error: can not find main menu data". So I manually opened the main.js file where it comes from ans it appears that the file '/data/mainMenu.ajax' is missing.

I think it should be generated during the execution. You will find attach to this message the output of the execution : 20161220111137.zip

Can you please help me with this

Regards,

Mathieu

 

 

 

 

 

 

Jeffrey_M_Intel1
Employee
174 Views

I've been able to reproduce similar behavior.  A bug has been filed.  Thanks for your helpful input on this.

Reply