【问题标题】:Can Renderscript code be compiled to and run on Snapdragon's Haxagon DSP?Renderscript 代码可以编译并在 Snapdragon 的 Haxagon DSP 上运行吗?
【发布时间】:2015-08-24 17:43:42
【问题描述】:

Renderscript 声称支持“不同类型的处理器,例如 CPU、GPU 或 DSP”。现在,Android 世界中最流行的 DSP 可能是 Snapdragon SOC 中的Hexagon。可以让 Renderscript 代码在 Hexagon 上运行吗?如果可以,怎么做,有什么限制?

更新

关于我迄今为止对该问题的调查 - 没有可用的文档或示例,因此对 Qualcomm 驱动程序进行逆向工程似乎是合乎逻辑的下一步。出于显而易见的原因,我想我会先问。

【问题讨论】:

    标签: android signal-processing renderscript hexagon-dsp


    【解决方案1】:

    您不能强制 RenderScript 在任何特定处理器上运行,因此您实际上无能为力(除非您要编写 Hexagon 编译器 + 驱动程序)。就 Hexagon 驱动程序/编译器的存在而言,目前没有任何 Nexus 设备附带 Hexagon 对 RenderScript 的支持,尽管它们每个都具有对 RenderScript 的 GPU 支持。

    【讨论】:

    • 假设有这样的驱动程序,Renderscript 在架构上是否能够在不同的硬件上同时运行内核?也就是说,假设没有数据依赖,我可以让一个内核在 GPU 上运行,而下一个内核将在 Hexagon 上开始执行吗? (然后是 CPU 上的另一个?)
    • 我们还没有办法实现并发内核,但您当然可以将内核拆分到多个设备上执行(即在 CPU 上执行 1/3,在 GPU 上执行 1/3,1/ 3 在 DSP 上)。
    【解决方案2】:

    RenderScript 如何在多个设备上拆分内核?总是等于设备吗? (即在 nexus 5 中,在 CPU 上执行 1/2,在 GPU 上执行 1/2?)。

    【讨论】:

    • 这应该是评论而不是答案
    • 由给定设备的特定驱动程序来确定如何对工作进行分区(CPU、GPU 等)。它可能是静态的(即尽可能在 GPU 上执行内核),也可能是动态的(即 GPU 因其他工作而过载,因此这次在 CPU 上执行)。
    • GPU驱动决定工作分区? (即在 Nexus 5 中,内核被发送到 GPU 并且 Adreno 驱动器决定执行多少?)我的问题是谁(Renderscript,Adreno 驱动器)划分工作负载?
    • 不仅仅是 GPU 驱动程序。供应商的司机做出这些决定。现在,我认为他们中的任何一个都没有真正拆分工作,而是在 CPU 与 GPU 上做出全有或全无的决定。也就是说,该框架实际上可以拆分工作,但尚未使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    相关资源
    最近更新 更多