器件型号: J784S4XEVM
我正在使用 TI C 7000 测试代码的执行时间。 我要进行基准测试的代码部分由 MATLAB 生成。 我观察到、考虑到其他一切都是相同的变化:
-- opt_level 从关闭到 4 :没有加速代码执行
–opt_for_speed 从 0 到 4:未加速代码执行
-- fp_mode 从严格到宽松:没有加速代码执行
看到这种执行时间没有差异后、我将代码块替换为下面给出的测试函数:
1024
//声明一个外部函数以“消耗“矩阵
//阻止编译器优化所有内容
#ifdef _cplusplus
extern “C"{“{
#endif
空 useMatrix(浮动 MATR[MATRY_SIZE][MATRY_SIZE])
{
易失性浮点灌电流= MAT[0][0];
(void) 水槽;
}
#ifdef _cplusplus
}
#endif
静态浮点矩阵[MATRY_SIZE][MATRY_SIZE];
int32_t 测试类::: Init ()
{
对于 (int i = 0;i < Matrix_size;i++){
对于 (int j = 0;j < Matrix_size;j++){
Matrix[i][j]=(浮点)(i + j);
}
}
InitFlag = true;
}
Void TestClass::TestOptimization ()
{
// I 递增、j 递减(按请求)
for (int i = Matrix_size - 1;i >= 0;i-){
对于 (int j = Matrix_size - 1;j >= 0;j-){
浮点值= matrix [i][j];
//一些有助于优化的算术(FMA,流水线等)
VAL = val * 1.2345f + 0.9876f;
VAL = val * val - 0.4321f;
Matrix[i][j]= val;
}
}
//传递到外部函数、因此编译器无法消除它
useMatrix(矩阵);
}
测量 TestOptimization 函数的执行时间。 对于编译器选项、将-opt_level 从 off 更改为 2 或 4 不会加速执行时间。
为什么会这样? 您能向我们提供一些可以在代码执行中打开优化、观察和加速的方向吗?