打印
[牛人杂谈]

NUC505浮点型运算怎么好慢啊

[复制链接]
929|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wululu|  楼主 | 2018-11-2 18:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序里面用到cos函数进行计算,如果单纯的用math.c计算一次大概将近2ms,用arm_math.c可以提升到0.5ms,同时我用stm32f1测试,用math.c大概就0.115ms,请问一下差别真有这么大吗,或者是我自己那块搞错了...
沙发
wululu|  楼主 | 2018-11-2 18:43 | 只看该作者
关键NUC支持DSP指令和浮点运算单元

使用特权

评论回复
板凳
xyz549040622| | 2018-11-3 08:00 | 只看该作者
你开启浮点运算了吗?是不是需要进行设置

使用特权

评论回复
地板
wululu|  楼主 | 2018-11-3 10:56 | 只看该作者
xyz549040622 发表于 2018-11-3 08:00
你开启浮点运算了吗?是不是需要进行设置

一个就是系统初始化  再就是配置,计算结果是正确的     所以..........

使用特权

评论回复
5
734774645| | 2018-11-3 16:52 | 只看该作者
你要调用DSP的库操作才行。

使用特权

评论回复
6
734774645| | 2018-11-3 16:53 | 只看该作者
#include <math.h>     
#include "arm_math.h"

/* ----------------------------------------------------------------------
* Defines each of the tests performed
* ------------------------------------------------------------------- */
#define MAX_BLOCKSIZE        32
#define DELTA           (0.000001f)


/* ----------------------------------------------------------------------
* Test input data for Floating point sin_cos example for 32-blockSize
* Generated by the MATLAB randn() function
* ------------------------------------------------------------------- */

const float32_t testInput_f32[MAX_BLOCKSIZE] =  
{   
        -1.244916875853235400,        -4.793533929171324800,        0.360705030233248850,        0.827929644170887320,        -3.299532218312426900,        3.427441903227623800,        3.422401784294607700,        -0.108308165334010680,         
        0.941943896490312180,        0.502609575000365850,        -0.537345278736373500,        2.088817392965764500,        -1.693168684143455700,        6.283185307179590700,        -0.392545884746175080,        0.327893095115825040,         
        3.070147440456292300,        0.170611405884662230,        -0.275275082396073010,        -2.395492805446796300,        0.847311163536506600,        -3.845517018083148800,        2.055818378415868300,        4.672594161978930800,         
        -1.990923030266425800,        2.469305197656249500,        3.609002606064021000,        -4.586736582331667500,        -4.147080139136136300,        1.643756718868359500,        -1.150866392366494800,        1.985805026477433800


};  

const float32_t testRefOutput_f32 = 1.000000000;

/* ----------------------------------------------------------------------
* Declare Global variables  
* ------------------------------------------------------------------- */
uint32_t blockSize = 32;
float32_t  testOutput;  
float32_t  cosOutput;  
float32_t  sinOutput;  
float32_t  cosSquareOutput;  
float32_t  sinSquareOutput;

/* ----------------------------------------------------------------------
* Max magnitude FFT Bin test
* ------------------------------------------------------------------- */

arm_status status;

int32_t main(void)
{
        float32_t diff;
        uint32_t i;

        for(i=0; i< blockSize; i++)
    {
        cosOutput = arm_cos_f32(testInput_f32[i]);
                sinOutput = arm_sin_f32(testInput_f32[i]);

                arm_mult_f32(&cosOutput, &cosOutput, &cosSquareOutput, 1);
                arm_mult_f32(&sinOutput, &sinOutput, &sinSquareOutput, 1);

                arm_add_f32(&cosSquareOutput, &sinSquareOutput, &testOutput, 1);

                /* absolute value of difference between ref and test */
            diff = fabsf(testRefOutput_f32 - testOutput);
         
            /* Comparison of sin_cos value with reference */
            if(diff > DELTA)
            {
                   status = ARM_MATH_TEST_FAILURE;
            }
                 
            if( status == ARM_MATH_TEST_FAILURE)
            {
               while(1);
            }

    }

    while(1);                             /* main function does not return */
}

/** \endlink */

使用特权

评论回复
7
jasontu| | 2018-11-5 08:54 | 只看该作者
有把代碼放在RAM跑嗎?
NUC505如果把SPI FLASH放在ram中,至少加速到4倍

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

21

帖子

0

粉丝