class myGraph : public adf::graph { public: adf::input_plio In1; adf::output_plio Out1; adf::kernel kernel; adf::port<adf::input> scalar_port; myGraph() { kernel = adf::kernel::create(multiply_by_2_with_scalar); adf::connect< adf::stream > (In1.out[0], kernel.in[0]); adf::connect< adf::stream > (kernel.out[0], Out1.in[0]); adf::connect< adf::parameter > (scalar_port, adf::async(kernel.in[1])); // async } }; # 16 stream samples and 1 scalar value output = myGraph.run(va.array(list(range(1, 17)), dtype=va.int32), va.array(5, dtype=va.int32)) # output: [5, 10, 15, ..., 80] -- kernel runs twice, reusing scalar=5 Asynchronous parameters retain their value across kernel invocations, so the stream can drive as many kernel runs as the data allows.