On Thu, Apr 3, 2014 at 3:05 PM, Miklos M.
[email protected]wrote:
specially crafted version of a repeat accumulate coder/decoder that
can be quickly decoded with SSE. On the figure we have used rates 1/3,
1/2, 1/3 and 4/5 with a payload size of 1440 bytes. On the orbit-lab
machines (core-i7) our SSE code can decode more than 1000 packets per
second on a single core.
I plan to release this code under the GPL (and maybe under an MIT
license as well) after I have a paper written up about it. So the
question would be:
Miklos,
This sounds like a fantastic result.
- how to incorporate this into gnuradio (separate OOT or built in)
If it’s to go into GNU Radio, it would only be license GPLv3, like the
rest
of the code base. Also, we require a copyright transfer from you. We can
discuss and work on that on the side.
Also, with the use of SSE, we’d want to separate the code into a VOLK
kernel with a generic and SSE implementation. That way, we’re not
restricting ourselves to certain platforms. And then, we can extend it
to
other SIMD architectures.
- how to deal with puncturing (we have some good generic solution)
We let the FEC API encoder and decoder blocks handle the puncturing and
depuncturing separate from the coders themselves. I think they are
generic
enough, but we’d probably want to update them if they don’t fit every
scenario.
- how to deal with variable packet lengths and variable rates (have some
ides)
The FEC API encoder/decoder blocks don’t care about the packet lengths
as
long as the coders themselves can handle it. Right now, our working
example
uses fixed packet length, but (I don’t think) that’s a requirement.
Might
have to double-check this. Same should go for the rate.
In the FEC API world, there is an FEC encoder and decoder block that
sets
just a few parameters. One of them is the variable that actually defines
the encoder and decoder code, and those variables are designed to work
with
the API. So most of this is on how these variable blocks are built.
- how mature is the FEC API, can it be modified if needed?
It’s mature in that we’ve tested it out-of-tree with a number of
situations. But as we’re moving it into GNU Radio, there’s a window here
to
update it. Best done before we merge it into master, though, which will
set
the API until 3.8 of GNU Radio. It’d be great if you could take my
current
github repo branch “fecapi” and see about fitting your coder into it.
That’ll get us some feedback before we merge into master.
Best,
Miklos
Thanks!
Tom