|
1 | | -# LTQueue (Prasad Jayanti, Srdjan Petrovic, 2005) - MPI port |
| 1 | +# LTQueue (Prasad Jayanti, Srdjan Petrovic, 2005) - MPI Port |
2 | 2 |
|
3 | 3 | Link: [paper](/references/LTQueue/README.md) |
4 | 4 |
|
5 | | -## Naive port |
| 5 | +## Naive Port |
6 | 6 |
|
7 | 7 | ### Replacing LL/SC |
8 | 8 |
|
@@ -67,7 +67,7 @@ As LL/SC is not supported by MPI, we'll have to replace them using some other su |
67 | 67 |
|
68 | 68 | We'll investigate first scheme for the time being, which means find a way to avoid ABA problem. |
69 | 69 |
|
70 | | -#### Avoiding ABA problem |
| 70 | +#### Avoiding ABA Problem |
71 | 71 |
|
72 | 72 | The simplest approach is to use a monotonic version tag: Reserve some bits in the shared variable to use as a monotonic counter, so the shared variable now consists of two parts: |
73 | 73 | * Control bits: The bits that comprise the meaningful value of the shared variable. |
@@ -109,7 +109,7 @@ There is a nuance though. In the original version, the `timestamp` at each inter |
109 | 109 | Cons: |
110 | 110 | - Each time we read the internal node, we have to dereference the rank at the node to access the timestamp. This doubles network activities when accessing the internal node. |
111 | 111 |
|
112 | | -### Pseudo code after removing LL/SC |
| 112 | +### Pseudo Code After Removing LL/SC |
113 | 113 |
|
114 | 114 | SPSC is kept intact, and due to Prasad Jayanti and Srdjan Petrovic: |
115 | 115 |
|
@@ -247,7 +247,7 @@ function refresh(mpsc_t* q, tree_node_t* node) |
247 | 247 | return CAS(¤t_node->min_timestamp_rank, current_rank, (min_timestamp_rank, current_rank.version + 1)) |
248 | 248 | ``` |
249 | 249 |
|
250 | | -### Linearizability, Wait-freedom, Memory-safety |
| 250 | +### Linearizability, Wait-Freedom, Memory-Safety |
251 | 251 |
|
252 | 252 | ### Porting |
253 | 253 |
|
|
0 commit comments