将 SDAccel 项目迁移到 Vitis 2019.2 的技巧

介绍

DesignLinx 及其客户是赛灵思 SDAccel™ 开发环境的早期用户。他们使用 SDAccel 开发环境,针对搭载加速软件的亚马逊 AWS F1 和赛灵思 Alveo™ 数据中心加速器卡,开发云端应用和本地应用。

结合 SDSoC 和赛灵思 SDK,SDAccel 流现在是 2019.2 Vitis™ 统一软件平台的组成部分,便于开发者针对赛灵思器件上的所有软件任务使用统一平台。下面分享来自 DesignLinx 公司高级嵌入式软件工程师 Nathan Sullivan 所撰写的技巧:

1. Vitis 的优势
Vitis 2019.2 采用经过更新的 v++ 编译器,强化 IDE 项目组织,为嵌入式应用和数据中心应用提供统一的工具流。因为全部三种流程现在都集成在 Vitis 内部,所以无需针对不同类型的应用在 SDAccel、SDK 和 SDSoC 之间进行切换。除了 Vitis IDE 以外,通过 v++ 工具和 SDAccel 提供的 xocc/xcpp 流等生成文件,也为构建软件提供完整的命令行流程。

2. 易于迁移
Vitis 2019.2 使用 gcc 编译 C 语言源代码,使用 Vivado® HLS 编译与 SDAccel 流匹配的加速内核。此外,Vitis 也使用与 SDAccel 相同的目标平台和赛灵思运行时。这意味着新环境能够兼容源代码,SDAccel 项目只需少量修改或完全无需任何修改就能在 Vitis 内完成构建。在迁移源代码时,用户能够使用 Vitis IDE 或 v++ 命令行工具链选择性构建新项目。

3. IDE 迁移
使用 Vitis IDE 迁移项目时,只需将所有源代码文件从 SDAccel 项目添加到新的 Vitis 项目中,最好是指向同一器件。使用右键菜单上的“import sources”选项能够轻松完成这一操作。一旦源文件导入完成,必须向二进制容器添加内核函数(如同它们在原始项目中那样),并且任何定制构建设置也需要手动复制。

4. 命令行迁移
要对使用命令行(通常是通过生成文件)构建的项目进行迁移,必须用 v++ 调用替换 xocc 调用。类似地,必须用 g++ 调用替换 xcpp 调用,即直接调用主机 c++ 编译器。新的 v++ 工具提供的命令行选项与 SDAccel 下的 xocc 工具一样,因此无需做其他修改。请参阅 UG1393 进一步了解 Vitis 2019.2 有关工具变化的详细说明。

在 SDAccel 样例生成文件中替换 XOCC 和 CXX

修改完成后,就可以使用 Vitis 工具构建之前的 SDAccel 项目:

和以往一样构建 SDAccel 示例,但这次使用 Vitis 路径和工具

5. 结论
虽然 Vitis 2019.2 将所有赛灵思软件工具集成在统一平台上,但 SDAccel 流并没有显著变化,这使得迁移工作简单易行。现有项目在源代码上兼容新工具链,因此基本无需修改,它们就能直接获得 Vitis 2019.2 统一软件平台提供的优势。

赛灵思高级合作伙伴 DesignLinx 为运行在 Vitis 和 SDAccel 平台上的加速应用提供开发服务,同时提供云端和本地硬件部署服务。

推荐阅读