[FPGA开发] Altera socfpga NEON 指令加速测试成功(附源代码)

yupc123   2016-8-15 16:32 楼主
10000个浮点数据累加和测试,结果如下图: 浮点数据累加和测试 源代码如下: #include "NE10.h" #include #include #include #define ALIGH_UNIT 4 #define ARRAY_SIZE 10000 //NEONl加速 static float calc_ne10(const float* data,int size) { float sum = 0.f; float sum_vec[ALIGH_UNIT]={0}; for(int i=0; i; } int odd = size & (ALIGH_UNIT-1); if(odd){ for(int i=size-odd;i; } return sum; }//普通C语言计算 static float calc_c(const float *data,int size) { float sum=0.f; for(int i=0;i; } return sum; } int main(int argc,char** argv) { float data[ARRAY_SIZE] = {0}; float sum; struct timeval starttv; struct timeval endtv; for(int i=0;i=rand()%5; } gettimeofday(&starttv,NULL); sum=calc_c(data,ARRAY_SIZE); gettimeofday(&endtv,NULL); printf("calc_c=%f,time=%d us\n",sum,(int)(1000000*(endtv.tv_sec-starttv.tv_sec)+(endtv.tv_usec-starttv.tv_usec))); gettimeofday(&starttv,NULL); sum=calc_ne10(data,ARRAY_SIZE); gettimeofday(&endtv,NULL); printf("calc_c=%f,time=%d us\n",sum,(int)(1000000*(endtv.tv_sec-starttv.tv_sec)+(endtv.tv_usec-starttv.tv_usec))); //printf("calc_neon=%f\n",calc_ne10(data,ARRAY_SIZE)); return 0; } 本帖最后由 yupc123 于 2016-8-15 16:51 编辑
流媒体后视镜fpga方案    

回复评论 (5)

谢谢 yupc123 分享

上个SOC 的图,我是 没图不舒服斯基。
有没有不带加速的计算时间啊
  • soc_cyclonev.gif
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-15 22:34
引用: 5525 发表于 2016-8-15 22:34
谢谢 yupc123 分享

上个SOC 的图,我是 没图不舒服斯基。
有没有不带加速的计算时间啊

不加速是211us,
用neon加速为148us.
流媒体后视镜fpga方案    
点赞  2016-8-16 08:42
谢谢答复,你ARM主频设定的多少啊,
其实想知道 大概几个CPU周期 的 一个浮点计算的结果。
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-16 20:50
引用: 5525 发表于 2016-8-16 20:50
谢谢答复,你ARM主频设定的多少啊,
其实想知道 大概几个CPU周期 的 一个浮点计算的结果。

主频是800M,
流媒体后视镜fpga方案    
点赞  2016-8-18 08:49
谢谢

这么看,用NEON加速的浮点计算,就是快哈
211,000/10,000 = 21.1ns
148,000/10,000 = 14.8ns

800Mhz 1perilod = 1.25ns
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-18 20:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复