[GRASS-dev] Parallel computing for r.sun
Seth Price
seth at pricepages.org
Tue Jan 29 22:52:08 PST 2013
On the Mac, you're compiling with "-framework OpenCL"
~Seth
via iPhone
On Jan 29, 2013, at 9:14 PM, Yann Chemin <yann.chemin at gmail.com> wrote:
> Hi Hamish,
>
> """
> the first step is to get support for OpenCL build into grass7's
> ./configure next to pthreads and OpenMP which are already there.
> I welcome help with that, my copious free time hasn't been
> very good lately.
> """
>
> I am heading to the code sprint in Genoa on Sunday,
> Could you spend a little time explaining me the directions to do that?
> (URL, PDF, anything welcome)
>
>
> Cheers,
> Yann
>
>
> On 30 January 2013 08:19, Hamish <hamish_b at yahoo.com> wrote:
>> Yann wrote:
>> > anyone has a timeline for merging the OpenCL code into trunk?
>>
>> Hi,
>>
>> that's been on my todo list for way too long.
>>
>> the first step is to get support for OpenCL build into grass7's
>> ./configure next to pthreads and OpenMP which are already there.
>> I welcome help with that, my copious free time hasn't been
>> very good lately.
>>
>> The removal of tertiary calls from the main r.sun loop has
>> already been done in trunk.
>>
>> I'll try to write more after work, but a lot is explained
>> on these pages:
>> http://grasswiki.osgeo.org/wiki/Category:Parallelization
>>
>> besides the r.sun work already done, AFAIAC the top candidates
>> for parallelization in GRASS are v.surf.rst and v.surf.bspline.
>> Currently there is some support directly in the LU decomposition
>> but that makes 1000s of threads; the cost of creating and
>> destroying those is coming down a lot, but I think it will
>> probably be a lot more efficient to only create dozens of
>> threads in the case of v.surf.bspline (see code comment at
>> the start of the loop where the OpenMP support could go)
>> and for v.surf.rst perhaps multithread the various boxes of
>> the quadtree? The idea being to more closely match the
>> number of threads/processes with the number of CPUs or GPUs.
>> For CPUs that means dozens, for GPUs that means hundreds.
>>
>> Each module will be different, so each one requires its own
>> approach. For that reason I'm happy for pthreads, OpenMP,
>> and OpenCL to all be supported.
>>
>> various python and bourne shell scripts (quite new so not
>> backported to 6.4.svn yet) have been parallelized; the easy
>> win is to run the three R,G,B bands in parallel. It only
>> scales to 3 CPUs, but is nearly perfectly efficient and a 3x
>> speedup is as good as any. See the v.surf.icw script in both
>> g6.sh and g7.py addons for a complete example.
>>
>> the good news is that slowly the opencl apis are making their
>> way into the mainstream driver releases, even intel is on board.
>> before you pretty much needed to tailor your linux distro to
>> match their SDK release target if you wanted to use it; and
>> then the SDK didn't match with the available driver version,
>> and other such pain..
>>
>> I'm not sure of what modules in GRASS besides r.sun are well
>> suited to GPU acceleration. r.sun as a ray-tracing exercise
>> was an obvious one as that's what GPUs are generally designed
>> to do these days. Much, if not most, of GRASS's modules are
>> I/O limited, and especially I/O to the video card has
>> traditionally been really slow. (that's getting better to, but
>> still a little on the horizon).
>>
>> another thing to consider is that GPU math on consumer-grade
>> video cards have been traditionally limited to float()s. you
>> had to buy the expensive "science grade" one if you wanted to
>> calc using double prec. FPs.
>>
>> great leaps can be made, but there are some caveats to consider.
>>
>>
>> best,
>> Hamish
>
>
>
> --
> Yann Chemin
> Researcher at IWMI
> Skype/FB: yann.chemin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20130129/4318df01/attachment.html>
More information about the grass-dev
mailing list