V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BUappend
V2EX  ›  前端开发

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

  •  
  •   BUappend · 2020-11-25 02:09:00 +08:00 · 1993 次点击
    这是一个创建于 1484 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    8 条回复    2020-11-25 18:28:13 +08:00
    MCVector
        1
    MCVector  
       2020-11-25 06:05:53 +08:00 via Android
    需要更多信息。用的是什么 API ?是上传到显存的阶段慢还是磁盘的 io 慢?
    northisland
        2
    northisland  
       2020-11-25 08:17:21 +08:00 via Android
    老哥,给的信息太少了吧,用的是 cudamemcpy api,还是 clEnqueueRead,还是其他乱七八糟的 api,gpu3 种内存都可以放图片。。。

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

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

    Composited Layer 都需要 CPU 处理位图,需要考虑 CPU 的带宽问题和内存的管理,所以需要避免过度使用 Composited Layer 。
    BUappend
        6
    BUappend  
    OP
       2020-11-25 17:31:29 +08:00
    @bojue CPU 的带宽问题和内存的管理,能详细说说吗
    bojue
        7
    bojue  
       2020-11-25 18:26:20 +08:00
    @bojue 细节记不住了,不过可以查一下,随手找到一篇 https://zhuanlan.zhihu.com/p/39880024
    bojue
        8
    bojue  
       2020-11-25 18:28:13 +08:00
    @BUappend 链接还发错了你看一下我回复的,大概意思就是减少绘制区域,尽可能的减少对内存的消耗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:51 · PVG 09:51 · LAX 17:51 · JFK 20:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.