[Mesa-dev] [Bug 93686] Performance improvement ?=:=?UTF-8?Q? Please consider hardware ɢᴘᴜ rendering in llvmpipe

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Jan 14 08:09:17 PST 2016


https://bugs.freedesktop.org/show_bug.cgi?id=93686

--- Comment #5 from ytrezq at sdf-eu.org ---
(In reply to Roland Scheidegger from comment #4)
> (In reply to ytrezq from comment #3)
> I'm not sure what you exactly mean here: They do "load balancing" with 
> multiple gpus as part of SLI
You don’t need an ꜱʟɪ gpu for that, you just need to be Nvidia designed and
supported by a recent Nvidia driver (something above >250).
Then, this is only the matter of doing a right click on any apllication for
pulling the context menu in windows® (you have the choice to run it on a
particular gpu or use all gpus)

> With OpenCL (as well as d3d12, Vulkan) multiple gpus are presented at the
> api level. Thus, the application can chose which adapter to use for what,
> which is pretty much the only way how this can work in a sane manner. There
> were some demos for d3d12 which did (IIRC) all the rendering on the discrete
> gpu and then ran some post-processing shader on the integrated graphics
> using exactly that. So, yes, theoretically if we'd support Vulkan, something
> like that would be doable, but only if the app decided to make use of it.
I disagree, you can’t control invidual gpu in OpenCl. Either your program run
on all gpu or all dedicated devices or all cpu.
Or the 3 of the above.

Yes this is true that the application can to only use a set of devices, but
this is only a transparent choice which is completely handled by the api
backend/driver.
In all case .cl (and their kernel) files don’t change. So their is no code
re‑factoring of any kind.
This is much like requiring an OpenGl program to use llvmpipe instead of the
hardware graphic library render with LIBGL_ALWAYS_SOFTWARE=1

Choosing the device in OpenCl is only matter of setting an integer between the
values of CL_DEVICE_TYPE_CPU or CL_DEVICE_TYPE_GPU or
CL_DEVICE_TYPE_ACCELERATOR or CL_DEVICE_TYPE_ALL (or choosing with a default).
This might even be possible to change the device set by replacing that integer
in the binary file.
Some language libraries bindings for OpenCl even allow to override the choice
outside of the program with environment variables

So with OpenCl, I simply can tell “Compute that addition on all devices” and
writing the addition in an high level manner with simply
“(int)((long)variable_1+variable_2)”.
I don’t think Vulkan or Direct3D can do this without a huge need for code
re‑factoring.

That’s why I wrote that if some parts of llvmpipe could be implemented using
OpenCl, then there would be no need to worry about were it is being run
(forgetting performance considerations).

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20160114/93ac2c4d/attachment.html>


More information about the mesa-dev mailing list