Hi Michael, Thank you very much for the detailed explanation. I have one more query - If a block has two input streams, will the no of items be same in both streams? say for example I build a block that takes I and Q samples as input and the algorithm demands I sample and its corresponding Q sample to work correctly. In this case does the scheduler guarantee that the items in both buffer are of same number and in the same order? or do I have to check that I am processing every Q sample and its corresponding I sample using tags or some other mechanism?
Best Sakthivel On Mon, Jan 1, 2018 at 5:06 PM, Michael Dickens <[email protected]> wrote: > Hi Sakthivel - Short answers: The value can vary for each call; it is > determined by the scheduler. I've provided more info below if you're > curious. Cheers! - MLD > > Details: One way to think of your questions is to imagine the > finite-length I/O buffers that hold the data between blocks, and note that, > in general, it is more CPU efficient to process "more" data than very small > chunks -- typically 1k of data can be handled more efficiently than 4 > bytes, when you consider the CPU overhead required for the scheduler (this > is true up to some "large" data amount, when processing efficiency peaks > and possible even drops somewhat off of peak). When the flowgraph starts, > these buffers are all empty; so the scheduler tries to get blocks to > process as much input data as possible. Once the flowgraph is running, the > buffers hold (for all practical purposes) random amounts of data, which > means that the blocks (in general) will not be able to process the amount > of data as at startup time. Data will flow roughly in bursts from source to > sink, but since each block is executing in its own thread the end result is > data pipelining: "work" for any specific block happens when there is > simultaneously "enough" input data and "enough" output buffer space -- > combine the "note" above with this concept and you have a rough > interpretation of the scheduler algorithm. Thus, with data streaming the > scheduler has to be able to work with dynamic amounts of I/O data / buffer > space. > > On Mon, Jan 1, 2018, at 10:30 AM, Sakthivel Velumani wrote: > > I am new to GNU radio. I have this general doubt that when items are > streamed from one block to another, how many input_items per port (consider > a type general block) are passed when the work() function of the block is > called each time? I guess this is handled by the GNU radio's scheduler but > would like to know if this is constant or it varies for each call? >
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
