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.

[参考译文] TMDSEVM572X:线性代数库示例

Guru**** 2614265 points
Other Parts Discussed in Thread: TMDSEVM572X

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648590/tmdsevm572x-linear-algebra-library-examples

器件型号:TMDSEVM572X

大家好

我已下载 SDK"ti-processor-sdk-linux-am57xx-evm-03.03.00.04" 。

我想在 电路板 AM572x 上运行 LINALG 示例、因此我按照  ti/ti-linalg-tree/examples/arm+dsp/readme.txt 指令  来构建示例源代码

这是 readme.txt 的内容:

LINALG 示例的构建说明:

1.为了构建 LINALG 示例、必须设置以下环境参数:
导出 target_rootdir= /linux-devkit/sysroots/cortexa15hf-vfp-neon-linux-gnueabi
导出 LINALG_DIR=

2.只需在示例根文件夹中键入"make"即可。

但有人‘,SDK 中没有名为“cortexa15hf-vfp-neon-linux-gnueabi”的文件夹,

“‘s”根,中只有两个文件夹,即‘armv7ahf-neon-linux-gnueabi’和‘x86_64-Arago-Linux’。

我知道 ‘x86_64-Arago-Linux’是 arm-gcc 交叉编译器, ‘armv7ahf-neon-linux-gnueabi’等于 ‘cortexa15hf-vfp-non-linux-gnueabi’?

假设是这样、因此我使用 target_rootdir=编译示例 /linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi、然后、我在电路板 AM572x 上运行示例、但似乎无法正确运行示例、结果如下:

/arm+dsp/dgemm_test#./dgemm_test
[210.860949] NET:注册协议系列41
[211.578120] OMAP-iommu 40d01000.MMU:IOMMU 故障:DA 0xc45dd780标志0x0
[211.584942] remoteproc2:在40800000.dsp 中检测到崩溃:类型 mmufault
[211.591588] OMAP-iommu 40d01000.MMU:40d01000.MMU:errs:0x00000002 da:0xc45dd780 PgD:0xdfab7114 * PgD:px00000000
[211.601765] remoteproc2:处理40800000.DSP 中的 crash #1
[211.607358] remoteproc2:恢复40800000.DSP
Recvfrom 失败:链接已断开(67)
rpmsgThreadFxn:FD 18上的 transportGet 失败、返回-20
DG[ 211.640365] OMAP-hwmod:mu1_dsp1:_wait_target_disable 失败
EMM_TEST:/home/gtbldadm/processor-sdk-linux-fido-build/build-CO [ 211.652837] OMAP-hwmod:mu0_dsp1:_wait_target_disable 失败
RTEX_1/Arago-tmp-external-linaro-toolchain/work /am57xx_evm-linux[211.658891] remoteproc2:已停止远程处理器40800000.dsp
-gnueabi/OpenCL/1.1.7.2-r0.0.tisdk0/gIT/host/src/core/dsp/mbox_impl_msgq.cpp:121:uint32_t MboxMsgQ::::`m(uint8_t*、uint32_t*、uint8_t):uint8_sg 无效!
TransportRpmsg_put:发送失败:108 (在传输端点关闭后无法发送)
DGEMM_TEST:/home/gtbldadm/processor-sdk-linux-fido-build/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/am57xx_evm-l [ 211.700359] remoteproc2:为40800000.DSP 加电
inux-gnueabi/OpenCL/1.1.7.2-r0.tisdk0/gIT/host/src/core/dsp/MB[211.709337] remoteproc2:引导 FW 映像 dra7-dsp1-fw.xe66、大小21591344
ox_impl_msgq.cpp:107:void MBoxMsgQ:::write (uint8_t*、uint32_t、u[ 211.728101] omap_hwmod:mu0_dsp1:_wait_target_disable 失败
int32_t、uint8_t):断言`status =(0)'失败。
[211.734063] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
[211.7444644] OMAP-iommu 40d02000.MMU:40d02000.MMU:版本3.0
[211.757427] remoteproc2:RSC_INTMEM 已弃用。 请勿使用此资源类型来支持加载到内部存储器中。
[211.774302] remoteproc2:远程处理器40800000.DSP 现已启动
[211.781138] virtio_rpmsg_bus virtio3:rpmsg 主机处于联机状态
[211.786694] remoteproc2:registered virtio3 (type 7)

这块板 会一直保持下去,再也不会继续了,我不知道原因,请帮我,非常感谢!!

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

    您是否见过 wiki: processors.wiki.ti.com/.../Processor_SDK_Linear_Algebra_Library
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复、我已阅读此 wiki、但无法解决我的问题。
    printf 信息显示了一些错误、例如

    [211.578120] OMAP-iommu 40d01000.MMU:IOMMU 故障:DA 0xc45dd780标志0x0
    DG[ 211.640365] OMAP-hwmod:mu1_dsp1:_wait_target_disable 失败

    它建议我的板有一些问题??
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    >>OMAP-iommu 40d01000.MMU:IOMMU 故障:DA 0xc45dd780标志0x0
    这表示您可能有错误的 DSP1映像? 您能否在/lib/firmware?下列出文件

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

    感谢您的回复、这是/lib/firmware 下的文件

    root@am57xx-evm:/lib/firmware ls -al
    共计132736
    drwxr-xr-x 4 root 4096 jan 28 20:53。
    drwxr-xr-x 8 root 4096 jan 28 23:59 ..
    -rw-r--r-- 1 root root 4831660 Jan 28 19:56 NameServerApp.xe66
    lrwxrwxrwx 1 root root root 用户49 Jan 28 20:53 am57xx-pru1_0-FW ->/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt1_0.out
    lrwxrwxrwx 1 root root 用户49 jan 28 20:53 am57xx-pru1_1-fw ->/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt1_1.out
    lrwxrwxrwx 1 root root root 用户49 Jan 28 20:53 am57xx-pru2_0-FW ->/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt2_0.out
    lrwxrwxrwx 1 root root 用户49 jan 28 20:53 am57xx-pru2_1-fw ->/lib/firmware/pru/PRU_RPMsg_Echo_Interrupt2_1.out
    lrwxrwxrwx 1 root root 用户46 Jan 28 20:53 dra7-dsp1-fw.xe66 ->/lib/firmware/dra7-dsp1-fw.xe66.opencl-monitor
    -rw-r--r-- 1 root root 863516 Jan 28 20:03 dra7-dsp1-fw.xe66.dspdce-fw
    -rwxr-xr-x 1根根6937149 1月28日19:14 dra7-dsp1-fw.xe66.IPC-test-FW
    -rw-r--r-- 1根根根21591344 Jan 28 20:17 dra7-dsp1-fw.xe66.OpenCL-monitor
    lrwxrwxrwx 1 root root 用户46 Jan 28 20:53 dra7-dsp2-fw.xe66 ->/lib/firmware/dra7-dsp2-fw.xe66.opencl-monitor
    -rwxr-xr-x 1根根6937149 1月28日19:14 dra7-dsp2-fw.xe66.IPC-test-FW
    -rw-r--r-- 1根根根21591344 Jan 28 20:24 dra7-dsp2-fw.xe66.OpenCL-monitor
    lrwxrwxrwx 1 root root 用户43 Jan 28 20:53 dra7-ipu1-fw.xem4 ->/lib/firmware/dra7-ipu1-fw.xem4.ipc-test-fw
    -rwxr-xr-x 1根根根6142375 JAN 28 19:14 dra7-ipu1-fw.xem4.IPC-test-FW
    -rw-r--r-- 1根根3485072年1月28日20:00 dra7-ipu2-fw.xem4
    -rwxr-xr-x 1根根根6142375 JAN 28 19:14 dra7-ipu2-fw.xem4.IPC-test-FW
    lrwxrwxrwx 1 root root 用户46 Jan 28 20:53 ducati-m3-core0.xem3 ->/lib/firmware/ducati-m3-core0.xem3.ipc-test-fw
    -rwxr-xr-x 1根根5818304 JAN 28 19:14 Ducati-m3-core0.xem3.ipc-test-FW
    -rw-r--r-- 1根根目录4725924 Jan 28 19:56 fault.xe66
    -rw-r--r-- 1根根5647192 JAN 28 19:56 gatempapp.xe66
    -rw-r--r-- 1根根根目录4757056 Jan 28 19:56 MessageQ_multi.xe66
    -rw-r--r-- 1根 root 4767792 Jan 28 19:56 MessageQ_multi.xe66
    -rw-r--r-- 1根根4744640 JAN 28 19:56 MessageQ_single.xe66
    -rw-r--r-- 1根根根4492548一月28 19:56 ping_rpmsg.xe66
    -rw-r--r-- 1根根根4526940一月28 19:56 ping_tases.xe66
    drwxr-xr-x 2 root 4096 jan 28 20:49 PRU
    lrwxrwxrwx 1根根根根41年1月28日20:53特斯拉-dsps.xe64T ->/lib/firmware/tesla-dsp.xe64T.ipc-test-fw
    -rwxr-xr-x 1根根6029943 1月28日19:14特斯拉-dsps.xe64T.IPC-test-FW
    -rw-r--r-- 1根根根5837608 JAN 28 19:56 test_OMX_dsp1_vayu.xe66
    -rw-r--r-- 1根根5727288年1月28日19:56 test_OMX_dsp2_vayu.xe66
    drwxr-xr-x 2 root 4096 jan 28 20:51 ti-connectivity
    -rw-r--r-- 1 root root 4002 Jan 28 19:28 vpdma-1b8.bin
    root@am57xx-EVM:/lib/firmware

    现在、我意识到电路板的输出信息是混乱的、我已经对 其进行了修改、应该是:

    /arm+dsp/dgemm_test#./dgemm_test
    [210.860949] NET:注册协议系列41
    [211.578120] OMAP-iommu 40d01000.MMU:IOMMU 故障:DA 0xc45dd780标志0x0
    [211.584942] remoteproc2:在40800000.dsp 中检测到崩溃:类型 mmufault
    [211.591588] OMAP-iommu 40d01000.MMU:40d01000.MMU:errs:0x00000002 da:0xc45dd780 PgD:0xdfab7114 * PgD:px00000000
    [211.601765] remoteproc2:处理40800000.DSP 中的 crash #1
    [211.607358] remoteproc2:恢复40800000.DSP
    Recvfrom 失败:链接已断开(67)
    rpmsgThreadFxn:FD 18上的 transportGet 失败、返回-20
    [211.640365] omap_hwmod:mu1_dsp1:_wait_target_disable 失败

    DGEMM_TEST:/home/gtbldadm/processor-sdk-linux-fido-build/build-CORTEX_1/arago-tmp-external-linaro-toolchain \
    Work/am57xx_EVM-linux-gnueabi/OpenCL/1.1.7.2-r0.0.tisdk0/gIT/host/src/core/dsp/\
    mbox_impl_msgq.cpp:121:uint32_t MboxMsgQ:::读取(uint8_t*、uint32_t*、uint8_t):断言`msg!=_null'失败。

    [211.652837] OMAP-hwmod:mu0_dsp1:_wait_target_disable 失败
    [211.658891] remoteproc2:已停止远程处理器40800000.dsp
    TransportRpmsg_put:发送失败:108 (在传输端点关闭后无法发送)

    DGEMM_TEST:/home/gtbldadm/processor-sdk-linux-fido-build/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work \
    am57xx_EVM-linux-gnueabi/OpenCL/1.1.7.2-r0.tisdk0/gIT/host/src/core/dsp/\
    mbox_impl_msgq.cpp:107:void MboxMsgQ::::write (uint8_t*、uint32_t、uint32_t、uint8_t):assert `status =(0)'失败。

    [211.700359] remoteproc2:为40800000.DSP 加电
    [211.709337] remoteproc2:引导 FW 映像 dra7-dsp1-fw.xe66,大小21591344
    [211.728101] OMAP-hwmod:mu0_dsp1:_wait_target_disable 失败
    [211.734063] OMAP-iommu 40d01000.MMU:40d01000.MMU:版本3.0
    [211.7444644] OMAP-iommu 40d02000.MMU:40d02000.MMU:版本3.0
    [211.757427] remoteproc2:RSC_INTMEM 已弃用。 请勿使用此资源类型来支持加载到内部存储器中。
    [211.774302] remoteproc2:远程处理器40800000.DSP 现已启动
    [211.781138] virtio_rpmsg_bus virtio3:rpmsg 主机处于联机状态
    [211.786694] remoteproc2:registered virtio3 (type 7)
    /arm+dsp/dgemm_test#

    我意识到它不是在末尾保留的,而是因为错误而退出 ,它表示 mbox_impl_msgq.cpp 有一些错误,

    但我找不到路径"/home/gtbldadm/processor-sdk-linux-fido-build/...... ”在我的板上,你能给我一些建议吗?

    非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我已经检查了电路板和我的操作,我不知道如何解决这个问题、您能给我任何建议吗? 非常感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我已经检查了电路板和我的操作,我不知道如何解决这个问题、您能给我任何建议吗? 非常感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否尝试全新安装最新的 PLSDK 4.1以查看问题是否仍然存在?

    software-dl.ti.com/.../index_FDS.html

    谢谢、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢,这解决了我的问题、但我还有另一个问题。
    我在电路板 AM572x (两个 ARM 内核和两个 DSP 内核)上运行示例 dgemm (矩阵乘法)、示例性能与表所示不同。
    www.ti.com/.../linear-algebra.html

    LINALG explian 的文档、该文档可将 BLAS 配置为在 ARM 或 DSP 上运行(卸载)。 当 BLAS 在 ARM 上运行时、可以将其配置为在1个或多个内核上运行。 当 BLAS 在 DSP 上运行时、它将始终在所有内核上运行。
    当我配置在一个 ARM 内核上运行的示例(dgemm)时、它花费的时间比在 DSP 上运行的时间长、与表中显示的将代码从 ARM 移动到 DSP 时加速1.4x 相同。
    但是、当我配置在两个 ARM 内核上运行的示例(dgemm)时、它花费的时间比在 DSP 上运行更少。
    我想只有一个 DSP 内核在工作、因此我重新构建 LINALG、但我不解决这个问题、
    你能给我任何建议吗,谢谢!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否提供测试结果的确切数量:BLAS 在 DSP 上运行的时间、仅在 ARM 上运行的时间? 此外、您是否按原样使用了 dgemm 示例、即矩阵为1000x1000?  

    谢谢。

    徐建中

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

    e2e.ti.com/.../dgemm_5F00_time_5F00_ARM_5F00_1_5F00_core.dat

    e2e.ti.com/.../dgemm_5F00_time_5F00_ARM_5F00_2_5F00_cores.date2e.ti.com/.../dgemm_5F00_time_5F00_DSP.dat

     这三个文件由 dgemm 示例输出

     'gemm_time_arm_1_core.txt' 'gemm_time_arm_2_cores.txt '的内容'gemm_time_dsp.txt'分别表示 arm (仅限) arm (两个内核) dsp 上的时间总和

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    表中显示了当矩阵大小 M=N=K=1000时,双臂和双 DSP 上的 dgemm 示例消耗时间为0.786s 和0.55s。 但我得到的结果是不同的,我在我的器件 AM572x 上运行 dgemm 示例,当矩阵大小 M=N=K=1024时,2个 ARM 和2个 DSP 上的时间为0.435s 和0.64s。 只能在一个 ARM 上运行,耗时0.844s。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您使用哪个平台运行 degemm? 是工业 SDK 还是 GP EVM (www.ti.com/.../TMDSEVM572X)
    您是否还在板上运行常规 Linux 或 RT Linux?
    TI.com 上的基准测试是在 GP EVM 上早期发布的 PLSDK 时收集的。

    您是否重建了 dgemm 示例或使用运行时间选项- BLIS_IC_NT、TI_CBLAS_OFFLOAD 以配置1个 ARM /2 ARM/2DSP?

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

    我确信该电路板是 TMDSEVM572X (两个 ARM 内核和两个 DSP 内核)、它运行 从 SDK 安装的常规 Linux
    我使用的是 SDK:PROCESSOR-SDK-LINUX-AM57X 04_02_00_09
    software-dl.ti.com/.../index_FDS.html
    我重建 dgemm 示例
    我配置 BLIS_IC_NT=1、TI_CBLAS_OFFLOAD = 000、当矩阵大小为1024 (M=N=K=1024)时、dgemm 示例在 ARM 内核上消耗0.84s 的电流
    我配置 BLIS_IC_NT=2、TI_CBLAS_OFFLOAD = 000、当矩阵大小为1024 (M=N=K=1024)时、dgemm 示例在2 ARM 内核上消耗0.43秒
    关于在 DSP 上运行(TI_CBLAS_OFFLOAD=001)、当矩阵大小为1024 (M=N=K=1024)时、它始终消耗0.64s 的电流
    我已经上传了此示例的输出文件、您可以在之前的回复中看到它们。
    TI.com 上的基准测试可能与 TMDSEVM572X 不匹配
    www.ti.com/.../linear-algebra.html
    非常感谢!

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

    您好!

    dgemm 基准测试结果因 Linux 版本(RT-Linux 与 Linux)而异。 当使用通常在 GP EVM 上运行的 RT-Linux 将计算转移到 DSP 时、您将看到其性能提升。

    1个臂:
    1024 1024 1024 1024 1.45012045e+00

    2支臂:
    1024 1024 1024 1024 1024 7.45487332e-01

    DSP:
    1024 1024 1024 1024 6.46519780e-01

    此致、Garrett

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

    感谢您的回复,我的主板正在运行 Linux (而不是 RT-Linux)。 我得到了结果( dgemm ),

    1支臂

    1024 1024 1024 1024  8.44199836e-01

    2臂

    1024 1024 1024 1024  4.35683638e-01

    DSP

    1024 1024 1024 1024  6.45739794e-01

    因此 、与 Linux 相比、将计算转移到 DSP 时、其性能不会提升、始终为0.64秒、

    正是 RT-Linux 不 能发挥 ARM 内核(A15)的性能

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

    是的、在特定的 dgemm 示例中、无论 Linux 或 RT-Linux 如何、DSP 中的计算时间都是固定的、但根据 Linux 或 RT-Linux 的不同、DSP 中的计算时间会有所不同。

    此致、
    Garrett