我在rk3399运行mali的sdk中的例子hello_world_opencl
同样数据量的情况下,下面这种情况耗时居然比上面快,哪位大神可以告知一下原因吗
800MHZx64/8(BYTE)*2(DDR)=12.8GByte/s这个是理论带宽,实际中会有冲突等因素影响,所以可能达不到这个值,具体还要看SOC的实现
假设第二种情况,读写了120M的数据,我把板子的运算频率调到800Mhz运行时间是15ms,程序实际运行时,达到的带宽才120/15=8G/s。这种情况下没有达到理论性能的原因是什么,这属于最简单的核函数了,应该不会是运算能力瓶颈,所以我假设这个核函数是被带宽瓶颈所限。
操作系统除了你的程序还有很多其他程序在运行的,任何的中断都有可能导致bus的冲突
非常感谢您的耐心回复,解决了一些困扰我许多天的问题,至于那两个核函数执行时间不同,如果我找到答案,会及时反馈。
欢迎,欢迎,有空来论坛多交流
您好,您知道mali-offline中Instructions emmited和Longest Path Cycles的区别吗,我是mali-T860的GPU,还是以这两个程序为例,分析的结果一致,如下图所示,按照我的想法L/S应该是3才对,还有Instructions emmited和Longest Path Cycles的ALU cycle不一致,分别是什么意思。
和RK厂商交流了下,是驱动的问题造成这两种情况运行时间的不一致,换了个合适的驱动后,两者运行时间一致。