The inner code takes the result of the pre-coding operation and generates a sequence of encoding symbols. It is necessary to ensure that the pseudo-random processes which generate the first k output symbols generate an operation which is invertible. I would imagine without these simd optimizations you would see a 2X slowdown at least. Still, it’s nice to see implementations of the RFC, which is a real pain to read Raptor codes, as with fountain codes in general, encode a given source block of data consisting of a number k of equal size symbols into a potentially limitless sequence of encoding symbols such that reception of any k or more encoding symbols allows the source block to be recovered with some non-zero probability. There are plenty of other ways to get the optimizer to skip them for you in safe code – or at the very least, hoist them out of the loop instead. I just replaced FnvHashMap with hashbrown::
|Date Added:||24 January 2005|
|File Size:||41.23 Mb|
|Operating Systems:||Windows NT/2000/XP/2003/2003/7/8/10 MacOS 10/X|
|Price:||Free* [*Free Regsitration Required]|
Decoding rapyorq if this operation recovers a sufficient number of symbols, such that the outer code can recover the remaining symbols using the decoding algorithm appropriate for that code. It soon will be the standard hashmap! Author declares 8x improvement over standard HashMap. The requirements on iterator invalidation force the use of extra allocations and indirections for separate chaining.
Last I remember fountain codes were pretty locked down. See Recovery probability and overhead section below for more discussion on this.
Hashbrown is not about the hashing algorithm. Thanks for the pointer, any other similar algorithms? Raptor codes, as with fountain codes in general, encode a rsptorq source block of data consisting of a number k of equal size symbols into a potentially limitless sequence of encoding symbols such that reception of any k or more encoding symbols allows the source block to be recovered with some non-zero probability.
Views Read Edit View history.
O n sounds impressive, although I heard such claims on RQ too That blog post links this, for example, although it didn’t end up using it EDIT: MaulingMonkey 6 months ago https: The inner raptkrq is a form of LT codes. Pages using RFC magic links.
Luker88 6 months ago Thanks for the pointer, any other similar algorithms? For codebases named raptor, see Raptor disambiguation. Raptor codes may be systematic or non-systematic. In a combined approach, the relationships between symbols defined by both the inner and outer codes are considered as a single combined set of simultaneous equations raptofq can be solved by the usual means, typically by Gaussian elimination.
In other words, without a fountain code, if you want to reliably receive 1GB, and you miss a packet, your satellite will have to transmit 2GB just for your sake, which is expensive af. Each encoding symbol is the XOR of a pseudo-randomly chosen set of symbols from the pre-code output. What is the patent situation with Raptor codes nowadays?
That’s why the “fountain”. The bench seems to be done on a Two approaches are possible for decoding Raptor codes.
A fixed rate erasure codeusually with a fairly high rate, is applied as a ‘pre-code’ or ‘outer code’. Amin Shokrollahi, sold his company, Digital Fountain, to Qualcomm. Even if we pretend all unsafe used there is necessary, and interpret the source in the worst possible light for rust – that the optimization steps would be impossible without unsafe – I think we’d only be talking 4x to 5x slower from this ratorq, not 25x.
This distribution, as well as the mechanism for generating pseudo-random numbers for sampling this distribution and for choosing the symbols to be XOR’ed, must be known to both sender and receiver.
It is only used to track the symbol number uint32so introducing hashing sounds a bit wasteful. Each extra unique packet adds a 9 to the chances. Still struggling to see how this would be more efficient than looping that data for the use case raptofq getting beacon data out.
An example of a systematic Raptor code is the code defined by the 3rd Generation Partnership Project for use in mobile cellular wireless broadcast and multicast and also used by DVB-H standards for IP datacast to handheld devices see external links. You are benchmarking operations on a raptorw that is more or less a 10×10 byte matrix.
Seems bad for rust that safe code is 25x slower.