Hardware report
Intel Core i7-1260P and Iris Xe: pipeline benchmark
Measurements recorded on 2026-10-15.
- CPU: Intel Core i7-1260P. 16 logical processors.
- Platform: Ubuntu 24.04, x86_64, Linux 7.0.0-38-generic.
- Compiler: GCC 13.3.0. CMake 3.28.3. Python 3.12.3.
- Renderer: Mesa Intel Iris Xe Graphics (ADL GT2), hardware rendering.
- Driver: Mesa 25.2.8-0ubuntu0.24.04.4.
- Contexts: ES 3.1/3.2 requests produced ES 3.2 / ESSL 3.20. GL 4.3/4.5/4.6 requests produced GL 4.6 core / GLSL 4.60.
- Validation: 108 tests passed, 0 unavailable-context tests skipped, zero failures. 108 tests total.
- Intel driver compilation checks every supported profile. Offline
glslangValidatorresults for the same shader/profile combinations are recorded on the other benchmark configurations.
Method
All pipelines use seed 12345, scale 1, twenty timed repetitions and the es31 profile. Times are mean completed workload milliseconds. CPU stages execute serially, and the asynchronous ring uses two CPU workers. GPU timings include dispatch-loop completion. Timing starts after compilation, initial uploads and warmup, and ends before final downloads. Mixed-backend transfers occur within the timed interval. The dynamic library is loaded before timing.
The asynchronous row measures thirty-two completed affine jobs of 257 floats through three reusable slots, including submission and polling. Each neural training row measures one mini-batch gradient/SGD update, and inference measures a separate forward dispatch. The executables check full training convergence separately.
The EVT3 workload decodes 65536 sixteen-bit words into 223772 ordered uvec4 events through five stages including reset. Its timing covers those decoder stages. The optical-flow workload uses 610 seeded samples from a 32×24 temporal plane, history 64 and six linked stages. The RLE workload produces 13556 payload words plus 257 offset words, a 4.74-fold size reduction.
The FFT rows transform eight complex channels of length 1024. The FIR row filters eight real channels of 2048 samples with 65 coefficients. The biquad row uses the same channel and sample counts, retaining state between timed blocks after each backend starts from an identical reset. The frequency mask keeps the 4–10 kHz band at a 48 kHz sample rate.
The LeNet row measures seven native inference stages for 32 images and 61,706 parameters. Its resident inputs and parameters are seeded random values. The separate trained-model evaluation below uses original MNIST test images.
The benchmark compares floating outputs with absolute and relative tolerances and unsigned outputs exactly. It checks Fourier reconstruction and compression round trips using seeded inputs and parameters. Each timing run has a dedicated measurement interval after builds and tests finish.
# Configure the example build directory.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
# Compile the configured targets and embedded shaders.
cmake --build build -j4
# Run the registered correctness checks and report any failures.
ctest --test-dir build --output-on-failure -j2
# Measure completed ES 3.1 workloads with the recorded benchmark settings.
SHDR_BENCH_ITERATIONS=20 SHDR_BENCH_SCALE=1 build/example_benchmark --gpu es31
The measured runtime-header SHA-256 is
0555b3742fa5646d094747786a9d90bbda334bf0dfbf35c639b359224f571416.
The results provenance records the header and frontend fingerprints used for validation.
Results
CPU/GPU is the unrounded CPU mean divided by the unrounded graphics mean. A value above one means the graphics path completed faster for that workload. Table values are rounded to three decimal places.
| Pipeline | Workload | CPU ms | GPU ms | CPU/GPU |
|---|---|---|---|---|
| Buffer affine/clamp/sum | 16384 floats | 0.139 | 3.928 | 0.035 |
| Buffer/image blur | 128 x 128 | 0.422 | 0.054 | 7.838 |
| Borrowed image blur | 128 x 128 | 0.299 | 0.052 | 5.764 |
| Hybrid affine/clamp/sum | 16384 floats | 0.145 | 2.825 | 0.051 |
| Dynamic library stages | 16384 floats | 0.460 | 2.100 | 0.219 |
| RAW10/debayer/luminance | 128 x 128 | 1.080 | 0.068 | 15.982 |
| 2D convolution 5 x 5 | 128 x 128 vec2 | 1.140 | 0.059 | 19.428 |
| 3D convolution 3 x 3 x 3 | 24 x 24 x 24 | 1.266 | 0.057 | 22.166 |
| Forward/inverse direct DFT | 32 x 32 complex | 0.892 | 0.080 | 11.134 |
| Gaussian/Sobel/Harris/NMS | 128 x 128 | 1.841 | 0.089 | 20.761 |
| Lossless tiled RLE round trip | 65536 uints | 0.462 | 0.248 | 1.864 |
| EVT3 event decoding | 65536 packed words | 2.993 | 0.734 | 4.079 |
| Async ring | 32 x 257 floats, 3 slots | 0.094 | 0.730 | 0.128 |
| EVT3 + optical flow | 32 x 24 sampled plane, history 64 | 0.290 | 0.215 | 1.347 |
| ANN training | 32 samples, 33 parameters | 0.072 | 0.042 | 1.702 |
| ANN inference | 32 samples, 33 parameters | 0.002 | 0.015 | 0.145 |
| CNN training | 32 samples, 23 parameters | 1.359 | 0.086 | 15.741 |
| CNN inference | 32 samples, 23 parameters | 0.054 | 0.034 | 1.570 |
| Transformer training | 8 sequences, 4 tokens x 4, 134 parameters | 0.972 | 0.284 | 3.427 |
| Transformer inference | 8 sequences, 4 tokens x 4, 134 parameters | 0.006 | 0.057 | 0.110 |
| FFT forward/inverse | 8 x 1024 complex | 2.226 | 0.226 | 9.856 |
| FIR low-pass | 8 x 2048 floats, 65 taps | 1.956 | 0.124 | 15.724 |
| Biquad low-pass | 8 x 2048 floats, persistent state | 0.040 | 0.515 | 0.077 |
| FFT band-pass | 8 x 1024 complex, 4-10 kHz | 2.250 | 0.222 | 10.150 |
| LeNet classifier | 32 x 28 x 28, 61,706 parameters | 40.790 | 1.756 | 23.229 |
Complete held-out model evaluation
The native seven-stage classifier used the prepared model and all 10,000
original MNIST test images. Both backends produced 9778 correct predictions,
matching the independent preparation result. Each score was compared with the
shipped PyTorch reference logits. The normalized error is
abs(actual-reference)/(1+abs(reference)), maximized across every score.
| Backend | Correct | Accuracy | Maximum normalized logit error | Completed evaluation seconds |
|---|---|---|---|---|
| CPU | 9778/10000 | 97.78% | 4.57699e-6 | 13.8871 |
| Iris Xe, ES 3.1 profile | 9778/10000 | 97.78% | 4.00418e-6 | 1.95504 |
These times include bounded batch construction, input preparation, program setup, native inference, result reads and reference comparisons. They are separate from the resident benchmark above. All other public-data functional cases passed in the same runs. See the dataset guide for source provenance, preparation and metric scope.