Majid Al-RaimiPointAcc, the lecture summary and references

COE 592Lecture 4.2Part 13

PointAcc, the lecture summary and references

PointAcc builds the sparse convolution map in hardware with a merge-sort based mapping unit, then the lecture closes with what was covered and what quantization brings next.

Concepts
4
Slides
110-115
Reading
24 min
Understood
0/4 concepts

Why this part matters

Every accelerator in this lecture so far assumed the hard part was the multiply. PointAcc is the case where it is not. When the input is a point cloud, the network spends most of its time deciding which inputs multiply which weights, and that decision has to be remade for every frame because the sparsity is in the data. Your embedded work will hit the same wall the moment your inputs stop being dense grids.

This closing part does three things. It shows how PointAcc turns map construction into a sorting problem the hardware can stream, with the five-point example from slides 111 and 112 worked out to the last tuple. It reads the results slide the way the paper intends, with the right baselines. Then it folds the whole lecture into one table, so that the exam question "which system exploits which sparsity" has a single place to be answered from, and it checks the reference slide against what the deck actually cited.

By the end you can

  1. Explain why building the (In, Out, Wgt) map dominates point-cloud inference and why a hash table is a poor fit for silicon.
  2. Run the shift, merge sort, compare, emit procedure by hand on a five-point cloud and recover the tuples on slides 111 and 112.
  3. Read slide 113 correctly: the three baselines, the geometric means, and why the TPU column swings so widely.
  4. Map every sparsity type of this lecture to the system that exploits it and the granularity it needs.
  5. State what the next lecture adds (numeric types, the idea of quantization, its common methods) and spot the references the deck cites but never lists.

The roadmap on slide 110 puts PointAcc in the last row, next to TorchSparse, under the heading activation sparsity. Read the row as a pair: TorchSparse is the software answer to sparse inputs, and PointAcc is the hardware answer to the same inputs. Both start from the Sparse convolution of part 11, where a layer is driven by maps of (In, Out, Wgt) tuples and each tuple contributes f_out = f_out + f_in × W_wgt.

What changes between the two is where the time goes. On a GPU, the multiplies are batched into matmuls and run well once the map exists. Building the map is the problem. A point cloud has dynamic sparsity: which coordinates are occupied depends on the scene, so the map cannot be precomputed and must be rebuilt on every input. The PointAcc paper measures that cost on PointNet++-based networks and reports that more than half of the total runtime on general-purpose hardware goes to mapping operations, and that existing neural accelerators simply do not support them, so a TPU has to ship the coordinates back to its host CPU, where data movement then takes 60 to 90 percent of the runtime (Lin et al., 2021, section 3).

The pairing rule, and how to turn it into an equality test

A 3 × 3 kernel has nine weight offsets, W−1,−1 through W1,1. Input point p contributes to output point q through offset δ exactly when p sits at q + δ. On a GPU the natural code is a loop over outputs that asks a hash table "is there an input at q + δ?". PointAcc rewrites the same condition so that no lookup is needed.

p=q+δ    pδ=qp = q + \delta \iff p - \delta = q
Map condition for weight offset δ. PointAcc tests the right-hand side as an equality after shifting every input by −δ.

Subtract δ from every input coordinate and the question becomes "which shifted inputs land on an output coordinate?", which is a set intersection. If both sets are sorted, an intersection is found by merging them and looking at adjacent elements: any input and output that coincide must end up side by side. This is why slide 112 adds (−1, −1) to the inputs for W1,1 and slide 111 adds (1, 1) for W−1,−1. The shift is always −δ, so the sign flips relative to the offset name.

Shifted inputs (teal) and outputs (light) slide into one sorted strip. Nine comparators check adjacent cells, the two that see equal coordinates fill in, and the map entries for W1,1 drop out.

Worked example

Finding the pairs for W1,1 on slide 112

  1. Shift

    The inputs are P0 (1,1), P1 (2,2), P2 (2,4), P3 (3,2), P4 (4,3). With stride 1 the outputs Q0 to Q4 sit at the same five coordinates. For δ = (1, 1) add (−1, −1) to every input: (0,0) (1,1) (1,3) (2,1) (3,2).
  2. Merge sort

    Both lists are already sorted by x then y, so one pass merges them: P0 (0,0), Q0 (1,1), P1 (1,1), P2 (1,3), P3 (2,1), Q1 (2,2), Q2 (2,4), Q3 (3,2), P4 (3,2), Q4 (4,3).
  3. Compare neighbors

    Ten cells give nine adjacent comparisons. Two of them are equal across owners: positions 2 and 3 (Q0 and P1, both (1,1)) and positions 8 and 9 (Q3 and P4, both (3,2)).
  4. Emit tuples

    (P1, Q0, W1,1) and (P4, Q3, W1,1). Check against the rule: P1 = (2,2) = Q0 + (1,1) and P4 = (4,3) = Q3 + (1,1).
  5. Result

    Two map entries out of 25 possible input-output pairs, found with 9 comparators and zero random memory accesses.
PositionOwnerCoordinateEqual neighbor
1P00,0no
2Q01,1yes, with 3
3P11,1yes, with 2
4P21,3no
5P32,1no
6Q12,2no
7Q22,4no
8Q33,2yes, with 9
9P43,2yes, with 8
10Q44,3no
The merged strip on slide 112, position by position

Slide 111 runs the identical procedure for the opposite corner of the kernel. The table below puts the two passes side by side. Notice the symmetry: the pairs for W1,1 are the pairs for W−1,−1 with the roles of input and output exchanged, P1 with Q0 against P0 with Q1. That is exactly what p = q + δ predicts, because if p = q + δ then q = p − δ, and with the input and output clouds sharing coordinates the same two points swap places.

W1,1 (slide 112)W−1,−1 (slide 111)
Offset δ(1, 1)(−1, −1)
Shift applied to inputs+ (−1, −1)+ (1, 1)
Shifted inputs P0 to P4(0,0) (1,1) (1,3) (2,1) (3,2)(2,2) (3,3) (3,5) (4,3) (5,4)
Merged orderP0 Q0 P1 P2 P3 Q1 Q2 Q3 P4 Q4Q0 Q1 P0 Q2 Q3 P1 P2 Q4 P3 P4
Equal neighborsQ0 = P1, Q3 = P4Q1 = P0, Q4 = P3
Tuples emitted(P1, Q0, W1,1), (P4, Q3, W1,1)(P0, Q1, W−1,−1), (P3, Q4, W−1,−1)
Slides 112 and 111: the same five points under two offsets
SimulatorMapping unit: shift, merge sort, compare neighbors, emit tuples
input point cloud (5 of 8)
weight offset
output cloud
shifted inputs, each point plus (-1, -1) for W1,1
  • P00,0
  • P11,1
  • P21,3
  • P32,1
  • P43,2
output points
  • Q01,1
  • Q12,2
  • Q22,4
  • Q33,2
  • Q44,3
merged, sorted by x then y, equal neighbors highlighted
  • P00,0
  • Q01,1
  • P11,1
  • P21,3
  • P32,1
  • Q12,2
  • Q22,4
  • Q33,2
  • P43,2
  • Q44,3
(In, Out, Wgt) emitted
  • (P1, Q0, W1,1)
  • (P4, Q3, W1,1)
Map entries2of 25 candidate pairs
Comparators9inputs plus outputs minus one
Random reads avoided5one hash probe per output point
Output points5same as the inputs

Input p and output q pair up for offset δ exactly when p = q + δ, so subtracting δ from every input turns the search into an equality test. The merge reads the two sorted strips once, head against head, and the only checks are between adjacent cells of the merged strip, which is why the comparator count is the strip length minus one. A hash table would instead probe a random address once per output point. With stride 2 the output coordinates are quantized to the stride grid by clearing the low log2(ts) bits, which the same unit separates from kernel mapping.

Why a hash table is the wrong tool for silicon

The GPU library that PointAcc compares against builds its maps with a hash table, and on a GPU that is a reasonable choice: memory is large and random access is cheap enough. Neither holds on chip. The paper puts two numbers on it. First, a hash table sized for a real point cloud at a sensible load factor can reach 160 MB, which no accelerator can hold in SRAM. Second, to serve N lookups in parallel the SRAM needs an N-by-N crossbar so that any lane can reach any bank, and that crossbar grows as O(N²) in area (Lin et al., 2021, section 4.1).

Merging has neither problem. The Mapping Unit feeds window-sized chunks of the two sorted lists to a fixed-size bitonic merger, a parallel comparator network, and a forwarding loop carries leftover elements into the next cycle, so the lists are read in order and never probed at random. Detecting the intersection is just as local: the paper describes feeding each pair of adjacent elements of the merged array to a comparator that checks whether their coordinates are equal. With |I| shifted inputs and |O| outputs the strip has |I| + |O| cells and |I| + |O| − 1 adjacent comparisons, all independent, so they can run in a single cycle. The Mapping unit builds this from a bitonic sorting network feeding a merger of fixed length, and the paper reports that at the same parallelism the merge-sort design is 1.4x faster than the hash-table design while saving up to 14x in area (Lin et al., 2021, section 4.1).

comparisons per offset=I+O1\text{comparisons per offset} = |I| + |O| - 1
Adjacent comparisons on a merged strip of |I| shifted inputs and |O| outputs. Nine on slide 112.
Hash tableMerge sort
Memory access patternRandom probes, one per output point per offsetTwo sequential streams, read once
Parallel read hardwareN-by-N crossbar, O(N²) areaFixed-size bitonic merger with a forwarding loop
On-chip storageTable can reach 160 MB at realistic load factorsSorted coordinate lists, no table
Result at equal parallelismBaseline1.4x faster, up to 14x less area
Hash table versus merge sort as the mapping engine (Lin et al., 2021, section 4.1)

One sorting unit, four point-cloud operations

The reason PointAcc calls this block a mapping unit rather than a convolution helper is that sorting turns out to be the common core of every irregular operation a point-cloud network needs. Kernel mapping is an equality after a shift. Building the output cloud under a stride s is quantizing coordinates to the stride grid and then deduplicating, which sorting does by putting duplicates next to each other. Farthest point sampling picks the point with the largest distance, a top-1 of a ranking. k-nearest-neighbor search is a top-k of the same ranking, and ball query is a threshold on the sorted distances. The paper lists these as the operations the single ranking-based unit implements (Lin et al., 2021, sections 2.1 and 4.1). Flip the simulator above to stride 2 to see the output construction case: the five inputs collapse to fewer outputs before any offset is tried.

Recall

State the condition that makes input p and output q a pair for offset δ, and say what PointAcc does to turn it into an equality test.

p = q + δ. PointAcc shifts every input by −δ, merge-sorts the shifted inputs with the outputs, and reads every equal adjacent pair as a map entry.

Recall

For W−1,−1 on slide 111, which tuples come out, and why does the shift carry a plus sign?

(P0, Q1, W−1,−1) and (P3, Q4, W−1,−1). The shift is −δ, and −(−1, −1) = (1, 1).

Recall

Give two reasons a hash table is a poor mapping unit on chip.

Table size (up to 160 MB for a real point cloud) and random parallel reads, which need an N-by-N crossbar of O(N²) area.

Quick check

For weight offset W1,1, the PointAcc mapping unit adds which vector to every input coordinate?

Quick check

A parallel hash table is rejected as the mapping unit mainly because it needs

Slide 113 is a pair of bar charts with three baselines, and the baselines matter more than the bars. Red is an NVIDIA RTX 2080Ti, the server GPU that already runs TorchSparse-style code well. Dark grey is an Intel Xeon Skylake host paired with a TPU V3, a dense-matmul accelerator that has to send every mapping operation back to the host. Light grey is an Intel Xeon Gold 6130 CPU alone. The right-most group, GeoMean, is the geometric mean across the eight networks, so no single network dominates the average.

Geometric means from slide 113 on a log axis: 3.7x, 53x and 90x speedup, then 22x, 210x and 176x energy saving over the GPU, the TPU system and the CPU. The last bar uses the paper's 176x where the slide prints 193x.

Start with the GeoMean row and read the two charts together. Against the GPU, PointAcc is 3.7x faster and 22x more energy efficient. Against the TPU system it is 53x faster and saves 210x energy. Against the CPU it is 90x faster and saves 176x (the slide prints 193x, see the errata below). The paper's abstract leads with the GPU pair, 3.7x and 22x over an RTX 2080Ti, evaluated on eight models across four applications (Lin et al., 2021).

NetworkSpeedup vs 2080TiSpeedup vs TPU V3Speedup vs Gold 6130Energy vs 2080TiEnergy vs TPU V3Energy vs Gold 6130
PointNet3.727127181,319172
PointNet++ (c)2.81139714169119
PointNet++ (ps)2.837822599152
DGCNN3.73.465273891
F-PointNet++3.726913116682394
PointNet++ (s)4.78810645161221
MinkNet(i)8.31029436324268
MinkNet(o)2.4715113127139
GeoMean3.7539022210193 (paper: 176)
Every number printed on slide 113 (speedup and energy saving, higher is better for PointAcc)

The network names encode the benchmark. The PointNet++ suffixes are (c) classification, (ps) part segmentation and (s) semantic segmentation. F-PointNet++ is the frustum detector built on PointNet++. MinkNet(i) and MinkNet(o) are MinkowskiUNet on an indoor dataset (S3DIS) and an outdoor dataset (SemanticKITTI), the two sparse-convolution workloads closest to part 11 (Lin et al., 2021, Table 2).

Why the TPU column swings from 3.4x to 269x

The GPU column is flat, between 2.4x and 8.3x, because a GPU handles both the mapping and the matmuls in the same memory. The TPU column ranges from 3.4x on DGCNN to 269x on F-PointNet++, and the spread is the lesson of the whole part. The paper attributes the gain over the TPU mainly to supporting mapping operations on chip (Lin et al., 2021, section 5.2). The paper does not break that number down per network, so the following is a reading of the chart, not a quoted result. DGCNN's neighbor search is a pairwise-distance computation in feature space, recomputed inside every EdgeConv layer, and a dense matmul unit already runs that well, so it has the least mapping work to move on chip. F-PointNet++ and the segmentation variants of PointNet++ are dominated by sampling, neighbor search and gathering, exactly the operations the TPU must hand back to the host, so removing that round trip is worth two orders of magnitude.

Recall

Slide 113 prints 193 for the CPU energy GeoMean. Using the definition of a geometric mean and the eight per-network bars, how would you check it?

Multiply the eight CPU energy values (172, 119, 152, 91, 394, 221, 268, 139) and take the eighth root, or average their logarithms. The result is 176, matching the paper and not the slide.

Recall

Quote PointAcc's geometric-mean speedup and energy saving over the RTX 2080Ti, and name the other two baselines on slide 113.

3.7x speedup and 22x energy saving. The other baselines are an Intel Xeon Skylake with a TPU V3 and an Intel Xeon Gold 6130.

Quick check

On slide 113, what is PointAcc's speedup on DGCNN over the Xeon Skylake plus TPU V3 system, the smallest entry in that column?

Slide 114 compresses the lecture into two bullets: automated ways to find pruning ratios, and system and hardware support for different granularities. Those two bullets are two separate questions from the five that opened the deck. The first asks how much to remove from each layer. The second asks how the zeros you created turn into time and energy actually saved. Neither is worth much without the other.

Left ladder: three ways to choose per-layer ratios. Right ladder: four systems that turn zeros into savings. Both lead to the next lecture, which shrinks the bits of the weights that remain.

Thread one: choosing the ratio

Sensitivity analysis prunes one layer at a time across a sweep of ratios, plots accuracy against ratio, and reads each layer's rate where its curve crosses an accuracy threshold. It is cheap and transparent, and its weakness is that it ignores Layer interaction: the compounding loss when many layers are pruned together, which is why its per-layer rates are only a starting point. AMC (AutoML for Model Compression) replaces the human with a DDPG agent that sees a layer embedding and emits a continuous sparsity ratio, rewarded by accuracy under a FLOPs or latency budget. NetAdapt keeps a rule instead of a policy: cut latency by a fixed step, choose the layer whose short-term fine-tuned accuracy is highest, consult a measured latency lookup table rather than FLOPs, repeat until the budget is met, then long-term fine-tune. Whichever chooses the ratios, Fine-tuning and Iterative pruning are what recover the accuracy afterwards.

Thread two: making the zeros pay

A pruned weight is only free if the hardware skips it. EIE (Efficient Inference Engine) skips two kinds at once: static Weight sparsity stored in CSC form across an array of processing elements, and dynamic activation sparsity caught by leading non-zero detection so that a zero activation is never broadcast. NVIDIA Ampere tensor cores accept 2:4 sparsity only, and in return the Sparse tensor core uses the two-bit metadata to select operands and doubles math throughput (Mishra et al., 2021). TorchSparse handles the sparsity of point-cloud inputs in software by trading a little padding for regular batched matmuls through Adaptive grouping, and TorchSparse++ overlaps the gather and scatter with compute. PointAcc moves the same problem into hardware, with the merge-sort mapping unit of the previous concept. The granularity is the thread joining all four: the finer the sparsity, the more bookkeeping the system must do to skip it, and the coarser the sparsity, the more the pruning method must give up to fit the pattern.

SparsityWhere it comes fromGranularity neededSystemMechanism
Fine-grained weightPruning, staticIrregular, individual weightsEIECSC storage, PE array, weight sharing, skip zero weights
M:N weight (2:4)Pruning with a pattern, static2 nonzeros in every 4 along a rowNVIDIA Ampere sparse tensor cores2-bit metadata selects the paired activations, 2x math throughput
Activation (ReLU zeros)ReLU at run time, dynamicElement levelEIELeading non-zero detection, never broadcast a zero
Activation (sparse point-cloud inputs)Data occupancy, dynamicPoint (coordinate) levelTorchSparse (software), PointAcc (hardware)Maps plus gather, matmul, scatter with adaptive grouping; merge-sort mapping unit
Sparsity types in this lecture and the systems that exploit them

The bridge to the next lecture

Pruning removes weights. Quantization shrinks the ones that stay. Slide 114 sets the order for the next lecture: first the numeric data types modern computer systems actually offer, then the basic concept of neural network quantization, then the common quantization methods. The two techniques are complementary in the deep compression sense: after pruning left AlexNet with a ninth of its connections, quantizing and coding the survivors is what pushed the total to 35x in Han et al.'s pipeline, and both will show up together in the memory and energy arguments of the next lecture (Han, Mao and Dally, 2016).

Recall

Name the three automated ways to find pruning ratios from this lecture and one weakness of the first.

Sensitivity analysis, AMC and NetAdapt. Sensitivity analysis sweeps one layer at a time and so ignores layer interaction.

Recall

Which two topics open the next lecture before the quantization methods?

Numeric data types in modern computer systems, then the basic concept of neural network quantization.

Quick check

Which system on slide 55 is paired with M:N weight sparsity?

Slide 115 lists nineteen references. Read as a map of the lecture they fall into six groups: foundations of model compression and energy (items 1, 2, 4, 5, 6), pruning criteria (3, 12, 13, 15), structured and channel pruning (7, 10, 11, 14, 16, 17), automated ratio search (9), hardware support (8), and one-shot pruning of large language models (18), with Prof. Han's TinyML course (19) as the source the whole deck follows. The Sources block at the end of this part gives a link for each one that has an archival home.

Where the references land in this lecture

Foundations
Deng et al. 2020 survey; Horowitz 2014 on the energy of memory access; Han et al. 2015; Han's Stanford thesis; Walsh 2013 on Huttenlocher's synapse counts
Criteria
LeCun et al. 1989 Optimal Brain Damage; Molchanov et al. 2017 and 2019 Taylor ranking; Wang's first-order Taylor note
Structured pruning
Mao et al. on granularity; Wen et al. 2016; Liu et al. 2017 Network Slimming; Hu et al. Network Trimming; He et al. 2017 channel pruning; Luo et al. 2017 ThiNet
Automation
He et al. 2018 AMC
Hardware
NVIDIA Ampere and TensorRT sparsity blog
Large models
Frantar and Alistarh 2023 SparseGPT
Course
Prof. Han's TinyML course (MIT 6.5940)

The list is also worth checking against the slides themselves, because several of the papers this lecture leaned on hardest are cited in slide footers but never make it to the reference page. Every hardware system in the second half of the deck is in that position. If you cite from this lecture in your own writing, take the references from the Sources below rather than from slide 115.

Recall

Which two hardware papers from this lecture are missing from the reference slide?

EIE (Han et al., ISCA 2016) and PointAcc (Lin et al., MICRO 2021). NetAdapt, Mishra et al. 2021 and TorchSparse are missing too.

Recap

If you remember nothing else

  • Sparse convolution pairs input p with output q for offset δ exactly when p = q + δ. PointAcc tests this as an equality after shifting every input by −δ.
  • The mapping unit merge-sorts the shifted inputs with the outputs. Equal adjacent neighbors are map entries, found with |I| + |O| − 1 local comparisons and no random SRAM reads.
  • On slide 112, W_1,1 yields (P1, Q0) and (P4, Q3). On slide 111, W_-1,-1 yields (P0, Q1) and (P3, Q4). The two lists are the same pairs with roles swapped.
  • A parallel hash table needs an O(N²) crossbar and a table that can reach 160 MB. The merge-sort unit is 1.4x faster and up to 14x smaller at equal parallelism.
  • One ranking kernel also serves farthest point sampling, kNN and ball query. Stride downsampling uses coordinate quantization instead.
  • PointAcc geomean: 3.7x, 53x and 90x speedup and 22x, 210x and 176x energy saving (slide 113 prints 193x for the last one) over an RTX 2080Ti, a Xeon Skylake plus TPU V3, and a Xeon Gold 6130.
  • Ratio methods: sensitivity analysis, AMC, NetAdapt. Systems: EIE (weight plus activation), Ampere tensor cores (M:N), TorchSparse and PointAcc (activation sparsity from sparse inputs).
  • Next lecture: numeric data types, the basic concept of quantization, common quantization methods.
  • Slide 115 omits NetAdapt, EIE, Mishra et al. 2021, TorchSparse, TorchSparse++ and PointAcc, and dates Hu et al. to 2017 when the paper appeared in 2016.

Sources