【摘要】:所以,栅格投影并不适合放入GPU优化,我们采用NVIDIA Tegra X1 ARM处理器来处理该过程。Tegra X1 ARM中加法和移位可以通过一条指令来完成,且执行时间少于乘法指令。
激光雷达数据是大量的随机数据,所以激光雷达数据投影栅格时将会有大量的访存。其一,激光雷达数据是随机的,无法确定激光雷达数据投影所在栅格的具体位置,因此无法利用合并访问来发挥GPU独有的优势;其二,无法确定激光雷达数据是栅格内第几个数据,需要通过累加来计算栅格内数据量,这将影响激光雷达数据之间的并行性,使得性能降低。所以,栅格投影并不适合放入GPU优化,我们采用NVIDIA Tegra X1 ARM处理器来处理该过程。
通过上述分析,本文结合ARM的运算特点,对该算法主要进行两方面优化。
1.减小运算强度
利用左/右移位操作代替乘/除2运算:乘以2的幂次方或除以2的幂次方通常都可以通过左移或右移n位来完成。实际上乘以任何一个整数都可以通过移位和加法来代替乘法。Tegra X1 ARM中加法和移位可以通过一条指令来完成,且执行时间少于乘法指令。例如:α=α×5可以用α=(α<<2)+α来代替。(www.daowen.com)
利用逻辑与运算代替求余运算:用逻辑与(AND)指令代替求余操作(%)来提高效率。例如:α=α&0×07可以用来代替α=α%8。
2.优化循环终止
Tegra X1 ARM中判断条件在一个循环结构中,循环的终止条件将严重影响循环的效率,再加上ARM指令的判断条件执行特性,所以在编写循环终止条件语句时应尽量使用count-down-to-zero结构。这样编译器可以用一条BNE(若非零则跳转)指令代替CMP(比较)和BLE(若小于则跳转)两条指令,既减小代码尺寸,又加快了栅格投影在Tegra X1 ARM上的运行速度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关视频图像处理与性能优化的文章