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.

[参考译文] CCS/TDA4VM:MMALIB_LINALG_matrixTranspose 计算错误和 C71在 funcStyle = MMALIB_FUNCTION_OPENTITED 时卡住

Guru**** 2589280 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/981989/ccs-tda4vm-mmalib_linalg_matrixtranspose-calculation-error-and-c71-stuck-while-funcstyle-mmalib_function_optimized

器件型号:TDA4VM

工具/软件:Code Composer Studio

大家好、

我已读取该线程  

据说、如果我们要在  MMALIB_FUNCTION_OPENized 模式下使用 MMALIB_LINALG_matrixTranspose、则必须在链接器文件中设置 l2dmemory 段。

我在  TIDL 定制层中使用了 MMALIB_LINALG_matrixTranspose、

我在 linker_dsp.cmd 中添加以下行:

.l2dmemory       > L2SRAM

此外、我设置 L2SRAM len = 0x78000  (448KB+32KB)

我在 tidl_tb.c:cSL_c7xSetL2CacheSize (1)中设置 L2缓存大小= 32KB。

 

当我在 EVM 中测试 tidl_TB 时、 MMALIB_LINALG_matrixTranspose 会给出错误的结果、C71卡在下一实例的测试中。

但是、当我在   MMALIB_FUNCTION_NATC 模式下调用 MMALIB_LINALG_matrixTranspose 时、tidl_TB 在 HOST_EMUulation 模式下正确运行。

任何人都知道我在哪里犯了错误。

如何在 tidl 自定义图层中调用函数样式= MMALIB_LINALG_matrixTranspose?

   l2dmemory 段将使用多少内存大小?

这确实是一个紧迫的问题。

此致、

兰斯。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面显示 了映射文件中.l2dmemory 或 MMALIB_LINALG_matrixTranspose_i32s_o32s_IdentityBlock 的地址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是我的 init 参数:

    src.data_type = MMALIB_INT8;

    src.dim_x = 135;

    src.dim_y = 20;

    src.stare_y = 135;

    dst.data_type = MMALIB_INT8;

    dst.DIM_x = 20;

    dst.DIM_y = 135;

    dst.stope_y = 20;

    src 和 dst 缓冲器的地址都 位于 L2 SRAM 中、并且64字节对齐。

    MMALIB_LINALG_matrixTranspose 的 init_checkParams 和 exec_checkParams 都返回成功。

    我在 EVM 板上测试了 MMALIB_LINALG_matrixTranspose、它正常、结果正确。

    但是、当我 使用 TIDL 在自定义层中运行 MMALIB_LINALG_matrixTranspose 时、结果是错误的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

       当您在 TIDL 中使用图层作为自定义图层时、TIDL 会获取所有缓冲区的内存分配。 L2存储器可作为  TIDL_customLayerProcess 函数的 sysMems 参数的一部分进行访问。 我们还添加了对 DMA 抽象的支持、  可以从 ti_dl/custom/tidl_custom/maxpooling.c 文件中的 TIDL_customMaxPoolDspProcess 函数中看到这方面的示例。 请查看相同的机制是否适合您。

    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、安州、

     感谢您的回复、但我认为此问题剂量与 L2存储 器分配和 DMA 没有太大关系。 我 已经在我的其他自定义层中使用过 L2存储器和 DMA。

    我认为这个问题主要与 TIDL 背景下 MMA 转置的使用有关。

    我们可以尝试在您的一侧重现此问题。

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

       您的层是否涉及 DMA? 还是现在它仅使用 MMALIB 内核?

    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、安州、

    我的层涉及 DMA 和 MMALIB 函数。

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Lance、

      对于 DMA、您使用的是什么 API?


    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。



    您好、Anshu、\

    我使用了以下 API:

    • DMAUtilsAutoInc3d_preparetr
    • DMAUtilsAutoInc3d_configure
    • DMAUtilsAutoInc3d_trigger
    • DMAUtilsAutoInc3d_wait

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Lance、
      您能否注释所有 DMA 调用并查看执行是否仍然受阻?

      这将有助于确定问题是在 DMA 中还是在 MALIB 内核中。


    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 安州、

    我使用  memcpy 重新调用所有 DMA 调用、C71不会卡住、但结果仍然错误。

    我在 DMA 调用中发现错误、我在一个通道中触发了两次 TR、但仅等待一次。 这可能是 C71在 下一个实例测试中卡住的原因。

    现在我修复了错误、测试结果如下:  

    • 定制层中的 DMA + MMALIB_Transpose (funcStyle = MMALIB_FUNCLOCST_OPENTED)、结果错误、C71不会卡住;
    • DMA + MMALIB_Transpose (funcStyle = MMALIB_FUNCK_NATC)在自定义图层中、结果正确、C71不会卡住;(一切正常)

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

    我从之前的回复中选择了您的信息。

    >>我在 EVM 板上测试了 MMALIB_LINALG_matrixTranspose、结果是正确的。

    您能否确认您提到的配置仅适用于 MMALIB 的 natc 和优化代码?

     集成 TIDL 自定义层时、优化代码的相同配置失败。

    此致、

    Asheesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Asheesh:

    我将测试结果整理到一个表格中:

    硬件 TIDL 定制层交叉格式 funcStyle 结果 程序
    EVM natc 正确

    在 CCS 中编译、除了 MMALIB 之外、没有依赖关系  

    EVM 优化 正确

    在 CCS 中编译、除了 MMALIB 之外、没有依赖关系  

    EVM 是的 natc 正确

    使用 TIDL 编译、使用 tidl_TB 执行

    EVM 是的 优化

    错误

    使用 TIDL 编译、使用 tidl_TB 执行

    配置是相同的。

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

    谢谢你。

    自定义图层设置中可能存在错误。

    此致

    Asheesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

      如果 NATC 模式与自定义层一起工作、则表示数据流/DMA 按预期工作。 您能否共享 用于初始化 MMALIB 转置函数的参数? 我正在查找以下变量的值:

    MMALIB_LINALG_matrixTranspose_Ixx_oxX_InitArgs

     MMALIB_BufParams2D_t * bufParamsIn、  

    MMALIB_BufParams2D_t * bufParamsOut

    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、安州、

    MMALIB_LINALG_matrixTranspose_Ixx_oxX_InitArgs kerInitArgs;

    kernInitArgs.funcStyle = MMALIB_FUNC功能性 优化;

    MMALIB_BufParams2D_t bufParamsIn、

    bufParamsIn.data_type = MMALIB_INT8;

    bufParamsIn.DIM_x = 510;

    bufParamsIn.DIM_y = 20;

    bufParamsIn.STRING_y = bufParamsIn.DIM_x * MMALIB_sizeof (bufParamsIn.data_type);

    MMALIB_BufParams2D_t bufParamsOut、

    bufParamsOut.data_type = MMALIB_INT8;

    bufParamsOut.DIM_x =bufParamsIn.DIM_y;

    bufParamsOut.DIM_y =bufParamsIn.DIM_x;

    bufParamsOut.STRANT_y =bufParamsOut.DIM_x * MMALIB_sizeof (bufParamsOut.data_type);

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有任何进展?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

       MMALIB 团队确认他们没有发现您提供的参数有任何问题。 现在、调试更加复杂一些。 是否可以分享您的实施情况以进行审核?


    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、安州、

    他们是否在 TIDL 自定义层?中尝试过它  

    [引用 userid="4366" URL"~/support/tools/ccs/f/code-composer-studio-forum/981989/ccs-tda4vm-mmalib_linalg_matrixtranspose-calculation-error-and-c71-stuck-while-funcstyle-mmalib_function_optimized/3633389 #3633389"]

    自定义图层设置中可能存在错误。

    [/报价]

    我的输入缓冲器和输出缓冲器都分配在 L2 SRAM 中。

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Lance、

       没有,他们没有尝试使用自定义图层,只验证了 MMALIB 参数是否正确。 要尝试定制层、我们需要定制层实现。  您可以共享吗?


    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、安州、

    是的。 我可以共享 演示。

    我将准备 演示、稍后再为您重现问题。

    我可以通过仲明把演示传递给您吗?

    此致、

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Lance:

    是的、请这么做。 我们将等待这一过程。

    -凯尔西