nythrix's picture

[OpenCL] EntryPointNotFoundException on CL calls

Project:The Open Toolkit library
Version:0.9.x-dev
Component:Code
Category:bug report
Priority:normal
Assigned:Unassigned
Status:won't fix
Description

As reported here running the OpenCL example causes an EntryPointNotFoundException on CreateContextFromType(...).
I have encountered the same exception on GetPlatformIDs(...) in other code. I suppose this happens on all CL calls.

Config: WinXP SP2 32bit / ATI Stream / Core 2 Duo / GF 9600GT

Edit: Another related thread.


Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
the Fiddler's picture

#1

Status:open» confirmed

I am getting the same exception with ATI Stream, no idea about the cause yet. I will test on Linux to see if it also occurs there.

Can you please run dumpbin on the opencl.dll and attach its output here?

nythrix's picture

#2

Had to copy the damn thing somewhere else in order to work.
Anyway:

Dump of file C:\Program Files\ATI Stream\bin\x86\OpenCL.dll
 
File Type: DLL
 
  Section contains the following exports for OpenCL.dll
 
    00000000 characteristics
    4A77646A time date stamp Tue Aug 04 00:27:54 2009
        0.00 version
           1 ordinal base
          96 number of functions
          96 number of names
 
    ordinal hint RVA      name
 
          1    0 00001890 ?clEnqueueAcquireExternalObjects@@YGHPAU_cl_command_queue@@IPBQAU_cl_mem@@IPBQAU_cl_event@@PAPAU3@@Z
          2    1 00001AD0 ?clEnqueueReleaseExternalObjects@@YGHPAU_cl_command_queue@@IPBQAU_cl_mem@@IPBQAU_cl_event@@PAPAU3@@Z
          3    2 00383322 APPLE_USE_THREAD_POLICY
          4    3 0037BCF4 ATISTREAMSDKROOT
          5    4 00383320 CPU_ALIGN_STRUCTS
          6    5 0037BCFC CPU_COMPILER_OPTIONS
          7    6 0037BD00 CPU_MAX_COMPUTE_UNITS
          8    7 0037BD04 CPU_MAX_WORKGROUP_SIZE
          9    8 00383321 CPU_VECTOR_BY_REFERENCE
         10    9 00383323 GPU_DOUBLE_PRECISION
         11    A 0037BCF8 LLVM_LINK_LIBS
         12    B 00383324 REMOTE_ALLOC
         13    C 000100D0 _clBuildProgram@24
         14    D 0000C080 _clCreateBuffer@24
         15    E 00003DE0 _clCreateCommandQueue@20
         16    F 00004F20 _clCreateContext@24
         17   10 00005170 _clCreateContextFromType@24
         18   11 00005C20 _clCreateFromD3D10Buffer@20
         19   12 000065B0 _clCreateFromD3D9Buffer@24
         20   13 0000AA30 _clCreateFromGLBuffer@20
         21   14 0000AE70 _clCreateFromGLRenderbuffer@20
         22   15 0000AB90 _clCreateFromGLTexture2D@28
         23   16 0000AD00 _clCreateFromGLTexture3D@28
         24   17 0000C490 _clCreateImage2D@36
         25   18 0000C550 _clCreateImage3D@44
         26   19 00005D80 _clCreateImageFromD3D10Resource@20
         27   1A 00006790 _clCreateImageFromD3D9Resource@24
         28   1B 0000F470 _clCreateKernel@12
         29   1C 0000F660 _clCreateKernelsInProgram@16
         30   1D 00003BB0 _clCreatePerfCounterAMD@12
         31   1E 00010C70 _clCreateProgramWithBinary@28
         32   1F 00010960 _clCreateProgramWithSource@20
         33   20 00010F40 _clCreateSampler@20
         34   21 0000B1A0 _clEnqueueAcquireGLObjects@24
         35   22 00007C20 _clEnqueueBarrier@4
         36   23 00003620 _clEnqueueBeginPerfCounterAMD@24
         37   24 0000CF00 _clEnqueueCopyBuffer@36
         38   25 0000DC80 _clEnqueueCopyBufferToImage@36
         39   26 0000D6D0 _clEnqueueCopyImage@36
         40   27 0000D9B0 _clEnqueueCopyImageToBuffer@36
         41   28 00003870 _clEnqueueEndPerfCounterAMD@24
         42   29 0000DF50 _clEnqueueMapBuffer@44
         43   2A 0000E240 _clEnqueueMapImage@52
         44   2B 00008130 _clEnqueueMarker@8
         45   2C 000082B0 _clEnqueueNDRangeKernel@36
         46   2D 00007B90 _clEnqueueNativeKernel@40
         47   2E 0000CA20 _clEnqueueReadBuffer@36
         48   2F 0000D1D0 _clEnqueueReadImage@44
         49   30 0000B260 _clEnqueueReleaseGLObjects@24
         50   31 000086A0 _clEnqueueTask@20
         51   32 0000E530 _clEnqueueUnmapMemObject@24
         52   33 00008760 _clEnqueueWaitForEvents@12
         53   34 0000CC90 _clEnqueueWriteBuffer@36
         54   35 0000D450 _clEnqueueWriteImage@44
         55   36 00007FE0 _clFinish@4
         56   37 00007E90 _clFlush@4
         57   38 00004160 _clGetCommandQueueInfo@20
         58   39 00004BD0 _clGetContextInfo@20
         59   3A 00006C10 _clGetDeviceIDs@24
         60   3B 00006E70 _clGetDeviceInfo@20
         61   3C 000045E0 _clGetEventInfo@20
         62   3D 00007CB0 _clGetEventProfilingInfo@20
         63   3E 00004E40 _clGetExtensionFunctionAddress@4
         64   3F 0000AFD0 _clGetGLObjectInfo@12
         65   40 0000B0B0 _clGetGLTextureInfo@20
         66   41 0000C960 _clGetImageInfo@20
         67   42 0000FBF0 _clGetKernelInfo@20
         68   43 0000FE00 _clGetKernelWorkGroupInfo@24
         69   44 0000C6D0 _clGetMemObjectInfo@20
         70   45 000029E0 _clGetPerfCounterInfoAMD@20
         71   46 00006A00 _clGetPlatformIDs@12
         72   47 00006AE0 _clGetPlatformInfo@20
         73   48 0000F2C0 _clGetProgramBuildInfo@24
         74   49 0000EEA0 _clGetProgramInfo@20
         75   4A 00011190 _clGetSamplerInfo@20
         76   4B 0000C610 _clGetSupportedImageFormats@28
         77   4C 00004080 _clReleaseCommandQueue@4
         78   4D 00004B00 _clReleaseContext@4
         79   4E 00004870 _clReleaseEvent@4
         80   4F 0000F970 _clReleaseKernel@4
         81   50 0000C3C0 _clReleaseMemObject@4
         82   51 00002840 _clReleasePerfCounterAMD@4
         83   52 0000ED40 _clReleaseProgram@4
         84   53 000110C0 _clReleaseSampler@4
         85   54 00003FB0 _clRetainCommandQueue@4
         86   55 00004A30 _clRetainContext@4
         87   56 000047A0 _clRetainEvent@4
         88   57 0000F8A0 _clRetainKernel@4
         89   58 0000C2F0 _clRetainMemObject@4
         90   59 00002910 _clRetainPerfCounterAMD@4
         91   5A 0000EC70 _clRetainProgram@4
         92   5B 00010FF0 _clRetainSampler@4
         93   5C 00004340 _clSetCommandQueueProperty@20
         94   5D 0000FA40 _clSetKernelArg@16
         95   5E 0000EE10 _clUnloadCompiler@0
         96   5F 00004480 _clWaitForEvents@8
 
  Summary
 
        D000 .data
       73000 .rdata
       24000 .reloc
      307000 .text
        1000 .tls
the Fiddler's picture

#3

Thanks, the '_' prefix might be throwing the DllImports off. The symbols on the Linux libOpenCL.so file don't seem to have that prefix, interesting.

nythrix's picture

#4

I manually tried adding the prefix to one of the bindings but it didn't help. Same exception but this time with an underscore.

Edit: Forgot to ask: Does it work on Linux? I have no Linux installation ATM.

the Fiddler's picture

#5

The program actually compiles and runs fine on Linux.

We will probably have to modify the code to use GetProcAddress/dlsym on Windows/Unix respectively in order to get correct results regardless of the implementation.

nythrix's picture

#6

Apparently this is a known bug on WinXP. I say leave the bindings be till the devs come out with something. After all ATI Stream SDK is still beta.

http://forums.amd.com/devforum/messageview.cfm?catid=390&threadid=118204...

the Fiddler's picture

#7

Status:confirmed» won't fix

Thanks for the pointer!