3 Replies Latest reply on Aug 13, 2008 4:49 PM by ryta1203

    global buffer

    caluser

      Hello everyone,

      I can't understand what a global buffer is. I read from the manual that Global buffer are not available on AMD R600 cards but they are available on R670 and I know they will be available on AMD R700. But:

      1. What is a global buffer? Why could I need that?

      2. If the problem is about binding a part of the output buffer (i.e. a domain) to a specific kernel/Stream-Operator, I guess we may bind more domains to the same kernel through the code and also we could bind more kernels to the same domain. Does it give the same funcionality (but with more code) than Global buffers?

      2. Will "having or not having global buffers" change my code when I use Brook+?

      Thanks a lot.

      P.D. You can read the following paragraph from the Programming Guide document (page 34):

       Global Buffer

      The AMD R670 DPP architecture introduces an extremely powerful new feature called the Global Buffer. As we had seen before, the output position to which the DPP program can write its output values is implicit in the current position in the execution domain being processed. The Global Buffer relaxes this limitation by providing applications with the flexibility to read from and write to arbitrary locations in input buffers and output buffers respectively….

      Note the following important limitations with global buffers in CAL:

       • Global buffers are available on the AMD R670 DPPs only and will not work on the R600 DPP.

                      …

       

        • global buffer
          ryta1203
          caluser,

          I'm just a user like you, but from the description, it sounds like without global buffers you can't use the Scatter operation (random access write). It also sounds like it implies that you can't "gather" (random access read) either; however, I know that not to be the case with R600. This may be an oversimplified answer to your question.
            • global buffer
              caluser

              rytal

              so r600 has scatter and gather operations implemented in a different way than the r670 which implement these operations using global buffers. Is it correct?

              Thanks a lot for helping me to understand.

                • global buffer
                  ryta1203
                  R600 does not support scatter, period, as far as I know.

                  I have a 2900XT (R600) and I have been told by AMD that it does not support scatter (it also does not support double precision, obviuosly). It is a hardware limitation.

                  I only tried to deduce the correlation from the statement:

                  The Global Buffer relaxes this limitation by providing applications with the flexibility to read from and write to arbitrary locations in input buffers and output buffers respectively

                  which makes it sound like they are talking about gather and scatter using global buffers.

                  ALSO, I believe that the "HWGuide.doc" talks about this some, indicating that "stream" operations are much faster than "scatter/gather" operations since "stream" operations are cached while "scatter/gather" operations use global buffers.