octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Project proposal for GSoC.


From: Daniel J Sebald
Subject: Re: Project proposal for GSoC.
Date: Sun, 26 Feb 2012 18:44:00 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16

On 02/25/2012 11:43 PM, Jordi Gutiérrez Hermoso wrote:
On 25 February 2012 23:26, SAYANTAN DATTA<address@hidden>  wrote:
I am looking for opportunities to contribute in the field of parallel
processing and GPU computing.As many of the algorithms in mathematics are
inherently parallel ,it could save a huge time if we could use the power of
GPUs and multicore CPU, especially when the data sets are very large.For
example LU decomposition,FFT,matrix inverse ,numerical integration, ODE and
PDE solving etc could be computed much faster if they are performed using
GPUs and multicore CPUs.

  Also I would like to mention that I'm quiet familiar with OpenCL,OpenMP
,MPI and majority of the numerical methods used commonly in engineering.

  So is there any scope for implementing the above mentioned idea for octave
in this year's GSoC?

Perhaps, but there is a huge problem we keep facing: is there a free
and GPL compatible implementation of OpenCL? It seems like a big shame
that the only way to do GPU computing is by giving up control of your
hardware to some binary blob made by nvidia or ATI. I know last year's
GSoC had a project to implement OpenCL:

     http://www.phoronix.com/scan.php?page=news_item&px=OTgwOQ

There seems to be more recent progress on nouveau too:

     http://www.phoronix.com/scan.php?page=news_item&px=MTA1Mzk

I personally see getting a working free OpenCL implementation like a
prerequisite before we can think of how to integrate this into Octave.
My advice is to see if there is something you can do on that side
first.

It would be interesting to see how GPUs could be included in Octave. Processing video streams would be the obvious choice, but GPUs and OpenCL are surely catching on with bigger software companies in fields like medical imaging.

I don't think there is anything dissuading writing code for a non-open piece of software, just that the Octave portion of things needs to be. OpenCL is a standard as well, if I understand correctly. It would be like compiling Octave using a compiler other than gcc.

The issue with multicore, again if I understand correctly, is that really isn't a parallel processing technique. It is more multithreaded. That is, the OS decides how it can schedule the processes or how it can halt a process and restart it on another CPU. To try and get Octave to figure out how best to use multicore processors would be a headache. I've just moved to multicore, and it really is nice in some ways. It's like having several computers at hand to multitask. Best to leave that to the OS: run multiple Octave processes if need be. I've done that.

On a CPU, parallel processing takes the form of single instruction, multiple operation features of chips, but this is very non-portable. That's best for custom hardware/software designs, say a company branding a PC for its own application.

So, it seems to me OpenCL would be the direction to move in order to get some high power Octave parallel processing. You'd have to think of the application first. If you think it isn't difficult, some experimenting would be OK.

With the rate at which graphics cards are developing, a couple year old OpenCL GPU is rather affordable. Interesting side note is that twenty years ago Steve Jobs put an accessible coprocessor on a motherboard and it didn't fly. Today we have coprocessors on graphics cards and it seems quite popular.

Dan


reply via email to

[Prev in Thread] Current Thread [Next in Thread]