我试图弄清楚是否可以使用 OpenACC 代替正常的 CPU 串行执行调用。通常我的编程都是关于 3D 编程,或者以某种方式正常使用 GPU。 IE。图像处理或其他需要使用着色器的渲染类型。我想弄清楚这个图书馆是否对我有利。
我问这个问题的原因是,如果我渲染 3D 图形(尽可能快),它会减慢该过程吗?或者它是否能够保持(理论上)“高帧速率”。
如果是这样,需要权衡什么,权衡多少?我不愿意牺牲 3D 图形(显示)性能来增强 CPU 上串行执行的操作。
编辑:
这是一个 C++ 上下文。
在我熟悉的 AMD 和 NVIDIA GPU 上,OpenACC 程序将利用着色器程序在某种程度上也会使用的计算资源。 GPU 中还有许多其他图形硬件在计算和图形之间不共享,但有一些共享资源。同样,GPU 可以通过 PCIE 连接到系统,因此这也可以提供共享资源或争用点(但是,这是罕见的计算或图形程序,甚至接近耗尽现代 Gen3 x16 PCIE 的带宽)联系。)
因此,如果您同时使用图形(或计算)着色器以及 OpenACC 加速,则在某种程度上会出现资源争用。争论的程度或权衡不是我可以概括的。这在很大程度上取决于程序的具体情况,以及计算函数和图形函数的范围和详细顺序。
GPU 设计人员考虑到了这些类型的用例,因此 GPU 通常非常擅长在可能争夺资源的各种任务之间进行快速上下文切换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)