为了达到减少时间的目的开了三级优化,但是发现开了以后函数实现的功能出现了错误,但是把3级优化关掉,不开优化功能就对着的,时间上面会满足要求,麻烦问一下怎么解决?
补充说明一下:把优化级别调低也可以实现功能,比如开1级优化,但是这样对我所有的函数都开了1级优化,影响了处理速度,问一下是否可以对不同的函数开不同的优化级别呢?比如开3级优化出错的就开1级优化,其他的直接开3级优化?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,我主要的思路是:用EDMA从DDR3传输一行复数数据到L2中,对数据进行求模(就是sqrt功能)后在用EDMA从L2中把数据搬移到DDR3中,这个好像没有涉及到控制什么的,不开优化的时候功能是对的。
还有您说可以对文件及函数级开不同的优化选项,但是我对一个工程里面的单独一个.c文件开3级优化会发现全部的.c都开了3级优化,把其中一个.c文件3级优化关掉,全部.c文件的3级优化就关掉了,您说的可以对文件及函数级开不同的优化选项具体是怎样操作呢?
最后一个问题是EDMA按道理说是不会占据CPU时间的,但是上面说到的,从DDR3传输数据到L2,进行算法,从L2用EDMA把数据搬到DDR3这个过程的EDMA的耗时每次好像还不少,特别是数据不是连续的,需要跳地址取或者存数据的时候耗时更加多,请问如果想要完全去掉这个EDMA传输的耗时需要怎么做??
问题比较多,麻烦专家解答下,非常感谢!!!
您好,
1. EDMA可以和Core并行工作,但是如果使用等待的方法等数据搬运完后进行后续处理,此时相当于在EDMA搬数的过程CPU并没有并行在干有效的工作;所以如果要体现EDMA的优势就必须对EDMA及core的处理排好流水;
请问你是在启动EDMA后等待数据搬运完成,才执行下面的处理么?这样肯定要占用core的cycle。
2. 可以对一个文件的属性选择特定的优化选项,而不是修改工程的属性;
3. 关于加优化处理结果不正确,请分步从输入数据、处理过程进行分析,到底出错在哪里。o3优化参考spru187手册。