edgecortix-tile

Edgecortix Dynamic Neural Accelerator® DNA-F200

Dynamic Neural Accelerator® DNA-F200 是 Edgecortix 的第二代(F 系列)高性能卷积神经网络 (CNN) 推断 IP,专门针对 FPGA 设计。它针对流媒体数据的超低时延、高能效和高吞吐量工作负载进行了优化。运行速率为 300 MHz,所提供的峰值 INT8 吞吐量为 3.7 Top/s。在 Edgecortix 独有的 MERA™ 数据流编译器的帮助下,在 Xilinx U50/U50LV FPGA 电路板上直接部署采用 Pytorch 和 Tensorflow-lite 等最普及的框架设计的深度神经网络几乎不需要投入任何工作。

供应商: Edgecortix Inc

更新日期: 2020 年 2 月 10 日

大小: 1 GB

容器版本: f200_u50_v1.0

试用或购买

获得评估或购买此产品的权利。


您可免费试用以下示例应用。

查看和购买此应用的可用定价计划。


部署选项

该应用是容器化的,可以在几分钟内轻松地在云中或本地运行。

本地
Alveo U50
查看 & 购买产品
  • Xilinx 运行时:2020.2
  • 目标平台: xilinx_u50_gen3x16_xdma_201920_3

 


开始评估

请按照部署方法进行操作。

Alveo U50

1.

获取账户访问密钥

需要一个访问密钥来对用户进行身份验证,并根据其权限授予用户应用访问权。要获取您的帐户访问密钥,请按以下步骤操作:

  • 登录 Xilinx 应用商城门户网站
  • 点击 “Manage Account”,查看应享权限。
  • 点击左侧菜单上的 “Access Key” 链接
  • 点击 “Create an Access Key”。
  • 下载结果文件 “cred.json”。

注:生成的访问密钥将启用您帐户中的所有权限。如果您还没有从以上 "TRY OR BUY" 部分获取授权,请先获取授权,然后按照以下步骤生成访问密钥。


2.

主机设置

请确保机器上安装的 U50 开发板可闪存 xilinx_u50_gen3x16_xdma_201920_3 Shell,并安装了 XRT 2.8.743 。参考 Xilinx UG1370 文档了解详情。

此应用假定您的卡在插槽“ 0”中。此外,本节中的说明应以 root 用户或 sudo 的身份运行,并且应在系统上安装 docker


2.1 为 Xilinx 基础运行时克隆 GitHub 版本库

    git clone https://github.com/Xilinx/Xilinx_Base_Runtime.git && cd Xilinx_Base_Runtime

2.2 运行主机安装脚本

    ./host_setup.sh -v 2020.2 -p alveo-u50

2.3 在终端窗口中运行以下命令,检查并导出 FPGA 器件信息:

    wget https://raw.githubusercontent.com/Xilinx/Xilinx_Base_Runtime/master/utilities/xilinx_docker_setup.sh
source xilinx_docker_setup.sh

注:我们的 docker 容器部署已在 Ubuntu 18.04 上测试过。它可能也适合其它版本的 Ubuntu 和/或 CentOS 7.x/8.x,但还没有进行全面测试。


3.

应用执行

在终端窗口中输入以下命令以运行该应用程序:

3.1 获取 Docker 映像

    docker pull xilinxpartners/edgecortix_f200_time:release

运行 Docker 映像

    docker run -it $XILINX_DOCKER_DEVICES -v /*path*/cred.json:/opt/edgecortix/cred.json xilinxpartners/edgecortix_f200_time:release /bin/bash

将上述命令中的 *path* 替换为正确的 cred.json 文件路径。

命令参数描述:

  • -v /*path*/cred.json:/opt/edgecortix/cred.json - Map local cred.json dir : container dir
  • $XILINX_DOCKER_DEVICES - Variables set by the xilinx docker setup

4.

演示示例

创建和编译任意神经网络并在 DNA-F200 上对其进行运行的综合指令可在以下地址找到:

https://github.com/Edgecortix-Inc/dna-IP-series

例如,以下指令将下载、编译和运行该回购协议提供的 Resnet 50 脚本:

    cd /opt/edgecortix/private-tvm/apps/mera_cpp/
wget https://raw.githubusercontent.com/Edgecortix-Inc/dna-IP-series/main/example/resnet_50.py
sed -i "s/\"arch\": 100/\"arch\": 200/" resnet_50.py
python resnet_50.py
mkdir build
cd build
cmake ..
make
./inference ../resnet50_deploy/

5.

推断结果

您应该会看到类似以下内容的输出("Took 8.09 msec." 显示端到端推断时延):

    [22:50:16] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:63: Loading json data...
[22:50:16] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:69: Loading runtime module...

Found Platform
Platform Name: Xilinx
INFO: Reading /opt/edgecortix/dna.xclbin
Loading: '/opt/edgecortix/dna.xclbin'

[  info  ] 726   , DRM session 72AF1306F0B91163 created.
[22:50:19] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:74: Loading parameters...
[22:50:19] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:82: Loading input...
[22:50:19] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:114: Warming up...
[22:50:19] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:120: Running 100 times...
[22:50:20] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:127: Took 8.09 msec.
[22:50:20] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:47: max abs diff: 1.17549e-38
[22:50:20] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:48: mean abs diff: 0
[22:50:20] /opt/edgecortix/private-tvm/apps/mera_cpp/inference.cpp:49: correct ratio: 1
[  info  ] 726   , DRM session 72AF1306F0B91163 stopped.