各位专家好:
需要对一个运算过程进行优化,由于之前没接触过跟优化有关的问题,只是在使用daplib的时候稍微接触过,有一些基础的问题想问大家:
一,我使用了dsplib中的fft函数,但是我发现如果将fft的源函数直接放入工程中用-o3编译运行速度回变得慢不少,而且我发现dsplib工程自带的cmd文件的如下语 句
会警告找不到section:
.kernel:{
dsplib*<*.o*>(.text:optimized){SIZE(_kernel_size)}
}
我发现这对应一种优化方法确定的储存地址,这是不是意味着,只是用优化的语言写计算过程还不够,还需要对编译方法,储存方式进行编写?如果是的话 能否麻烦告诉我需要去学习哪些文件。
二,我发现每个dsplib的函数都有3中方法作对比,结合能找到的资料我发现除了原本c语言方法以外,有两种优化方法种分别是是用optimizing loops和.sa汇编语 言。我发现optimizing loops要比汇编慢,那它在实际应用中有价值吗?
谢谢!
jimmy cui:
一、我做DSP优化做了5年了,CMD文件主要是内存分配,被处理的数据分配到越接近CPU速度就越快(一般用L2,分配到DDR3处理速度明显慢很多)
二、每个dsplib的函数都有3种方法作对比,那它在实际应用中有价值吗?当然有,TI公司的文件不单单只照顾高手,还要关照着小白,.C文件完全没有优化,只是给用户看看基本的原理,所以如果你调用.C,没有任何的优化效果(当然TI的.C也会比你自己写的优一些),而.sa是最优化的写法,不需要看得懂,直接调用就是最优,结果和.C的结果完全一样,无需怀疑!
xu kuang:
回复 jimmy cui:
十分感谢您的讲解!还有一点不太明白想请教一下。我将优化的文件加进工程中编译,发现运算速度变得很慢,.cmd文件中的代码警告找不到section:
.kernel:{
dsplib*<*.o*>(.text:optimized){SIZE(_kernel_size)}
}
能否请您说一下这句话是什么意思,还有比如
.args load > L2SRAM align = 0x4 ,fill = 0{_atgsize = 0x200}
.sdc.meta load >>L2SRAM ,type = COPY
这样的语句是优化必须的么,谢谢!
TI中文支持网



![CCS7.4 中遇到[E0001] Illegal symbol 问题-TI中文支持网](https://e2echina.ti.com/resized-image.ashx/__size/550x0/__key/communityserver-discussions-components-files/56/7178.Console.jpg)