【问题标题】:GPGPU Android Emulator (Renderscript / OpenCL)GPGPU Android 模拟器 (Renderscript / OpenCL)
【发布时间】:2017-12-30 01:19:32
【问题描述】:

更具体地说,我想在实际运行在我计算机的 GPU 而不是 CPU 上的 Android 模拟器中运行 OpenCL / Renderscript 代码。不幸的是,我使用的是 AMD CPU 和 GPU。

我知道 AMD 通过 SDK 支持 OpenGL ES(并且几乎所有东西都支持 OpenCL),但就我在这方面的了解而言——我发现的关于模拟器的唯一 OpenCL / Renderscript 信息是它们要么根本不工作,或者,如果我有英特尔 CPU,我可以在模拟器中安装 OpenCL,但它只会使用 CPU(坦率地说,如果我的模拟器在幕后没有,我不会感到惊讶已经这样做了——OpenCV 运行正常,但 OpenCL-Z 表示不支持 OpenCL)。

有没有办法将命令从模拟器发送到我的操作系统并让它自动运行?我想出的唯一方法是保存和加载一个文本文件,考虑到我正在运行 2 个模拟器实例,该文件可能不会更快(或对我的硬盘驱动器有益)。

我发现官方仿真器支持 RenderScript,但表示仿真器不适用于我的用例,我强烈怀疑它会使用我的 GPU。

我目前正在使用 Memu,因为 Bluestacks 3 在运行 2 个实例时使用了更多资源,而第二个实例由于某种原因不能很好地与 adb 命令/root 一起工作 - 它认为它正在工作,但它没有做任何事物。如果在运行 2 个实例时有一个更快的模拟器,我相信它会有所帮助,但奇怪的是,比较它们既困难又耗时(尤其是当每个实例都像“不,我是最快的 - 看看我的条形图!”大声笑),最终我相信我的问题在于 OpenCV 没有获得 GPU 加速(因为它在我的手机上运行得更快)而不是模拟器的基本速度。

我已启用 AMD 的虚拟化功能(已通过 Leomoon 或 w/e 确认),并且已在 Memu 的管理器中启用。那么,也许这已经在幕后工作了?无论哪种方式,一旦 OpenCV 的东西开始发挥作用,每个实例的仿真成本都会增加 10%(从 60% 增加到 80%+)

【问题讨论】:

    标签: android opencv android-emulator amd-processor


    【解决方案1】:

    使用一种语言(如 Python)并通过 ADB 发送命令。 Python 可以挂钩到 OpenCL 和 OpenCV; ADB 可用于获取屏幕截图的帧缓冲区,或者 Python 可以仅捕获模拟器的窗口渲染。

    或者,可以使用 SocketIO(在我的例子中是 Flask Socket IO 和 Javascript 的客户端套接字 IO)建立连接,并且它们可以通过这种方式进行通信。通过模拟器和真机上的浏览器确认。每个模拟器都有与您的本机操作系统通信的端口。我最终选择不走这条路,因为它有点复杂(2 台服务器,不同的语言,不比 ADB over LAN 好),但这是一个选择。 Java (iirc) 也可以很好地运行 SocketIO,对于许多熟悉该语言并希望在 Android 设备上本地运行一些东西的开发人员来说,这可能是一个不错的选择。

    感到身体不适并在手机上打字,因此对于目前缺乏示例和帮助,我深表歉意。希望我能抓紧时间来解决这个问题,但坦率地说,除了我目前的目标之外,几乎没有这个用例,而且它从一开始就非常小众。

    【讨论】:

      猜你喜欢
      • 2011-04-17
      • 1970-01-01
      • 2013-05-06
      • 2015-04-30
      • 2013-09-03
      • 2011-02-07
      • 2019-09-30
      • 1970-01-01
      • 2015-10-23
      相关资源
      最近更新 更多