Page 1 of 1

Using the Parallella with ‘R’ and OpenCL

PostPosted: Sat Jun 22, 2013 1:59 am
by Art R
Greetings,

I recently received an email which suggested the possibility of a project to port the R Statistical language to the Parallella platform using Open CL. While I am a relatively newbie to R , I am member of a large R users group some of whose members might be interested in contributing to such an exciting project for R.

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Mon Jun 24, 2013 6:10 pm
by censix
Hi

yes, the idea is to enable R to use the Epiphany parallel processor of the Parallella board as an accelerator, similar to how R can use GPUs as accelerators. One way to do this without having to reinvent the wheel is through OpenCL. just send me a private message on what you have in mind.

Cheers

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Thu Jun 27, 2013 2:57 am
by juanlp
Hi censix,

Great tutorial on R and OpenCL. I wonder if MPI interface is already available within E16/64 framework, i.e. doSNOW or doMPI

Thank you,
Juan

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Fri Jun 28, 2013 8:57 pm
by censix
doMPI is just an R wrapper for MPI, I believe. So as soon as we have a working MPI for the Epiphany we are done.

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Mon Jul 01, 2013 2:50 am
by juanlp
Thanks. So it means if we manage to install OpenMPI then it would be ready to go? Sorry, I am new to this parallel world :D

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Mon Jul 01, 2013 8:29 am
by censix
I may have been wrong. looks like 'doMPI' depends on 'Rmpi'. And the latter one I have had not time to look at. You could read the docs and see if it is possible to adapt 'Rmpi' to work with the Epiphany.... Soren

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Mon Jul 01, 2013 8:30 am
by 9600
juanlp wrote:Thanks. So it means if we manage to install OpenMPI then it would be ready to go? Sorry, I am new to this parallel world :D


I believe that if you do that it would just give you an MPI library you can use with the ARM cores, which would be useful if you wanted to cluster together multiple boards. Whereas ideally what we'd have is MPI for Epiphany also. If you see the MPI forum this is what is being referred to as "MPI Lite", dar put together a proof-of-concept some time ago, and more recently simsciloki has started work on implementing this.

Cheers,

Andrew

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Tue Jul 02, 2013 2:41 pm
by juanlp
Thanks censix and Andrew, I got answers from both of you :)

You are correct, my questions came from 2 parts:

- Would MPI be faster than OpenCL, when communicate between the cores on the same board. Though my gut feeling tells me it is OpenCL.
- Next is how to establish the communication between the boards?

Apart from simulation, I am really interested in using this for big-data analysis. Keep up the great works :)

Re: Using the Parallella with ‘R’ and OpenCL

PostPosted: Thu Oct 03, 2013 6:56 pm
by svartalf
juanlp wrote:Thanks censix and Andrew, I got answers from both of you :)

You are correct, my questions came from 2 parts:

- Would MPI be faster than OpenCL, when communicate between the cores on the same board. Though my gut feeling tells me it is OpenCL.
- Next is how to establish the communication between the boards?

Apart from simulation, I am really interested in using this for big-data analysis. Keep up the great works :)


MPI is more of a communications framework to allow parallelism from the coarse-grain node level wherein there's a lot of resources available for memory, etc. Think of PC's in a server cluster for that.

OpenCL is more of a fine-grained parallelism. Think of this chip or a GPU for the thinking there.

They're not mutually exclusive, but you're not going to gain much with only about 32k of RAM per each Epiphany core going the MPI route with them. Makes more sense to get it working on ARM- which shouldn't be all that hard either with an OpenEmbedded build or a Scratchbox2 sandbox derived from an OpenEmbedded build SDK dump or something like Ubuntu or Debian on the ARM with a Crosstool-NG cross-compiler.