[gdal-dev] Re: OpenCL, GDAL, and You

Seth Price seth at pricepages.org
Mon Dec 6 09:50:04 EST 2010


Over the summer I rewrote the warper to use OpenCL. There was a 2x to  
50x speedup. Here is a description of what I did:
http://osgeo-org.1803224.n2.nabble.com/gdal-dev-gdalwarp-OpenCL-Performance-Week-9-td5341226.html

~Seth



On Dec 6, 2010, at 5:10 AM, Konstantin Baumann wrote:

> Hi,
>
> what benefit/improvement would the OpenCL integration bring to GDAL?  
> Additional functionality or a speedup of existing functions?  
> Probably only operations on images and/or rasters are supported;  
> reprojection/warping and filtering would be good candidates, right?  
> What concrete operations would be supported?
>
> Kosta
>
> -----Original Message-----
> From: gdal-dev-bounces at lists.osgeo.org [mailto:gdal-dev-bounces at lists.osgeo.org 
> ] On Behalf Of Frank Warmerdam (External)
> Sent: Monday, December 06, 2010 1:43 AM
> To: Seth Price
> Cc: Philippe Vachon; gdal-dev; Wolf Bergenheim
> Subject: [gdal-dev] Re: OpenCL, GRASS, GDAL, and You
>
> On 10-09-23 10:09 AM, Seth Price wrote:
>> Hey all, I was just wondering if there was any progress in  
>> integrating
>> the OpenCL code into trunk in each project? I haven't heard anything,
>> but it would be a shame to just leave the code sit, or wait until the
>> code branches have significantly diverged.
>> ~Seth
>>
>
> Seth,
>
> Last week I went out and bought a new AMD/ATI machine in the hopes  
> (amoung
> other goals) that OpenCL would work on it with the ATI OpenCL SDK.
> Unfortunately I have discovered that the ATI Radion 4200 HD is not  
> supported
> for OpenCL stuff.  :-(
>
> Nevertheless, with some persistance I was able to build the ATI SDK,  
> and
> configure GDAL to build against it.  So I have integrated OpenCL  
> support
> in trunk.  It is not enabled by default, but you can enable it with  
> the
> --with-opencl directive.  If the include files and libraries are in a
> non-standard location you can also use the --with-opencl-include and
> --with-opencl-lib directives to configure like this:
>
>     --with-opencl \
>     --with-opencl-include=/home/warmerda/pkg/ati-stream-sdk-v2.2- 
> lnx64/include \
>
> --with-opencl-lib="-L/home/warmerda/pkg/ati-stream-sdk-v2.2-lnx64/ 
> lib/x86_64
> -lOpenCL" \
>
> I ran into a few issues:
>
> 1) It seems the include file from ATI is <cl/opencl.h> not <OpenCL/ 
> OpenCL.h>
> as it is on the Mac.  I've put a platform dependent ifdef but I  
> don't now
> what the situation will be on other machines.
>
> 2) In your get_device() function you were passing NULL in for the  
> platform.
> The online docs indicate this as an option but warn that behavior  
> then is
> platform dependent.  The ATI SDK just fails with an invalid platform  
> error.
> So I updated the code to fetch a platform id and use that.
>
> 3) On my system it falls back to using the CPU but it turns out the  
> CPU
> does not offer "image" support in my case.  I added some extra logic  
> to
> look for this capability so a better error could be reported.
>
> 4) I restructured things a bit so that the OpenCL warper case can  
> return
> CE_Warning to indicate to the high level warper that OpenCL should be
> skipped and other mechanisms used.  That is what it does not if it  
> fails
> to find a suitable device, or some of the other specific checks.
>
> 5) I made a few changes to use CPLDebug instead of printf for debug  
> output.
>
> I haven't tried this yet on your Mac.  I avoided using the account you
> kindly offered because I find the Mac is often a perverse build  
> environment
> and I didn't want to establish the "norm" based on it.  I might try  
> it out
> tonight though.
>
> I have also not yet tried it on windows, and likely won't in the  
> near future.
> Perhaps someone else will pick up the ball there.  The code itself  
> just
> depends on having HAVE_OPENCL defined at least in the alg directory  
> and
> of course appropriate include and link options.
>
> (cc:ed to the list so everyone is aware of the availability).
>
> Best regards,
> -- 
> --------------------------------------- 
> +--------------------------------------
> I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
> light and sound - activate the windows | http://pobox.com/~warmerdam
> and watch the world go round - Rush    | Geospatial Programmer for  
> Rent
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20101206/02ecbd8a/attachment.html


More information about the gdal-dev mailing list