【问题标题】:Is it possible to accelerate the webgl matrix Multiplication through pnacl?是否可以通过 pnacl 加速 webgl 矩阵乘法?
【发布时间】:2016-02-23 10:08:18
【问题描述】:

javascript中矩阵乘法的性能不佳是高性能webgl的障碍。所以我正在考虑使用 pnacl 来加速它。

理想情况下,我想将 ArrayBuffer(Float32Array) 和矩阵传递给 pnacl,然后使用本机代码完成乘法并更新缓冲区中的值,最后通知页面(javascript)。

但我怀疑缓冲区内存是否可以为 pnacl 和页面 javascript 共享? 如果没有,我必须将缓冲区传递回客户端,我不确定这种操作对性能的影响。

任何建议将不胜感激!

【问题讨论】:

    标签: javascript matrix webgl google-nativeclient


    【解决方案1】:

    PPAPI 使用共享内存传递 ArrayBuffer,因此复制将是最小的。

    https://code.google.com/p/chromium/codesearch#chromium/src/ppapi/proxy/plugin_array_buffer_var.h

    但是,PNaCl 插件在 Chrome 中的不同(插件)进程中运行,因此延迟(将消息发送到插件并接收答案的时间)可能会抵消本机代码的任何性能改进。

    【讨论】:

      【解决方案2】:

      与所有优化问题一样,您应该分析您的代码以查看矩阵乘法是否是一个问题。如果是这样,bbudge 是正确的,您可能会因为必须将数组传递给 PNaCl 并返回给 JavaScript 而失去任何性能提升。

      asm.js 代码在与 JavaScript 相同的进程和堆栈中运行,因此您可能会看到使用它的好处。看看http://jsperf.com/matrix-multiplication-with-asm-js/6。不幸的是,不能保证 asm.js 在所有浏览器上都能正常运行。如果浏览器不直接支持 asm.js,它将作为纯 JavaScript 执行,最终可能会变慢。

      WebAssembly 可用时,这可能是您最好的选择。

      【讨论】:

        猜你喜欢
        • 2014-07-24
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-25
        • 1970-01-01
        相关资源
        最近更新 更多