0 Replies Latest reply on Aug 5, 2017 10:17 PM by rwistort

    directGMA on W4300: no cl_amd_bus_addressable_memory

    rwistort

      Hello:

      I am trying to accelerate motion tracking using an FPGA-based Bitflow frame grabber and a gpu and I want to take advantage of the latency reduction offered by directGMA.

      My gpu, a FirePro W4300, is supposed to support directGMA, but neither my frame grabber's vendor's sample code nor the directGMA starter code on github works.

       

      My system is:

      Ubuntu 14.04.4 with a 4.2.0-generic kernel on a Dell/Xeon workstation

      AMDAPPSDK-3.0

      lspci | grep -i vga gives:

      01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Bonaire [FirePro W5100]

      (yes, I know: W5100 != W4300)

      fglrx version 15.302

      OpenCL seems to be properly installed, because my openCV code runs a lot faster when openCL is enabled.

      clinfo output is attached. It seems to indicate that I've got OpenCL 2.0 for the GPU and 1.2 for the CPU. (Which I don't fully understand.)

       

      Most of the google hits for problems similar to this remind me to do:

      amdconfig –set-pcs-val=MCIL,DMAOGLExtensionApertureMB,96           and

      amdconfig –set-pcs-u32=KERNEL,InitialPhysicalUswcUsageSize,96

      I've done this, re-booted, and verified, using get-pcs-key, that the 96's persist after the boot.

       

      In the github sample, the failing api call is

      clGetDeviceInfo(deviceID, CL_DEVICE_EXTENSIONS, extensionSize, ExtensionName, NULL);

      where the returned ExtensionName is searched, in vain, for the string 'cl_amd_bus_addressable_memory' . The helpful error message is:

      cl_amd_bus_addressable_memory is not a supported extension, please turn it on manually on your system either using CCC or aticonfig

      And, in fact,

      clinfo | grep bus_addressable

      comes up empty.

      I did not see any fields in the amdcccle gui which looked like they would affect directGMA.

       

      In the Bitflow sample code, from my frame grabber vendor, the failing api call is:

      clrc = (*(sMakeBuffersResidentAMD))(sCommandQueue,sNframes,sBufs,CL_TRUE,sDMAaddrs,0,NULL,NULL);

      where sMakeBuffersResidentAMD is the extension returned by:

      clGetExtensionFunctionAddressForPlatform(oclPlatforms[ndx],"clEnqueueMakeBuffersResidentAMD");

      The return code is -5 (CL_OUT_OF_RESOURCES), and I've only requested 8Meg of bus-addressable buffer.

      Bitflow's tech rep states that the code works fine on a FirePro W8100 and, while I note that the W8100 supports SDI-link and my W4300 does not, I've been told, in a separate devgurus thread, that this should not matter.

       

      I'm afraid I'm running short on ideas. Can anyone help me with the missing cl_amd_bus_addressable_memory extension?

       

      Thanks,

      Reid