将位图加载到 GPU 的内存很慢?

2020-11-25 02:09:00 +08:00
 BUappend

将位图加载到 GPU 的内存很慢?为啥?

1823 次点击
所在节点    前端开发
8 条回复
MCVector
2020-11-25 06:05:53 +08:00
需要更多信息。用的是什么 API ?是上传到显存的阶段慢还是磁盘的 io 慢?
northisland
2020-11-25 08:17:21 +08:00
老哥,给的信息太少了吧,用的是 cudamemcpy api,还是 clEnqueueRead,还是其他乱七八糟的 api,gpu3 种内存都可以放图片。。。

交换数据瓶颈是总线,gpu 用的是 pcie 总线,可以算一下。
happinessnch
2020-11-25 09:30:22 +08:00
我印象里从内存拷贝到 GPU 缓存过程是一处性能瓶颈( 13 年左右得到的结论),
所以 AMD 才弄了个 APU 共享 GPU 和 CPU 存储空间。

位图为啥慢?所谓快慢至少要有一个比较对象吧,你要比较的对象是什么?是方法、还是不同格式?
BUappend
2020-11-25 10:34:23 +08:00
@MCVector @happinessnch @northisland 我在看前端的动画优化的时候看到了这句话,对于动画来说,每次的重排都会生成新的位图,然后说 “ 将位图加载到 GPU 的内存是很慢的操作 ” ,所以尽量减少动画的重排。
bojue
2020-11-25 15:23:03 +08:00
css 性能优化为了减少重绘和重排,可以使用 transfrom 或者 opacity 合成层属性实现动画,这样整个 css 绘制流程只涉及到 composite 。

Composited Layer 都需要 CPU 处理位图,需要考虑 CPU 的带宽问题和内存的管理,所以需要避免过度使用 Composited Layer 。
BUappend
2020-11-25 17:31:29 +08:00
@bojue CPU 的带宽问题和内存的管理,能详细说说吗
bojue
2020-11-25 18:26:20 +08:00
@bojue 细节记不住了,不过可以查一下,随手找到一篇 https://zhuanlan.zhihu.com/p/39880024
bojue
2020-11-25 18:28:13 +08:00
@BUappend 链接还发错了你看一下我回复的,大概意思就是减少绘制区域,尽可能的减少对内存的消耗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728917

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX