The CPU is used to prepare tasks for the GPUs and to gather the results, so it is doing something.
a) Yes, CUDA is more flexible (I can tell what are exactly the restrictions in OpenCL, but they are farily technical stuff) and runs much faster on nVidia GPUs than OpenCL. And there is no way to run a complex kernel on AMD GPU, since their compiler can’t handle it.
b) Actually we have implemented that for ourselves some time ago. The goal was easier debugging. It works and we use it on a daily basis. But there is no really point in using the CPU with the GPU for rendering, since the CPU power is just a fraction of GPU one and CPUs can hardly make a difference. This is the reason we haven’t added that to the official builds.
finally, and on a totally unrelated note, proxies in rt gpu. i assume we dont actually get any memory saving benefits from proxies in rt, unlike the production renderer, since it would have to load all the proxy files completely into gpu ram before rendering?
Yes.
trying to answer my own question i found this immediately:
http://www.drdobbs.com/parallel/runn...oces/231500166
Thanks for the link, I’ve missed that.
But I have done a personal implementation (much simpler, but works fairly well) allowing you to run the same code on OpenCL, CUDA and CUDA CPU - https://github.com/savage309/GPAPI. The one we use in the office is similiar (but far more powerful and completed, of course).