3 个版本 (破坏性更新)

0.3.0 2024年6月22日
0.2.0 2024年6月15日
0.1.0 2024年6月13日

#213 in 硬件支持

AGPL-3.0-or-later

460KB
14K SLoC

xrt-rs

xrt-rs 提供了对 Xilinx 运行时 (XRT) C-API 的封装,用于 AMD FPGAs / AI 引擎及其主机之间的通信。该库提供了一个薄的封装(称为 native),它简单地将 C API 转换为安全的 Rust,以及一个更抽象的层(称为 simple),它会自动处理细节,为简单应用程序提供更易于使用的接口。中间目标是编译时读取 xclbin 文件,利用 Rust 类型检查来使用 API。

安装

要安装,只需将此仓库或 crate 作为依赖项添加到您的 Cargo.toml

如果链接失败,请将 XRT 库添加到您的库路径

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/xilinx/xrt/lib"
or
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$XILINX_XRT"

使用

可以从 xrt::native::* 使用原生 API。有一个所有相关对象的封装:设备、内核、运行、缓冲区。可以使用更简单的 API 从 xrt::managed::*。查看测试以获取使用示例。

测试

当前测试无法并行运行。

如果您想在软件仿真中运行它们,需要设置常规环境标志。

XCL_EMULATION_MODE=sw_emu cargo test -- --test-threads=1

待办事项

  • 更详细的错误报告
    • 解析内部错误代码
    • 更复杂的自定义错误层次结构
    • 实现 Error trait
  • 抽象层
  • 性能考虑
    • 缓冲区重用
  • 详细测试
  • 找到一种使用 xrt::ip(只能从 CPP API 访问)的方法

无运行时依赖

~0–2MB
~39K SLoC