On Fri, 12 Aug 2011 13:50:41 +0200, Martin Dobias wrote:
Hi Andreas
On Fri, Aug 12, 2011 at 11:28 AM, Andreas Neumann
<[email protected]> wrote:
Hi,
Now that Martin is including Multithreading Support, I am also
wondering if
it would be feasible to also profit from the computing power of GPUs
and
libraries, such as OPENCL. Seems like mobile devices, servers and
regular
desktops would benefit. Would the Qgis architecture allow the usage
of
OpenCL?
I am not a dev, but am reading about these new technical options ...
Given that more and more computers come with powerful GPUs it really
makes sense to explore what are the possibilities for speed
improvements. In general you can either use a library that implements
some algorithms on GPU or you can start writing your own GPU code for
the algorithm (or some parts of it).
The speedup will vary greatly depending on the algorithm. Things like
3D rendering, image processing, video compression etc. are perfectly
suited for GPU implementation because one computationally intensive
routine is used in parallel for millions of independent pixels.
However many other algorithms will not perform better on GPU. These
are typically the ones that are not parallel or their bottleneck is
not in computation - many algorithms have bottlenecks in I/O or they
need to wait for some resources.
First we would have to identify what is slow and should be optimized.
Then do some profiling to find out in what parts most of the time is
spent. If those parts are computationally intensive and
parallelizable
then it is a candidate for GPU implementation. My impression is that
there are very few places in QGIS where we would gain performance
with
GPU because typically we delegate computation to underlying libraries
and/or the slowness is caused by I/O. And various pieces of
functionality are slow just because inefficient or naive algorithms
are used.
When implementing an algorithm on GPU we still would need to provide
original implementation if no OpenCL-capable device is found. So this
adds additional burden on maintainance to ensure that both CPU and
GPU
implementations give equivalent results.
To summarize: yes, it would be possible to use GPU for some tasks,
but
GPU is not a magic wand. Computationally intensive tasks really can
be
improved (even by factors of 100), but many other tasks would not get
faster.
What are the areas where you think QGIS should be faster?
Martin
Since PAL is now more or less a QGIS only feature, would an
opencl/multithread path be an improvment ?
On the lib side, the work on opencl's use in gdal for resampling is a
cool point too.
_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer