android - Tensorflow Lite:糟糕的 GPU 性能
问题描述
我正在通过在 Android 设备上运行自定义模型(4 个完全连接的层,每个层有 400 个单元)来进行一些测试。我正在使用Tensorflow Lite Android benchmark application测试运行时性能。但是,我遇到了一个非常奇怪的行为:使用 GPU 对模型进行基准测试会导致性能比仅使用 CPU 更差。
这些是 CPU 的性能:
我们的平均推理时间:预热:38.8272,初始化:465,推理:38.8438,总体最大驻留集大小 = 0 MB,总 malloc 大小 = 0 MB,使用中分配/映射大小 = -0.273354 MB
虽然这些是我使用 GPU 获得的性能:
我们的平均推理时间:预热:418.266,初始化:297403,推理:1231.89,总体最大驻留集大小 = 29.2383 MB,总 malloc 大小 = 0 MB,使用中分配/映射大小 = 0.192513 MB
如您所见,GPU 的推理时间大约是 CPU 执行时间的 4 倍。怎么可能?
这是我用于对模型进行基准测试的命令:
adb shell am start -S -n org.tensorflow.lite.benchmark/.BenchmarkModelActivity \
--es args '"--graph=<model_path> --num_threads=4 --num_runs=10000 --use_gpu=true"'
解决方案
推荐阅读
- parallel-processing - 将数据从全局内存移动到共享内存是否会使线程停止?
- linux - 使用 QEMU 作为运行时/兼容性层(基本主机操作系统)
- node.js - NodeJS:fs.createReadStream 有时不会读取所需的“开始”和“结束”字节
- jquery - Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空
- java - Java/Scala 同步如何影响性能?
- node.js - HEROKU : node-pre-gyp install --fallback-to-build
- java - 为什么android中的sqlite光标返回不同的值?
- c++ - boost::filesystem:path 检测到两个路径共享同一个物理驱动器
- javascript - 选择框选项禁用/启用在 jQuery 中不起作用
- javascript - 当取 5 个大数的根时,在 js 中给出了错误的答案