Partition-Aware Scheduling for Mobile Heterogeneous Inference Co-Execution
Organizations: University of Southern California, Los Angeles, CA, 90089, USA
Abstract
Modern mobile inference runs on heterogeneous platforms combining mobile GPUs with multiple CPU core clusters. Existing optimizations typically exploit either inter-operator parallelism, by assigning entire operators to CPU cores or to the GPU, or intra-operator parallelism, by partitioning each operator for CPU-GPU co-execution. We consider these two forms of parallelism together, to improve inference latency of tasks that can be represented by a static DAG of operators with predefined input/output tensor shapes (e.g., CNNs or vision transformers). We define the problem of partition-aware DAG scheduling for mobile heterogeneous inference, illustrating that the best strategy depends on the structure of the inference DAG, thus motivating a joint formulation capturing operator partition choices, device assignment, and execution order. We propose an online iterative search framework, which decomposes large DAGs into stages, focuses search on critical operators, and uses latency predictors to estimate partitioned execution without exhaustive profiling. Across representative mobile inference workloads, our approach achieves latency close to an offline solution while keeping scheduling overhead to a fraction of the model initialization cost, allowing platform-specific scheduling at deployment time.
Figures & tables
| Platform | Processor | GPU | CPU (L) | CPU (M) |
|---|---|---|---|---|
| OnePlus 11 | Snapdragon 8 Gen 2 | Adreno 740 | 3.2 GHz Cortex-X3 | 2.8 GHz Cortex-A715 |
| Motorola Edge Plus 2022 | Snapdragon 8 Gen 1 | Adreno 730 | 3.0 GHz Cortex-X2 | 2.5 GHz Cortex-A710 |
| Pixel 5 | Snapdragon 765G | Adreno 620 | 2.4 GHz Kryo 475 | 2.2 GHz Kryo 475 |
| Pixel 4 | Snapdragon 855 | Adreno 640 | 2.84 GHz Kryo 485 | 2.42 GHz Kryo 485 |
| Symbol | Description |
|---|---|
| Inference DAG with operators and dependencies | |
| Predecessor and successor sets of operator | |
| Set of devices, e.g., GPU and CPU core clusters | |
| Set of partitionable operators | |
| Candidate partition strategies for operator | |
| Selected partition strategy of operator , e.g., none, output-channel, input-channel, or spatial |
| Family | # Models | # Convolution Range | # Operators Range |
|---|---|---|---|
| Inception / Inception-ResNet | 4 | 94–244 | 170–429 |
| SqueezeNet / SqueezeResNet | 4 | 26 | 46–51 |
| PeleeNet | 1 | 113 | 144 |
| HRNet | 9 | 91–325 | 149–535 |
| Approach | Variant | OnePlus 11 | Motorola 2022 | Pixel 4 | Pixel 5 | ||||
|---|---|---|---|---|---|---|---|---|---|
| Avg | Worst | Avg | Worst | Avg | Worst | Avg | Worst | ||
| Single-device | GPU | 1.64 | 2.35 | 1.61 | 2.23 | 2.10 | 2.94 | 2.13 | 2.44 |
| CPU (L) | 7.57 | 10.05 | 7.71 | 9.46 | 6.31 | 7.27 | 4.87 | 6.30 | |
| CPU (M) | 6.83 | 8.89 | 6.39 | 7.45 | 3.81 | 4.33 | 5.16 | 6.51 | |
| Partition-only | Min-local-latency | 1.20 | 1.39 | 1.22 | 1.59 | 1.16 | 1.42 | 1.11 | 1.28 |
| Schedule-only | Best | 1.28 | 1.44 | 1.30 | 1.47 | 1.47 | 1.78 | 1.51 | 1.84 |
| Approach | Variant | OnePlus 11 | Motorola 2022 | Pixel 4 | Pixel 5 | ||||
|---|---|---|---|---|---|---|---|---|---|
| Avg | Worst | Avg | Worst | Avg | Worst | Avg | Worst | ||
| Single-device | GPU | 1.62 | 1.95 | 1.60 | 2.01 | 1.94 | 2.46 | 1.93 | 2.10 |
| CPU (L) | 7.68 | 11.72 | 7.45 | 10.29 | 6.60 | 9.11 | 4.45 | 5.54 | |
| CPU (M) | 5.49 | 8.64 | 5.21 | 7.32 | 3.21 | 3.75 | 4.71 | 5.76 | |
| Partition-only | Min-local-latency | 1.37 | 2.92 | 1.25 | 1.61 | 1.20 | 1.93 | 1.12 | 1.52 |
| Schedule-only | Best | 1.15 | 1.33 | 1.08 | 1.26 | 1.25 | 1.52 | 1.33 | 1.66 |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| 1 | |
|---|---|
| 2 | |
| 3 | for |
| 4 | |
| 5 | , , |
| 6 | for each |
| 7 |
| Operator | Device | Features |
|---|---|---|
| Convolution | GPU | Input/output height, input/output width, input/output channels, filter shape, stride, group count, input/output sizes, filter size, FLOPs, grid size ( -dims), workgroup size ( -dims), workgroup count ( -dims), total workgroup count |
| CPU | Input/output height, input/output width, input/output channels, filter shape, stride, group count, input/output sizes, filter size, FLOPs | |
| Linear | GPU | Input/output height, input/output width, input/output channels, input/output sizes, weight size, FLOPs, grid size ( -dims), workgroup size ( -dims), workgroup count ( -dims), total workgroup count |
| CPU | Input/output height, input/output width, input/output channels, input/output sizes, weight size, FLOPs | |
| Pooling | CPU / GPU | Input/output height, input/output width, input/output channels, input/output sizes, kernel shape, stride |
| Others | CPU / GPU | Input/output height, input/output width, input/output channels, input/output sizes |
| Model | # Conv | # Ops |
|---|---|---|
| inceptionv3 | 94 | 170 |
| inceptionv4 | 149 | 271 |
| inceptionresnetv1 | 132 | 231 |
| inceptionresnetv2 | 244 | 429 |
| squeezenet_v1_0 | 26 | 47 |
| squeezenet_v1_1 | 26 | 46 |
| Approach | Variant | OnePlus 11 | Motorola 2022 | Pixel 4 | Pixel 5 | ||||
| Avg | Worst | Avg | Worst | Avg | Worst | Avg | Worst | ||
| Joint-search | Gurobi | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| Single-device | GPU | 1.64 | 2.35 | 1.61 | 2.23 | 2.10 | 2.94 | 2.13 | 2.44 |
| CPU (L) | 7.57 | 10.05 | 7.71 | 9.46 | 6.31 | 7.27 | 4.87 | 6.30 | |
| CPU (M) | 6.83 | 8.89 | 6.39 | 7.45 | 3.81 | 4.33 | 5.16 | 6.51 | |
| Partition-only | Min-local-latency | 1.20 | 1.39 | 1.22 | 1.59 | 1.16 | 1.42 | 1.11 | 1.28 |
| Approach | Variant | OnePlus 11 | Motorola 2022 | Pixel 4 | Pixel 5 | ||||
| Avg | Worst | Avg | Worst | Avg | Worst | Avg | Worst | ||
| Joint-search | Gurobi | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| Single-device | GPU | 1.62 | 1.95 | 1.60 | 2.01 | 1.94 | 2.46 | 1.93 | 2.10 |
| CPU (L) | 7.68 | 11.72 | 7.45 | 10.29 | 6.60 | 9.11 | 4.45 | 5.54 | |
| CPU (M) | 5.49 | 8.64 | 5.21 | 7.32 | 3.21 | 3.75 | 4.71 | 5.76 | |
| Partition-only | Min-local-latency | 1.37 | 2.92 | 1.25 | 1.61 | 1.20 | 1.93 | 1.12 | 1.52 |
| Model | Prediction overhead (ms) | Scheduling overhead (ms) | Initialization time (ms) |
|---|---|---|---|
| inceptionv3 | 135 | 303 | 1048 |
| inceptionv4 | 130 | 420 | 1534 |
| inceptionresnetv1 | 88 | 249 | 1100 |
| inceptionresnetv2 | 123 | 627 | 1783 |
| squeezenet_v1_0 | 62 | 25 | 479 |
| squeezenet_v1_1 | 51 | 24 | 482 |
| Configuration | Normalized latency | Search cost (s) | |
|---|---|---|---|
| Default | HEFT, split=3, staging | 1.03 | 10.8 |
| Heuristics | PEFT | 1.04 | 12.3 |
| PSLS | 1.04 | 16.7 | |
| Lookahead-HEFT | 1.03 | 28.3 | |
| Min-local-latency Init | 1.05 | 17.7 | |
| Staging | no staging | 1.14 | 24.7 |
| Timeout (s) | Normalized latency | Search cost (s) |
|---|---|---|
| Unlimited | 1.03 | 10.78 |
| 0.75 | 1.03 | 9.30 |
| 0.5 | 1.04 | 7.96 |
| 0.4 | 1.04 | 7.12 |
| 0.3 | 1.04 | 6.08 |
| 0.2 | 1.05 | 4.54 |
On-Device Inference
On-device inference runs machine-learning models locally on phones, wearables, microcontrollers, and edge hardware to reduce latency, energy use, and data sharing.
See all 189 papers