<div dir="ltr">I have access to a machine (not a desktop) with quite a few CPUs and quite a few GPUs. So, if for example there are 100 CPU cores and 100,000 GPU cores, I guess that I could do a foreach for these 100 CPU cores for an R function, and then if this R function calls RcppArrayFire, RcppArrayFire could call 1,000 GPU cores for each call, to make the whole 100,000 GPU cores, no? Or is everything more complex than that?<div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Jordi Molins i Coronado</div><div><div>+34 69 38 000 59</div></div></div></div></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 22, 2018 at 7:35 PM Dirk Eddelbuettel <<a href="mailto:edd@debian.org">edd@debian.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On 22 September 2018 at 17:52, Jordi Molins wrote:<br>
| In relation to doing "CPU x GPU": what would happen if I have 3 variables<br>
| to be parallelized (independent from each other, no interdependencies) and<br>
| then I create an R function, using RcppArrayFire, to GPU-parallelize two of<br>
| them. Then, I use foreach (or similar) in R to CPU-paralellize the third<br>
| one (and for each variable of the third one, the R function is called, and<br>
| then internally, RcppArrayFire uses GPUs).<br>
<br>
Just because you want to access ONE gpu device N times does not make it N gpus.<br>
<br>
And as you have only one GPU, if you call it N times "in parallel" (we know:<br>
time sliced) you get contention.<br>
<br>
No different from having OpenBLAS or Intel MKL using ALL your cores for<br>
matrix algebra.  If you can that from any of the R process parallel helpers<br>
you get contention.  All this is well documented.<br>
<br>
Dirk<br>
<br>
-- <br>
<a href="http://dirk.eddelbuettel.com" rel="noreferrer" target="_blank">http://dirk.eddelbuettel.com</a> | @eddelbuettel | <a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a><br>
</blockquote></div>