1 Reply Latest reply on Mar 18, 2015 10:58 AM by chm

    DirectGMA newbie question



      We have a new project on the run , and we need to input a huge image ( about 140Mbytes) from an outside source to a GPU , number-crunch it, and then download an array of numbers ( much smaller than the original image ) to the PC we work at.

      The first solution would be to take a frame- grabber which can cope with such an image. The issue with the frame grabber is that it has a memory of its own , thus we copy the image to the frame grabber's memory , and then again , to the GPU's memory . We are trying to cut the chain of memory copying and make the process much more efficient. Heaving done that , we happened to view the "DirectGMA" technique , which seems very appealing .

      My questions are thus :

      1. is is indeed possible ? ( one magical SDI Card I don't even know to receive some kind of a fast serial data protocol and one FirePRo GPU) ?

      2. I saw some API interface being exposed and yet , too many details are hiding beneith the surface

      3. Is there some NDA We need to sign , in order to evaluate this technology ?


      Thank you .

        • Re: DirectGMA newbie question


          you can use DirectGMA to transfer the data from you input/grabber card directly to the GPU memory without the need to copy it to system memory first. To take advantage of this peer to peer copy the grabber card needs to support DirectGMA as well. We worked with a couple of SDI vendors to implement DirectGMA support. You will need to check with them to find out which board fits your needs. You can get some more information on the SDI vendors that we support on: http://fireprographics.com/resources/55185A_DirectGMA_FirePro__A4_FNL.pdf


          To make use of DirectGMA you do not need a NDA. You will find some information on the API and sample code on: http://developer.amd.com/tools-and-sdks/graphics-development/firepro-sdk/firepro-directgma-sdk/


          The basic idea of DirectGMA is that we expose a portion of the GPU memory and make it accessible to other devices on the bus. In order to write into GPU memory those devices will need to get the address of a GPU memory buffer. The APIs that we provide will mainly be used to query those addresses and pass it to the device as well as some additional synchronization functionality.