perhaps many of you remember the first days when we were decided to go for a GPU engine. The question back in those days was whether someone would go with OpenCL or CUDA. Supporting all kind of hardware was quite important for us but we simply could not ignore that OpenCL was not that mature. CUDA has been our dearest friend deploying Presto first there but we always want to push Presto running on all available hardware (this is of course why our next stop was the CPU port).
But OpenCL has a strange beauty that made us keep visiting and visiting this topic again and again. Finally, after making a big dive, we managed to port Presto on OpenCL. It wasn't easy but we can disclose now that this has already finished since last May! Nevertheless, porting the engine is the first part only, the other being to be able to run it consistently and produce results robustly. And here is where we are right now; trying to make the whole Presto engine - that has advanced and become increasingly complex over the past months - to pass and run stable through the OpenCL vendors. And of course, performance considerations and optimizations arise after that. Overall, an inspiring yet very challenging task.
With this tech preview, we want to let our users know that we have not forgotten numerous related requests that we got in the past, regarding this topic. And we will continue on this path. At this point though, we cannot give a date as to when the OpenCL port will be publicly available; this is in many cases outside our control. I prefer to be ultra pessimistic here and say that, worst case, it may take long long time before we publish a stable & complete Presto on OpenCL; please consider this as a very work in progress. But we wanted to inform our users that we are aware of the need and we are always pushing the hardware to the limits.
In the screenshots below, you can see 3 distinct examples of our work-in-progress technology, i.e. Thea Presto OpenCL driver, along with the already established technology. These examples, are all shown during interactive rendering (which is somewhat more challenging) running in parallel with the other Presto CPU and/or CUDA drivers.
- In the first screenshot, an AMD CPU runs using the OpenCL driver (in general, not really needed since we have the optimized Presto CPU driver).
- In the second screenshot, an AMD GPU (FirePro W7000) runs in parallel using OpenCL on a Xeon machine with a Titan graphics card.
- In the third screenshot, the Xeon Phi runs using the OpenCL driver again on a Xeon machine with a Titan graphics card.