此模板类用于在内核、连接和端口上构建标量数据约束。
作用域
约束必须显示在用户 graph 构造函数内部。
成员函数
constraint<T> operator=(T)
此重载等式运算符允许您向标量约束赋值。
构造函数
不使用默认构造函数。改为使用以下具有特定含义的特殊构造函数。
void fabric<aiengine>(kernel&)
此约束允许您标记在 AI 引擎上实现的内核(默认)。
constraint<std::string>& initialization_function(kernel&)
此内核允许您为每个内核设置特定初始化函数。此约束期望通过字符串来表示初始化函数的名称。如果在单个核上打包多个内核,则该核上打包的每个初始化函数都仅调用一次。当核上打包的所有初始化函数全都完成后,才会调度内核函数。
初始化函数无法返回值也不能包含输入/输出实参,即,函数原型必须如下所示。
void init_function_name(void)
graph::run
API 时,仅调用一次初始化函数。该函数可用于初始化全局变量,或者对舍入模式和饱和模式进行置位或清除。它不能使用窗口或串流 API 来访问存储器或串流接口,但可使用串流内部函数(例如,get_ss()
)。请参阅
AI 引擎内核编码最佳实践指南
(UG1079),以获取示例。
constraint<float>& runtime<ratio>(kernel&)
此约束允许您将核内特定的一小部分设定为供某个内核使用。其计算方式为调用一次内核(处理一个数据块)所耗用的周期数与周期预算的比率。根据期望的数据吞吐量和处理的块大小,应用的周期预算通常是固定的。
constraint<std::string>& source(kernel&)
此约束允许您指定包含每个内核函数定义的源文件。对于每个内核都必须指定源约束。
constraint<int>& fifo_depth(connect&)=[<depth> | (depth)]
此约束允许您指定将一定的裕量插入串流连接以允许无死锁执行。
void single_buffer(port<T>&)
此约束允许您在单个窗口端口上指定单一缓冲器约束。默认情况下,窗口端口采用双重缓冲。
void initial_value(async_AIE_RTP_port)
此约束允许您为异步 AI 引擎输入运行时参数端口设置初始值。它允许目标内核以指定初始值来异步启动。您可以使用此约束来同时设置标量和阵列运行时参数。
标量示例:initial_value(6)
。
阵列示例:initial_value({1,2,3})
constraint<int> stack_size(adf::kernel& k);
此约束允许您为个别内核设置栈大小。
constraint<int> heap_size(adf::kernel& k);
此约束允许您为个别内核设置堆大小。