使用霓虹灯

时间:2016-09-05 08:17:27

标签: assembly arm convolution neon meta-raspberrypi

我正在为使用霓虹灯(.s或instric)的ARM v7程序集编写的Raspberry Pi 2搜索非常快速的卷积函数。

如果这不存在(我搜索了好几天),欢迎任何写作的帮助,我开始阅读霓虹灯程序员的指南,但这很难......

我在ARM程序集中尝试了一个带有参数和返回值的基本函数,我可以用C ++调用它,这样就可以了。

我通过将数据移动到氖寄存器vld1_u8尝试了一个基本测试,我可以用vst1_u8检索它,所以头和编译器都可以......

对我来说最复杂的是设计一个函数并选择正确的指令来实现它:

数据:320x240灰度图像(每像素8位) 速度:20 fps
matrix:包含从-1到1的浮点值(基本无因子,因子sum = 0,大小为7x7但可以用0到8x8扩展)。

我尝试做:

  1. 将内存传输到64位寄存器:

    uint8x8_t ui88Line1 = vld1_u8 ( Data + 8*0 );
    
  2. 将数据从64位寄存器传输到128位,其中8位到16位转换符号。

    uint16x8_t ui816Kernel1 = vmovl_u8 ( ui88Kernel1 );
    
  3. 其余的我正在寻找:

    • 我是否需要在数据中添加255而不是处理负值或使用转换u16到s16?
    • 我是否需要应用7(* 64)的移位以保持浮点精度或使用霓虹灯浮点实现?

    我真的需要大师的帮助才能做出更好的选择。

    注意:我已经在C / C ++中使用,OpenCV没有针对这个平台进行优化。

0 个答案:

没有答案