3759|5

169

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

Altera socfpga NEON 指令加速测试成功(附源代码) [复制链接]

  本帖最后由 yupc123 于 2016-8-15 16:51 编辑

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         {
                ne10_add_float_neon(sum_vec,sum_vec,(float*)data+ALIGH_UNIT*i,ALIGH_UNIT);
        }
        for (int i=0;i         {
                sum+=sum_vec;
        }
        int odd = size & (ALIGH_UNIT-1);
        if(odd){
                for(int i=size-odd;i                         sum+=data;
        }
        return sum;
}
//普通C语言计算
static float calc_c(const float *data,int size)
{
        float sum=0.f;
        for(int i=0;i         {
                sum+=data;
        }
        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         {
                data=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;
}



此帖出自Altera SoC论坛

最新回复

谢谢 这么看,用NEON加速的浮点计算,就是快哈 211,000/10,000 = 21.1ns 148,000/10,000 = 14.8ns 800Mhz 1perilod = 1.25ns  详情 回复 发表于 2016-8-18 20:58

赞赏

1

查看全部赞赏

点赞 关注
 
 

回复
举报

1950

帖子

4

TA的资源

版主

沙发
 
谢谢 yupc123 分享

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

soc_cyclonev.gif (31.31 KB, 下载次数: 0)

soc_cyclonev.gif
此帖出自Altera SoC论坛

点评

不加速是211us, 用neon加速为148us.  详情 回复 发表于 2016-8-16 08:42
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

169

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
5525 发表于 2016-8-15 22:34
谢谢 yupc123 分享

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

不加速是211us,
用neon加速为148us.
此帖出自Altera SoC论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

4
 
谢谢答复,你ARM主频设定的多少啊,
其实想知道 大概几个CPU周期 的 一个浮点计算的结果。
此帖出自Altera SoC论坛

点评

主频是800M,  详情 回复 发表于 2016-8-18 08:49
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

169

帖子

1

TA的资源

一粒金砂(高级)

5
 
5525 发表于 2016-8-16 20:50
谢谢答复,你ARM主频设定的多少啊,
其实想知道 大概几个CPU周期 的 一个浮点计算的结果。

主频是800M,
此帖出自Altera SoC论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

6
 
谢谢

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

800Mhz 1perilod = 1.25ns
此帖出自Altera SoC论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表