9 Replies Latest reply on Oct 21, 2010 9:04 AM by datlatec

    MultiGPU implementation in Linux?

    afo
      Which is the best strategy to implement multigpu in linux?

      Hello all,

      Some time ago nou published a very good post telling the steps to configure a multigpu enviroment in linux (http://forums.amd.com/forum/messageview.cfm?catid=390&threadid=139928&forumid=9).

      Now I am running my application in linux and I am facing a strange situation: I have 2xHD5970 boards, so my application receives a parameter from 0 to 3 to select the device in which to run the kernel. If I open a terminal and run the application, everything goes fine for the 4 numbers (0 to 3); But If I open four terminals, and run 4 instances of the application at the same time (everyone with its corresponding parameter), the total running time goes 2x times slower.

      So, I suspect that something is going serialized, but every instance of the application has its own context , command queues, buffers, etc. so there is no reason to have serialization issues.

      So I kindly ask: Is there any function in the OpenCl api that gets serialized no matter the number of contexts? Is there a better approach to do multigpu? I have read the OpenCL programming guide, and for multigpu it states that one can do multiple contexts because the opencl runtime starts a new thread for each of them, and all functions (except kernel functions) are thread safe. I will really apreciate any insight about these matters. Thanks in advance for your help.

      best regards,

      Alfonso

        • MultiGPU implementation in Linux?
          eklund.n

          search for 5790 in this forum.

          They are crossfired internally and the stream sdk doesn't support crossfired devices as of now. u shall only use the first gpu on each card. 

            • MultiGPU implementation in Linux?
              afo

              Thanks, I was aware of that; in windows the second GPU doesn't work, even in standalone mode and with crossfire disabled. 

              In linux it seems to work (the four GPUs give the correct answers), but they work slower when they work at the same time; that is the reason that I suspect a serialization issue in the opencl api.

              again, thanks for the feedback

              best regards,

              Alfonso

                • MultiGPU implementation in Linux?
                  himanshu.gautam

                  hi afo,

                  It might be a case when memory transfer is bottleneck.

                  Anyways AMD does not support devices other than device[0] for now.

                    • MultiGPU implementation in Linux?
                      afo

                      Hi,

                      Yes, I know that AMD doesn't support the second GPU of HD5970, but:

                      1) Changing to 4xHD5870/VFirepro9800 will make a difference?

                      2) it's a little bit annoying to have "the fastest graphics card on the planet" but only being capable to use 50% of its computing power and 6% of its memory (12% tweaking an enviromental variable) per thread.

                      3) HD5970 was available since october 2009, AtiSDK 2.0 was available on december 2009; how much time should we wait to have full support for HD5970?. Retrospectively it looks like HD5970 was some kind of experiment or was targeted only for games.

                      4) From here, it looks like AMD doesn't take care to full support HD5970 for opencl because a) they cann't because there is a flaw in the design; or b) they know that HD5970 has roughly 2x/4x horsepower than nvidia's tesla, so they have no direct competition.

                      anyway, thanks for your opinion; I will make some experiments to see if I can use the four GPUs.

                      best regards,

                      Alfonso

                • MultiGPU implementation in Linux?
                  MicahVillmow
                  afo,
                  This is something that we are currently working towards fixing. So expect to be able to use the full power of the cards soon.
                  • MultiGPU implementation in Linux?
                    MicahVillmow
                    Starglider,
                    nou is correct. This is a driver problem and not a hardware issue. Once the driver problem is solved, all of the OpenCL capable dual-gpu on a single PCB solutions will be able to use both devices.
                      • MultiGPU implementation in Linux?
                        datlatec

                        So I've been bitten by this. Is there a timeline for expected solution, test versions, anything? I have a lot of hardware just sitting there, and if there is no expectation on resolving this quickly I'll return it and go for the less performant nVidia cards.

                        Also, is the 100% CPU usage when running GPU code part of the issue being resolved too?