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