Hi Andreas,

On 05/27/2013 05:02 AM, Andreas Kloeckner wrote:
> - Of the things that aren't implemented, clCreateProgramWithBinary would
>    likely be my next most pressing wish. I find the pocl compiler a bit
>    slow. (compared to e.g. Intel and AMD) There's nothing wrong with
>    that, but developing a program with 30-ish kernels that all need to be
>    recompiled for every test run ends up being a pretty miserable
>    experience.  The idea is that PyOpenCL uses caching with
>    clCreateProgramWithBinary and thereby can dramatically cut the wait
>    time to rerun stuff you've already run and only incurs compile waits
>    for stuff that's new.

clCreateProgramWithBinary should work already, but it doesn't
speed up much because pocl's "binary format" now stores only the initial
program bitcode. Most of the compilation time is spent on parallel region
formation and the code generation which has to be still done from this
bitcode.

We can improve this by including the final compilation results for all
the devices in the binary format, but I'd rather make the caching completely
transparent so it works like ccache, behind the scenes, improving the
compilation speed even when using the source code method, and keep the binary
API mostly just as an alternative mechanism to provide the kernel input (a
bit more obfuscated than source code).

Transparent caching can be done by adding hash keys produced from the
sources and the affecting compiler options etc. to the current temp dir
structure. You might have noticed that the current compilation result temp
dir mechanism does cache the results, but only over the program life time
and it has known "false hit" issues:
https://bugs.launchpad.net/pocl/+bug/1179444


-- 
Pekka

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
pocl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pocl-devel

Reply via email to