Support for OpenCL 1.2 - GTX 690 / Ubuntu

Hi!

I would like to use OpenCL 1.2. I’m running Ubuntu 12.04 64-bit, have a GTX 690 GPU and managed to install the 319.32 driver after much trouble. When running my OpenCL application it acknowledges the driver and reports OpenCL 1.1 and CUDA 4.2.1. I have a hard time understanding if the driver or the card is supposed to support OpenCL 1.2 at all (ridiculously hard to find OpenCL info on NVIDIA’s site, for some reason).

Does anyone know if I’m able to run OpenCL 1.2 and what steps would be needed in that case?

Thanks!

If your app uses OpenCL 1.2 specific features, you’re probably out of luck.

Here’s the list of the functions supported by NVIDIA drivers:

Symbol table '.dynsym' contains 105 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00002120    59 FUNC    GLOBAL DEFAULT   10 clGetProgramInfo
     2: 00000000    41 FUNC    GLOBAL DEFAULT  UND sprintf@GLIBC_2.0 (2)
     3: 00002610   101 FUNC    GLOBAL DEFAULT   10 clEnqueueWriteImage
     4: 00000000   162 FUNC    WEAK   DEFAULT  UND __register_frame_info_bas@GCC_3.0 (3)
     5: 00002e70   122 FUNC    GLOBAL DEFAULT   10 clEnqueueReadBufferRect
     6: 00001b70    83 FUNC    GLOBAL DEFAULT   10 clCreateCommandQueue
     7: 00001e90    56 FUNC    GLOBAL DEFAULT   10 clGetMemObjectInfo
     8: 00002480    87 FUNC    GLOBAL DEFAULT   10 clEnqueueReadBuffer
     9: 00001fe0    69 FUNC    GLOBAL DEFAULT   10 clCreateProgramWithSource
    10: 00002a80    86 FUNC    GLOBAL DEFAULT   10 clCreateFromGLBuffer
    11: 000024e0    87 FUNC    GLOBAL DEFAULT   10 clEnqueueWriteBuffer
    12: 00002460    31 FUNC    GLOBAL DEFAULT   10 clFinish
    13: 000029a0    94 FUNC    GLOBAL DEFAULT   10 clEnqueueNativeKernel
    14: 00002a00    38 FUNC    GLOBAL DEFAULT   10 clEnqueueMarker
    15: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__
    16: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses
    17: 00002250    31 FUNC    GLOBAL DEFAULT   10 clReleaseKernel
    18: 000025a0   101 FUNC    GLOBAL DEFAULT   10 clEnqueueReadImage
    19: 00002960    59 FUNC    GLOBAL DEFAULT   10 clEnqueueTask
    20: 00001fa0    56 FUNC    GLOBAL DEFAULT   10 clGetSamplerInfo
    21: 00002820   137 FUNC    GLOBAL DEFAULT   10 clEnqueueMapImage
    22: 00001f80    28 FUNC    GLOBAL DEFAULT   10 clReleaseSampler
    23: 00003080   105 FUNC    GLOBAL DEFAULT   10 clGetDeviceIDs
    24: 00000000    46 FUNC    GLOBAL DEFAULT  UND dlclose@GLIBC_2.0 (4)
    25: 00000000    69 FUNC    GLOBAL DEFAULT  UND memset@GLIBC_2.0 (2)
    26: 000020d0    63 FUNC    GLOBAL DEFAULT   10 clBuildProgram
    27: 00002440    31 FUNC    GLOBAL DEFAULT   10 clFlush
    28: 00002160    66 FUNC    GLOBAL DEFAULT   10 clGetProgramBuildInfo
    29: 00001a30    56 FUNC    GLOBAL DEFAULT   10 clGetDeviceInfo
    30: 00001c10    56 FUNC    GLOBAL DEFAULT   10 clGetCommandQueueInfo
    31: 00000000   153 FUNC    GLOBAL DEFAULT  UND readdir@GLIBC_2.0 (2)
    32: 00002ff0   137 FUNC    GLOBAL DEFAULT   10 clCreateContext
    33: 000030f0    86 FUNC    GLOBAL DEFAULT   10 clGetPlatformInfo
    34: 00000000   255 FUNC    GLOBAL DEFAULT  UND free@GLIBC_2.0 (2)
    35: 000021f0    52 FUNC    GLOBAL DEFAULT   10 clCreateKernelsInProgram
    36: 00001ed0    56 FUNC    GLOBAL DEFAULT   10 clGetImageInfo
    37: 00000000    69 FUNC    GLOBAL DEFAULT  UND dlsym@GLIBC_2.0 (4)
    38: 00000000   280 FUNC    WEAK   DEFAULT  UND __deregister_frame_info_b@GCC_3.0 (3)
    39: 00002740    87 FUNC    GLOBAL DEFAULT   10 clEnqueueCopyBufferToImag
    40: 00001df0    28 FUNC    GLOBAL DEFAULT   10 clRetainMemObject
    41: 00002400    59 FUNC    GLOBAL DEFAULT   10 clGetEventProfilingInfo
    42: 00002380    59 FUNC    GLOBAL DEFAULT   10 clGetEventInfo
    43: 00002d30    52 FUNC    GLOBAL DEFAULT   10 clSetEventCallback
    44: 00000000   456 FUNC    GLOBAL DEFAULT  UND opendir@GLIBC_2.0 (2)
    45: 00001b10    28 FUNC    GLOBAL DEFAULT   10 clReleaseContext
    46: 00000000   214 FUNC    GLOBAL DEFAULT  UND fseek@GLIBC_2.0 (2)
    47: 00002bc0    86 FUNC    GLOBAL DEFAULT   10 clCreateFromGLRenderbuffe
    48: 00000000   418 FUNC    GLOBAL DEFAULT  UND fclose@GLIBC_2.1 (5)
    49: 00002e00    49 FUNC    GLOBAL DEFAULT   10 clCreateUserEvent
    50: 00002c50    59 FUNC    GLOBAL DEFAULT   10 clGetGLTextureInfo
    51: 00001f10    69 FUNC    GLOBAL DEFAULT   10 clCreateSampler
    52: 000023e0    31 FUNC    GLOBAL DEFAULT   10 clReleaseEvent
    53: 00002340    60 FUNC    GLOBAL DEFAULT   10 clWaitForEvents
    54: 00003150   227 FUNC    GLOBAL DEFAULT   10 clGetPlatformIDs
    55: 00000000    29 FUNC    GLOBAL DEFAULT  UND strlen@GLIBC_2.0 (2)
    56: 00002c20    45 FUNC    GLOBAL DEFAULT   10 clGetGLObjectInfo
    57: 00000000   152 FUNC    GLOBAL DEFAULT  UND fopen@GLIBC_2.1 (5)
    58: 00001e10    28 FUNC    GLOBAL DEFAULT   10 clReleaseMemObject
    59: 000023c0    31 FUNC    GLOBAL DEFAULT   10 clRetainEvent
    60: 00002900    87 FUNC    GLOBAL DEFAULT   10 clEnqueueNDRangeKernel
    61: 00002ef0   122 FUNC    GLOBAL DEFAULT   10 clEnqueueWriteBufferRect
    62: 00002a30    45 FUNC    GLOBAL DEFAULT   10 clEnqueueWaitForEvents
    63: 00000000    69 FUNC    GLOBAL DEFAULT  UND dlopen@GLIBC_2.1 (6)
    64: 00000000   273 FUNC    GLOBAL DEFAULT  UND ftell@GLIBC_2.0 (2)
    65: 00002d70    89 FUNC    GLOBAL DEFAULT   10 clCreateSubBuffer
    66: 00001e30    84 FUNC    GLOBAL DEFAULT   10 clGetSupportedImageFormat
    67: 00001d00   106 FUNC    GLOBAL DEFAULT   10 clCreateImage2D
    68: 00002ae0   100 FUNC    GLOBAL DEFAULT   10 clCreateFromGLTexture2D
    69: 000028b0    66 FUNC    GLOBAL DEFAULT   10 clEnqueueUnmapMemObject
    70: 00002110     7 FUNC    GLOBAL DEFAULT   10 clUnloadCompiler
    71: 00002b50   100 FUNC    GLOBAL DEFAULT   10 clCreateFromGLTexture3D
    72: 00000000   126 FUNC    GLOBAL DEFAULT  UND closedir@GLIBC_2.0 (2)
    73: 00002c90    66 FUNC    GLOBAL DEFAULT   10 clEnqueueAcquireGLObjects
    74: 00000000   638 FUNC    GLOBAL DEFAULT  UND malloc@GLIBC_2.0 (2)
    75: 00002dd0    45 FUNC    GLOBAL DEFAULT   10 clSetMemObjectDestructorC
    76: 00002030    83 FUNC    GLOBAL DEFAULT   10 clCreateProgramWithBinary
    77: 00001f60    28 FUNC    GLOBAL DEFAULT   10 clRetainSampler
    78: 00001c50    70 FUNC    GLOBAL DEFAULT   10 clSetCommandQueueProperty
    79: 00001af0    28 FUNC    GLOBAL DEFAULT   10 clRetainContext
    80: 000026e0    87 FUNC    GLOBAL DEFAULT   10 clEnqueueCopyImageToBuffe
    81: 00001d70   120 FUNC    GLOBAL DEFAULT   10 clCreateImage3D
    82: 00003340   508 FUNC    GLOBAL DEFAULT   10 clGetExtensionFunctionAdd
    83: 00002540    87 FUNC    GLOBAL DEFAULT   10 clEnqueueCopyBuffer
    84: 00001b30    56 FUNC    GLOBAL DEFAULT   10 clGetContextInfo
    85: 00002ce0    66 FUNC    GLOBAL DEFAULT   10 clEnqueueReleaseGLObjects
    86: 000027a0   123 FUNC    GLOBAL DEFAULT   10 clEnqueueMapBuffer
    87: 00001ca0    86 FUNC    GLOBAL DEFAULT   10 clCreateBuffer
    88: 000022b0    59 FUNC    GLOBAL DEFAULT   10 clGetKernelInfo
    89: 00002680    87 FUNC    GLOBAL DEFAULT   10 clEnqueueCopyImage
    90: 00000000   232 FUNC    GLOBAL DEFAULT  UND fread@GLIBC_2.0 (2)
    91: 00002f70   115 FUNC    GLOBAL DEFAULT   10 clEnqueueCopyBufferRect
    92: 000022f0    66 FUNC    GLOBAL DEFAULT   10 clGetKernelWorkGroupInfo
    93: 00002270    52 FUNC    GLOBAL DEFAULT   10 clSetKernelArg
    94: 00002090    28 FUNC    GLOBAL DEFAULT   10 clRetainProgram
    95: 000021b0    58 FUNC    GLOBAL DEFAULT   10 clCreateKernel
    96: 00001bf0    28 FUNC    GLOBAL DEFAULT   10 clReleaseCommandQueue
    97: 00001bd0    28 FUNC    GLOBAL DEFAULT   10 clRetainCommandQueue
    98: 00002230    31 FUNC    GLOBAL DEFAULT   10 clRetainKernel
    99: 00000000    47 FUNC    GLOBAL DEFAULT  UND strcmp@GLIBC_2.0 (2)
   100: 00000000   125 FUNC    WEAK   DEFAULT  UND __cxa_finalize@GLIBC_2.1.3 (7)
   101: 00002a60    31 FUNC    GLOBAL DEFAULT   10 clEnqueueBarrier
   102: 000020b0    28 FUNC    GLOBAL DEFAULT   10 clReleaseProgram
   103: 000032b0   140 FUNC    GLOBAL DEFAULT   10 clCreateContextFromType
   104: 00002e40    38 FUNC    GLOBAL DEFAULT   10 clSetUserEventStatus

Does this mean that there are no OpenCL 1.2 drivers at all available?

I’m trying to use Texture1D, but might have to implement that functionality using a 2D texture (with height 1, for example) instead.

This list is compiled using the latest/newest available drivers for Linux - if your function is not on the list, implement a workaround.

I cannot say anything else - I’m not an NVIDIA representative, so I’ve no idea when and if they are going to implement OpenCL 1.2 functions (even thought OpenCL 2.0 is more or less complete).

NVIDIA’s primary computing interface is CUDA. They aren’t really interested in supporting the OpenCL specification - it dilutes their advantage over Intel and AMD.

Alright, thanks a lot for your help!

Isn’t clCreateSubBuffers already required by OpenCL 1.1 ? https://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateSubBuffer.html Not working on Ubuntu 15.10 driver 352.