0

我在 Android 手机上使用 adreno 650 和 mali G72 MP12 进行了一些测试。我惊讶地发现,在 100 个特征周期中,马里的速度更快,然后几乎等于肾上腺素。

我还发现,如果您使用 arraySecondEvent.wait() 并将事件返回添加到内核调用。它使用肾上腺素杀死性能。

经过 1 周检查后,我看到的唯一一个非常大的问题是 enqueueReadBuffer 非常非常慢。也许是肾上腺素驱动器的另一个特殊用途。

但是对于 512*512 的缓冲区大小,超过 65 毫秒是灾难性的。可怕。

因为我已经说过,如果你从内核调用一个函数,你需要使用 adreno 将函数声明为静态函数,否则它非常非常慢。

所以我想我在使用 enqueueReadBuffer 和 adreno 时做错了。enqueueReadBuffer 或 enqueueWriteBuffer 之一需要将近 60 毫秒。有时第一次有时另一个。缓冲区的大小无关紧要。很奇怪!

也许缓冲区的类型?

所以我认为mali 和adreno 的实现有很大不同。

************ 上次测试 ************

从内核调用中删除事件会发送调试时间,但不是内核特征的结束。

因为我总是有 60 毫秒的问题,所以我每次调用 queue.flush(),我发现这是内核执行,它在 adreno 上非常慢。而 60 毫秒的延迟是在 enqueueReadBuffer 或 enqueueWriteBuffer 之前执行内核所需的时间。

因此,有人可以确认 adreno 650 或 qualcomm 上的 qualcomm OPENCL 通常非常慢。

4

0 回答 0