Other Parts Discussed in Thread: SYSBIOS
Thread 中讨论的其他器件:SYSBIOS
工具/软件:Code Composer Studio
您好!
我在 mmalib 中使用 MMALIB_LINALG_matrixTranspose 接口、我的 PSDK 版本为06_02_00_21。
以下是我的代码
静态空 matTrans (int* out、int* in、int M、int N){
MMALIB_BufParams2D_t aBuffer;
a Buffer.data_type = MMALIB_Int32;
aBuffer.DIM_x = N;
aBuffer.DIM_y = M;
aBuffer.broad_y = aBuffer.dim_x * MMALIB_sizeof (aBuffer.data_type);
MMALIB_BufParams2D_t bBuffer;
bBuffer.data_type = MMALIB_Int32;
bBuffer.DIM_x = M;
bBuffer.DIM_y = N;
bBuffer.brob_y = bBuffer.dim_x * MMALIB_sizeof (bBuffer.data_type);
MMALIB_LINALG_matrixTranspose_Ixx_oxX_InitArgs initArgs;
//initArgs.funcStyle = MMALIB_Function_NATC;
initArgs.funcStyle = MMALIB_function_optimized;
int32_t handleSize = MMALIB_LINALG_matrixTranspose_Ixx_oxX_getHandleSize (&initArgs);
MMALIB_kernelHandle kernelHandle = malloc (handleSize);
//检查参数是否会生成有效的句柄
MMALIB_STATUS initCheck = MMALIB_LINALG_matrixTranspose_Ixx_oxX_init_checkParams (kernelHandle、
aBuffer (&A)、
bBuffer (&B 缓冲区)、
initArgs);
printf ("Init check =%d.\n"、initCheck);
//生成句柄
MMALIB_STATUS initStatus = MMALIB_LINALG_matrixTranspose_Ixx_oxX_init (kernelHandle、&aBuffer、&bBuffer、&initArgs);
printf ("Init status =%d.\n"、initStatus);
//检查 execute 参数是否可用于执行
MMALIB_STATUS execCheck = MMALIB_LINALG_matrixTranspose_Ixx_oxX_exec_checkParams (kernelHandle、
在中、
输出);
printf ("Exec check =%d.\n"、execCheck);
//执行内核
MMALIB_STATUS execStatus = MMALIB_LINALG_matrixTranspose_Ixx_oxX_exec (kernelHandle、
在中、
输出);
printf ("Exec status =%d.\n"、execStatus);
printf ("MatMulIntrinsics Done……\n");
FREE(kernelHandle);
}
int main(){
int m、n;
int M = 4;
INT N = 4;
int Mata[16]={0、1、2、3、
4、5、6、7、
8、9、10、11、
12、13、14、15 };
int matB[16]={0};
MatTrans (&matB[0]、Mata[0]、M、N);
printf ("matB =\n");
对于(m = 0;m < M;m++)
{
对于(n = 0;n < N;n++)
{
printf ("%d "、matB[ m*N + n]);
}
printf ("\n");
}
返回0;
}
如果 funcStyle 参数是 MMALIB_Function_NATC,结果是正确的
[C7x_1 ] 25.874141 s:初始化检查= 0。
[C7x_1 ] 25.874162 s:初始化状态= 0。
[C7x_1 ] 25.874178 s:执行检查= 0。
[C7x_1 ] 25.874195 s:执行状态= 0。
[C7x_1 ] 25.874212 s:MatMulintrinsics 完成...
[C7x_1 ] 25.874226 s:matB =
[C7x_1 ] 25.874242 s:0 4 8 12.
[C7x_1 ] 25.874256 s:1 5 9 13.
[C7x_1 ] 25.874271秒:2 6 10 14
[C7x_1 ] 25.874286 s:3 7 11 15.
当 funcStyle 参数设置为 MMALIB_function_optimized 时,结果如下
[C7x_1 ] 32.679648 s:初始化检查= 0。
[C7x_1 ] 32.679671 s:初始化状态= 0。
[C7x_1 ] 32.679687 s:执行检查= 0。
[C7x_1 ] 32.679705 s:执行状态= 0。
[C7x_1 ] 32.679723 s:MatMulintrinsics 完成...
[C7x_1 ] 32.679738 s:matB =
[C7x_1 ] 32.679754 s:0 0 0 0
[C7x_1 ] 32.679771 s:0 0 0 0
[C7x_1 ] 32.679785 s:0 0 0 0
[C7x_1 ] 32.679800 s:0 0 0 0
我应该如何解决这个问题?
此致、
Henry