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
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.
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
hi afo,
It might be a case when memory transfer is bottleneck.
Anyways AMD does not support devices other than device[0] for now.
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
Presumably this problem will be fixed for the upcoming 6-series 'Antilles' dual-GPU cards? I would really like to use them for my future compute cluster, but if they are crippled like the 5970 I will have to buy Nvidia cards instead.
this is appereantly driver problem.
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?