[Beowulf] GPU question

madskaddie at gmail.com madskaddie at gmail.com
Sun Aug 30 05:41:18 PDT 2009


On Sun, Aug 30, 2009 at 12:35 AM, amjad ali<amjad11 at gmail.com> wrote:
> Hello all, specially Gil Brandao
>
> Actually I want to start CUDA programming for my |C.I have 2 options to do:
> 1) Buy a new PC that will have 1 or 2 CPUs and 2 or 4 GPUs.
> 2) Add 1 GPUs to each of the Four nodes of my PC-Cluster.
>
> Which one is more "natural" and "practical" way?

If I had to choose, I would go for option 1. It's simpler and I
wouldn't had to deal with MPI-like problems. What it would be
interesting is to study which of the following options is best:
  - QuadCore / 2 GPUs
  - DualCore / 4 GPus
  - or a N:N relation

For now I can not tell you, although I deeply suspect that this
related to the problem being solved. For now the CFD code I'm
programing uses only 1:1 but to scale to bigger problems I'll be soon
using 1:3 and depending of the results, I have do check if I had to
use another CPU to deal with data logging stuff. And be aware of the
motherboards you choose: if your cluster doesn't have PCI-x 2.0, buy a
new PC with a mobo (and GPU card) that supports it. Don't forget that
if you put to much GPUs on the same bus and you do not take that in to
account, you are likely to have a slow bottleneck.

> Does a program written for any one of the above will work fine on the other?
> or we have to re-program for the other?

Apart from MPI-like programming, I can not see why would you need any
other stuff. But it's not fully transparent: you have to explicitly
choose what card will run what code.


> Regards.
>
> On Sat, Aug 29, 2009 at 5:48 PM, <madskaddie at gmail.com> wrote:
>>
>> On Sat, Aug 29, 2009 at 8:42 AM, amjad ali<amjad11 at gmail.com> wrote:
>> > Hello All,
>> >
>> >
>> >
>> > I perceive following computing setups for GP-GPUs,
>> >
>> >
>> >
>> > 1)      ONE PC with ONE CPU and ONE GPU,
>> >
>> > 2)      ONE PC with more than one CPUs and ONE GPU
>> >
>> > 3)      ONE PC with one CPU and more than ONE GPUs
>> >
>> > 4)      ONE PC with TWO CPUs (e.g. Xeon Nehalems) and more than ONE GPUs
>> > (e.g. Nvidia C1060)
>> >
>> > 5)      Cluster of PCs with each node having ONE CPU and ONE GPU
>> >
>> > 6)      Cluster of PCs with each node having more than one CPUs and ONE
>> > GPU
>> >
>> > 7)      Cluster of PCs with each node having ONE CPU and more than ONE
>> > GPUs
>> >
>> > 8)      Cluster of PCs with each node having more than one CPUs and more
>> > than ONE GPUs.
>> >
>> >
>> >
>> > Which of these are good/realistic/practical; which are not? Which are
>> > quite
>> > “natural” to use for CUDA based programs?
>> >
>>
>> CUDA is kind of new technology, so I don't think there is a "natural
>> use" yet, though I read that there people doing CUDA+MPI and there are
>> papers on CPU+GPU algorithms.
>>
>> >
>> > IMPORTANT QUESTION: Will a cuda based program will be equally good for
>> > some/all of these setups or we need to write different CUDA based
>> > programs
>> > for each of these setups to get good efficiency?
>> >
>>
>> There is no "one size fits all" answer to your question. If you never
>> developed with CUDA, buy one GPU an try it. If it fits your problems,
>> scale it with the approach that makes you more comfortable (but
>> remember that scaling means: making bigger problems or having more
>> users). If you want a rule of thumb: your code must be
>> _truly_parallel_. If you are buying for someone else, remember that
>> this is a niche. The hole thing is starting, I don't thing there isn't
>> many people that needs much more 1 or 2 GPUs.
>>
>> >
>> > Comments are welcome also for AMD/ATI FireStream.
>> >
>>
>> put it on hold until OpenCL takes of  (in the real sense, not in
>> "standards papers" sense), otherwise you will have to learn another
>> technology that even fewer people knows.
>>
>>
>> Gil Brandao
>
>




More information about the Beowulf mailing list