首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么将内存从VRAM复制到RAM比从RAM复制到VRAM慢?(OpenGL)

为什么将内存从VRAM复制到RAM比从RAM复制到VRAM慢?(OpenGL)
EN

Stack Overflow用户
提问于 2012-11-30 21:40:12
回答 2查看 1.6K关注 0票数 4

我正在创建类似于CUDA的东西,但我看到从RAM到VRAM的内存复制速度非常快,就像从RAM复制到自身一样。但是从VRAM复制到RAM比从RAM复制到VRAM慢得多。

顺便说一下,我使用glTexSubImage2D从内存复制到VRAM,使用glGetTexImage从内存复制到内存。

为什么?有没有办法提高它的性能,就像将RAM复制到VRAM一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-30 21:52:38

将数据从GPU传输到CPU总是一个非常慢的操作。

A GPU -> CPU readback引入了一个“同步点”,此时中央处理器必须等待图形处理器完成其计算。在此期间,CPU停止向GPU提供数据,导致GPU停止工作。

现在,请记住,现代GPU是以高度并行的方式设计的,在任何给定的时刻都有数千个线程在飞行。同步点必须等待所有这些线程完成处理,然后才能读回它们的计算结果。一旦读回完成,所有这些线程都必须从零开始重新开始执行...坏的!

异步读回结果(在几帧之后),允许GPU继续执行,而不会导致线程饥饿(上面概述的停止和恢复问题)。这极大地提高了性能- GPU的并行度越高,性能提升越快。

根据您的图形芯片和驱动程序的不同,您可能会通过使用PBOs获得更好的性能。

票数 6
EN

Stack Overflow用户

发布于 2012-11-30 23:12:37

顺便说一下,我使用glTexSubImage2D从内存复制到

,使用glGetTexImage从内存复制到内存。

那么你就不是在复制数据。您正在执行pixel transfer operations,这可能需要修改CPU,具体取决于您的image's internal format、像素传输格式和像素传输类型参数。

由于您没有提供实际的代码,因此无法知道您是否选择了错误的参数。

如果要测试直接复制性能,请使用buffer object

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13646401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档