input_gmio/output_gmio - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

该类表示 AI 引擎与全局存储器 (DDR) 之间的全局存储器 (DDR) 资源管理和数据传输。input_gmio 对象负责管理从全局存储器 (DDR) 到 AI 引擎的数据传输或者读取全局存储器 (DDR) 的操作。output_gmio 对象负责管理从 AI 引擎到全局存储器的数据传输或者写入全局存储器 (DDR) 的操作。

基本类成员函数

static void* malloc(size_t size);
malloc 方法用于分配连续物理存储器空间和返回对应虚拟地址。它可接受 size 参数,该参数用于指定要分配的字节数。如果成功,则返回指向已分配的存储器空间的指针。如果失败,则返回 nullptr
static void free(void* address);
free 方法用于清空由 GMIO::malloc 分配的存储器空间。
return_code wait();
wait 方法用于阻塞,直至先前发出的传输事务全部完成为止。此方法仅可用于连接到 AI 引擎GMIO 对象。
注释: input_gmiooutput_gmio 类衍生自 GMIO 基类。malloc()free()wait() 函数都在 GMIO 基类中声明。

input_gmio 成员函数

create(std::string logical_name, size_t burst_length, size_t bandwidth);

以上端口规范用于将 DDR 存储器连接到 AI 引擎内核。logical_name 是端口名称。burst_length 是 DDR 存储器突发传输事务的长度(可为 64、128 或 256 字节),bandwidth 则是期望的平均吞吐量 (MB/s)。

create(size_t burst_length, size_t bandwidth);
以上端口规范用于将 DDR 存储器连接到 AI 引擎内核。burst_length 是 DDR 存储器突发传输事务的长度(可为 64、128 或 256 字节),bandwidth 则是期望的平均吞吐量 (MB/s)。
return_code gm2aie_nb(const void* address, size_t transaction_size);
gm2aie_nb 方法可发起 DDR 到 AI 引擎的传输。传输事务的存储器空间由地址指针和 transaction_size 参数(以字节为单位)来指定。传输事务存储器空间需限制在 GMIO::malloc 方法所分配的存储器空间总量范围内。它属于非阻塞函数,因为它不等待读取传输事务完成。
return_code gm2aie(void* address, size_t transaction_size);

gm2aie 方法则是 gm2aie_nb 的阻塞版本。它会阻塞直至 AI 引擎到 DDR 的读取传输事务完成为止。

output_gmio 成员函数

create(std::string logical_name, size_t burst_length, size_t bandwidth);
以上端口规范用于将 AI 引擎内核连接到 DDR 存储器。logical_name 是端口名称。burst_length 是 DDR 存储器突发传输事务的长度(可为 64、128 或 256 字节),bandwidth 则是期望的平均吞吐量 (MB/s)。
create(size_t burst_length, size_t bandwidth);
以上端口规范用于将 AI 引擎内核连接到 DDR 存储器。burst_length 是 DDR 存储器突发传输事务的长度(可为 64、128 或 256 字节),bandwidth 则是期望的平均吞吐量 (MB/s)。
return_code aie2gm_nb(void* address, size_t transaction_size);
aie2gm_nb 方法可发起 AI 引擎到 DDR 传输。传输事务的存储器空间由地址指针和 transaction_size 参数(以字节为单位)来指定。传输事务存储器空间需限制在 GMIO::malloc 方法所分配的存储器空间总量范围内。它属于非阻塞函数,因为它不等待写入传输事务完成。
return_code aie2gm(void* address, size_t transaction_size);

aie2gm 方法则是 aie2gm_nb 的阻塞版本。它会阻塞直至 AI 引擎到 DDR 的写入传输事务完成为止。

注释: 建议使用 GMIO::malloc()GMIO::free() 来管理 DDR 存储器资源。