C 使用openMP进行OpenGL三维渲染

C 使用openMP进行OpenGL三维渲染,c,opengl,3d,openmp,C,Opengl,3d,Openmp,在CG(OpenGL)中使用OpenMP渲染动画中的三维多边形图像是否有效 尝试将渲染命令并行排列到GPU没有任何好处。渲染已经在GPU上并行进行,并行发送命令只会在驱动程序中产生大量开销,驱动程序必须检查命令流中的同步点,并且可能需要重新排序 此外,多线程OpenGL操作很难正确执行。尝试将渲染命令并行排列到GPU没有任何好处。渲染已经在GPU上并行进行,并行发送命令只会在驱动程序中产生大量开销,驱动程序必须检查命令流中的同步点,并且可能需要重新排序 此外,多线程OpenGL操作也很难正确执行

在CG(OpenGL)中使用OpenMP渲染动画中的三维多边形图像是否有效

尝试将渲染命令并行排列到GPU没有任何好处。渲染已经在GPU上并行进行,并行发送命令只会在驱动程序中产生大量开销,驱动程序必须检查命令流中的同步点,并且可能需要重新排序


此外,多线程OpenGL操作很难正确执行。

尝试将渲染命令并行排列到GPU没有任何好处。渲染已经在GPU上并行进行,并行发送命令只会在驱动程序中产生大量开销,驱动程序必须检查命令流中的同步点,并且可能需要重新排序


此外,多线程OpenGL操作也很难正确执行。

尝试允许多个CPU线程同时访问PCIe总线到图形卡很可能并不比单个线程好,因为一次只有一个线程真正能够访问该IO总线。

尝试允许多个CPU线程访问PCIe总线同时连接到图形卡的PCIe总线很可能并不比单线程好,因为一次只有一个线程真正能够访问该IO总线。

同意,另外,我要说的是,试图允许多个CPU线程同时访问PCIe总线,而图形卡的输出很可能并不比单个线程好,因为一次只有一个线程真正能够访问该IO总线。@trumpetlicks:对于PCIe,它并没有那么糟糕,因为PCIe在所谓的具有特定数据包长度的“事务”(实际上有一整套长度,但实际上它们很短)。多个线程可以毫无问题地交错这些事务。因此,这主要是一个带宽问题。但在任何编写良好的OpenGL程序中,您都会首先将几何体上载到GPU RAM,然后用一个命令触发整个渲染批处理。完全同意打包(并让GPU实现几何体的并行性,等等),但是PCIe总线的带宽(+开销)甚至比1个内核(RAM比PCIe快得多,并且在必须调出到内存时,它仍然可以暂停单个线程),即具有多个内核(或HT情况下的线程)尝试访问该总线基本上会使大多数线程在大部分时间处于阻塞状态。最好收集所有数据发送到GPU,并尝试以更少但更大的数据包发送数据(从而减少开销)。同意,我还想说的是,试图允许多个CPU线程同时访问PCIe总线,而图形卡上的CPU线程很可能并不比单个线程好,因为一次只有一个线程真正能够访问该IO总线。@trumpetlicks:对于PCIe,它并没有那么糟糕,因为PCIe在所谓的具有特定数据包长度的d“事务”(实际上有一整套长度,但实际上它们很短)。多个线程可以毫无问题地交错这些事务。因此,这主要是一个带宽问题。但在任何编写良好的OpenGL程序中,您都会首先将几何体上载到GPU RAM,然后用一个命令触发整个渲染批处理。完全同意打包(并让GPU实现几何体的并行性,等等),但是PCIe总线的带宽(+开销)甚至比1个内核(RAM比PCIe快得多,并且在必须调出到内存时,它仍然可以暂停单个线程),即具有多个内核(或HT情况下的线程)尝试访问该总线基本上会使大多数线程在大部分时间处于阻塞状态。最好收集所有数据发送到GPU,并尝试以更少但更大的数据包发送数据(从而减少开销)。