The data flow graphs shown until now are defined completely statically. However, in real situations you might need to modify the behavior of the graph based on some dynamic condition or event. The required modification could be in the data being processed, for example a modified mode of operation or a new coefficient table, or it could be in the control flow of the graph such as conditional execution or dynamically reconfiguring a graph with another graph. Runtime parameters (RTP) are useful in such situations. Either the kernels or the graphs can be defined to execute with parameters. Additional graph API are also provided to update or read these parameter values while the graph is running.
Two types of runtime parameters are supported. The first is the asynchronous or sticky parameters which can be changed at any time by a controlling processor such as the Processing System (PS). After complete update, they are read each time a kernel is invoked. These types of parameters can be used as filter coefficients that change infrequently.
Synchronous or triggering parameters are the other type of supported runtime parameters. A kernel that requires a triggering parameter does not execute until these parameters have been written by a controlling processor. Upon a write, the kernel executes once, reading the new updated value. After completion, the kernel is blocked from executing until the parameter is updated again. This allows a different type of execution model from the normal streaming model, which can be useful for certain updating operations where blocking synchronization is important.
Runtime parameters can either be scalar values or array
values. A graph.update()
API is used for RTP
update.