可以在同一个GPU上有效地共享渲染作业和数字运算工作(在OpenCL上的f.ex.)吗?例如,
这种GPU资源共享能否改善性能,相反会导致计算和渲染任务整体放缓?
由于
答案 0 :(得分:0)
这里涉及很多因素,但一般来说,你不应该看到减速。
直接回答问题的问题:
在大多数情况下,通过尝试,或者至少对不同部分进行基准测试,您将获得最佳答案。毕竟,如果您的计算过于简单或图像渲染部分过于简单,您将无法获得太多好处。
此外,您可能会尝试更进一步并使用着色器等渲染结果 - 在这种情况下,您可以防止必须将数据从gpu内存移回主内存,这可能 - 根据您的具体情况 - 也可以你的速度提升。
答案 1 :(得分:0)
如果数据/运算比率很大,并且还必须将数据从cpu发送到gpu:
紧缩--->紧缩---->呈现
GPU th0 : crunch for (t-1) crunch for (t) rendering
CPU th1 : send data for t send data for t+1 send data for t+2
CPU th2 : get data of t-2 get data of t-1 get data of t
CPU th3-th7 : Other things independent of crunching or rendering.
At the same time: crunching&comm. crunching&comm. rendering&communication
and other things and other things and other things
如果数据/运算比率很大,如果你不必将数据从cpu发送到gpu:
use interoperatability of CL (example: cl-gl interop)
如果数据/运算比率很小
should not see any slowdown.
中等数据/运算比率:紧缩 - >渲染--->紧缩--->呈现
GPU th0 : crunch for (t) rendering crunch for (t+1) render again! and continue cycling like this
CPU th1 : get data of (t-1) send data for t+1 get data of (t)
CPU th2-th7 : Other things independent of crunching or rendering.
At the same time: crunching&getting. rendering&sending. crunching&getting
and other things and other things and other things