Why data engineering runs on CPUs, not GPUs, TPUs, or NPUs
Data engineering does little arithmetic per byte and branches constantly; accelerators win only on dense, regular math.
What are you trying to do?
Choose the processor that matches the shape of the work: parsing, decompressing, hashing, filtering, sorting, and joining records — much of it on variable-length strings.
Why are you doing it?
The roofline model bounds attainable throughput at min(peak compute, memory bandwidth × arithmetic intensity). A filter or hash join performs well under one operation per byte moved, so it hits the bandwidth roof long before the compute roof — extra FLOPs are idle silicon. Data work is also branchy (null checks, predicates, schema variants) and pointer-chasing (hash tables, B-tree pages), which suits a CPU's branch predictor, out-of-order execution, and deep caches. A GPU runs 32-thread warps in lockstep, so divergent branches serialize and scattered loads defeat memory coalescing. TPUs are systolic arrays built for matrix multiplication, and NPUs run low-precision inference at low power. Neither has a useful mapping for a string join.
Swipe sideways if the diagram is cut off.
Illustrative numbers, not a benchmark: low-intensity data operations are limited by memory bandwidth, while dense matrix multiplication reaches the compute peak.
How are you going to do it?
- Default to CPU clusters for ingestion, transformation, and serving; scale out on cores, memory bandwidth, and I/O, not FLOPs.
- Remember the transfer tax: data that starts on disk or object storage must cross PCIe (tens of GB/s) before GPU memory's TB/s bandwidth helps, which erases the gain for single-pass scans.
- The honest counterexample: GPU SQL engines (e.g. RAPIDS for Spark) win on wide scans, large hash joins, and sorts when data stays resident in GPU memory across many operators. Measure before assuming either way.
- Training and inference flip the answer — matrix multiplication is high-intensity and regular, so it belongs on GPUs/TPUs (or NPUs at the edge). The data engineer's job there is to keep the accelerator fed.
| Processor | Execution model | Built for | Fit for data engineering |
|---|---|---|---|
| CPU | Few powerful cores; branch prediction, out-of-order execution, large caches, SIMD lanes (AVX2/AVX-512/NEON) | Irregular, branchy, latency-sensitive work | Default. Parsing, hashing, joins, sorts, compression, and string work all match its strengths. |
| GPU | Thousands of simple cores in lockstep warps (SIMT); very high memory bandwidth; host data over PCIe | Dense, regular, data-parallel math | Situational. Wins for resident data and wide scans/joins; loses to transfer cost and branch divergence otherwise. |
| TPU | Systolic matrix-multiply units; bfloat16; compiled via XLA | Large-batch training and inference of tensor programs | Not applicable to relational work; a consumer of the data pipeline, not a runner of it. |
| NPU | Fixed-function low-precision (int8/fp16) tensor units, power-efficient | On-device inference | Not applicable; relevant only as an edge deployment target for models the pipeline trains. |