4 Replies Latest reply on Aug 3, 2014 5:10 PM by joostn

    Check if a recent driver is installed

    joostn

      Hi,

       

      I've had one user of my application report an inexplicable OpenCL error (CL_INVALID_MEM_OBJ in clSetKernelArg). I suspected might be due to a driver bug, and indeed after updating the driver all is working fine. This is on Windows BTW.

       

      He's using a FirePro V4800. Before the upgrade this was his driver version:

       

          CL_DEVICE_VENDOR_ID: 4098

          CL_DEVICE_VENDOR: Advanced Micro Devices, Inc.

          CL_DEVICE_VERSION: OpenCL 1.1 ATI-Stream-v2.2 (302)

          CL_DRIVER_VERSION: CAL 1.4.815

       

      After upgrade:

       

          CL_DEVICE_VENDOR_ID: 4098

          CL_DEVICE_VENDOR: Advanced Micro Devices, Inc.

          CL_DEVICE_VERSION: OpenCL 1.2 AMD-APP (1411.4)

          CL_DRIVER_VERSION: 1411.4 (VM)

       

      My question is this: I'd like to force users of my application to upgrade their driver if it's older than a certain version. Apparently there are two driver branches around (ATI-Stream and AMD-APP) with different version numbering. If I understand correctly Stream was superseded by APP. So I'm considering something like:

       

      if( (CL_DEVICE_VENDOR_ID == 4098) && (CL_DRIVER_VERSION =~ /^CAL /) )

      {

        "Please update your driver and come back"

        exit

      }

       

      Would this work?

      My main concern is that there might be certain older cards for which only an ATI-Stream driver is available and no AMD-APP one.

       

      Or to force an even more recent driver:

       

      if( (CL_DEVICE_VENDOR_ID == 4098) && ((CL_DRIVER_VERSION =~ /^CAL /)  || (CL_DRIVER_VERSION < 1400.0)))

      {

        "Please update your driver and come back"

        exit

      }

       

      Again I don't want to lock out anyone. Is the 1411.x driver version available for all AMD GPUs, or are there other driver branches around, or are certain cards limited to older driver versions?

       

      Thanks

      Joost