我正在为使用霓虹灯(.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扩展)。
将内存传输到64位寄存器:
uint8x8_t ui88Line1 = vld1_u8 ( Data + 8*0 );
将数据从64位寄存器传输到128位,其中8位到16位转换符号。
uint16x8_t ui816Kernel1 = vmovl_u8 ( ui88Kernel1 );
我真的需要大师的帮助才能做出更好的选择。
注意:我已经在C / C ++中使用,OpenCV没有针对这个平台进行优化。