-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
parallel prefix documentation updates (#82)
* parallel prefix documentation updates * removed blank lines for lint * formatting problem * test in src file confused CI * formatting * google fonts version * google fonts issue needs to be locked to 6.1.0 * use_super_parameters for key * use_super_parameters for key (second source) * google_fonts experiment * google_fonts fix version to 6.1.0
- Loading branch information
1 parent
20d897a
commit b593ec6
Showing
6 changed files
with
49 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,45 @@ | ||
# Parallel Prefix Operations | ||
|
||
ROHD HCL implements a set of parallel prefix compute operations using different parallel prefix computation trees based on the ['ParallelPrefix'] node class carrying carry/save or generate/propagate bits. | ||
Parallel prefix or 'scan' trees are useful for efficient | ||
implementation of computations which involve associative | ||
operators. They are used in computations like encoding, or-reduction, | ||
and addition. By leveraging advanced programming idioms, like | ||
functors, allowing for passing of function that generates prefix trees | ||
into an scan-based generator for that computation, we can have a wide | ||
variety of that computation supported by our component library. For | ||
example, we have tree patterns defined by ripple, Sklanksy, | ||
Kogge-Stone, and Brent-Kung which gives us those four varieties of | ||
prefix reduction trees we can use across addition, or-reduction, and | ||
priority encoding. | ||
|
||
For example, we have unary operations like a word-level 'or' [`ParallelPrefixOrScan`] class, and a priority encoder [`ParallelPrefixPriorityEncoder`] class which computes the position of the first bit set to '1'. We have simple unary arithmetic operations like an increment [`ParallelPrefixIncr`] class, and a decrement [`ParallelPrefixDecr`] class. Finally, we have a binary adder [`ParallelPrefixAdder`] class. For background on basic parallel prefix adder structures, see <https://en.wikipedia.org/wiki/Kogge%E2%80%93Stone_adder>. | ||
ROHD HCL implements a set of parallel prefix compute operations using | ||
different parallel prefix computation trees based on the | ||
['ParallelPrefix'](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefix-class.html) | ||
node class. | ||
|
||
Each of these operations can be implemented with different ['ParallelPrefix'] types: | ||
For example, we have unary operations like a word-level 'or' | ||
[`ParallelPrefixOrScan`](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefixOrScan-class.html) | ||
class, and a priority encoder | ||
[`ParallelPrefixPriorityEncoder`](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefixPriorityEncoder-class.html) | ||
class which computes the position of the first bit set to '1'. We have | ||
simple unary arithmetic operations like an increment | ||
[`ParallelPrefixIncr`](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefixIncr-class.html) | ||
class, and a decrement | ||
[`ParallelPrefixDecr`](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefixDecr-class.html) | ||
class. Finally, we have a binary adder | ||
[`ParallelPrefixAdder`](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefixAdder-class.html) | ||
class. For background on basic parallel prefix adder structures, see | ||
<https://en.wikipedia.org/wiki/Kogge%E2%80%93Stone_adder>. In this | ||
case, the prefix trees are carrying two-bit words at each node. | ||
|
||
- ['Ripple'] | ||
- ['Sklansky] | ||
- ['KoggeStone'] | ||
- ['BrentKung] | ||
Each of these operations can be implemented with different | ||
['ParallelPrefix'](https://intel.github.io/rohd-hcl/rohd_hcl/ParallelPrefix-class.html) | ||
types: | ||
|
||
- ['Ripple'](https://intel.github.io/rohd-hcl/rohd_hcl/Ripple-class.html) | ||
- ['Sklansky](https://intel.github.io/rohd-hcl/rohd_hcl/Sklansky-class.html) | ||
- ['KoggeStone'](https://intel.github.io/rohd-hcl/rohd_hcl/KoggeStone-class.html) | ||
- ['BrentKung](https://intel.github.io/rohd-hcl/rohd_hcl/BrentKung-class.html) | ||
|
||
Here is an example adder schematic: | ||
[ParallelPrefixAdder Schematic](https://intel.github.io/rohd-hcl/ParallelPrefixAdder.html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters