Files
Raptor/validation/networks/pimcomp_models
NiccoloN 5f2db946f0
Validate Operations / validate-operations (push) Has been cancelled
better compile times for throughput scheduling
fix failing no-plan throughput ablation runs
update results
2026-10-28 16:34:48 +01:00
..
2026-07-24 12:47:37 +02:00
2026-07-24 12:47:37 +02:00

Pimcomp comparison models

Models for comparing Raptor with Pimcomp: the paper's four networks plus YOLO11n. Use the comparison runner for commands, options, artifact locations, and plots. The reproduction reference records exact supported/ignored operations, standalone commands, configuration layout, and GA/OpenMP controls.

Models and provenance

Directory Model / input Source
resnet18/ ResNet-18 v1, 1x3x224x224 ONNX Model Zoo resnet18-v1-7; symlink to ../../resnet18/depth_68/resnet18_depth_68.onnx.
resnet34/ ResNet-34 v1, 1x3x224x224 ONNX Model Zoo resnet34-v1-7; symbolic batch fixed to 1.
googlenet/ GoogLeNet, 1x3x224x224 ONNX Model Zoo googlenet-12, with only its two LRN nodes bypassed.
vgg8/ VGG-8 reconstruction, 1x1x28x28 Six convolution and two fully connected layers with deterministic random weights.
yolo11n/ YOLO11n detection, 1x3x640x640 Ultralytics YOLO11n; symlink to ../../yolo11n/depth_51/yolo11n_depth_51.onnx.

The paper's checkpoints were not published. The three Model Zoo networks produce frontend graphs matching Pimcomp's bundled JSON graphs. VGG-8 is suitable for compiler/simulator comparison, not paper-accuracy reproduction. The paper's MNIST description for ResNet-18 differs from the released graph's ImageNet input shape.

The current GoogLeNet comparison uses googlenet/googlenet-12-no-lrn.onnx. Only its two LRN nodes are bypassed because Raptor cannot lower LRN to PIM. Its terminal Softmax, output prob_1, weights, and other operations are retained. The native reference uses this same graph. VGG8 and both ResNet graphs have no removed operators; ResNet-34 fixes the symbolic batch size to one.

The current YOLO comparison uses yolo11n/yolo11n.onnx, including both Softmax operations. Its native reference uses the same full model. The checked-in ONNX graph uses opset 18. The original exporter version and checkpoint hash are not recorded. The functional simulator executes Softmax. Pimsim-nn skips vsoftmax before fetch, and Raptor's PIM queue estimator omits the same instruction cost. Timing and energy exclude Softmax work; they do not model hardware Softmax support. Comparison artifacts remain under this suite's yolo11n/artifacts/ directory.

Model SHA-256 checksums:

788088b908e233d924c7c26b997e89ee861290c7bc56783a306e8201d79aac8f  resnet18/resnet18-v1-7.onnx
c3231061d081bdd47884137b02134f85142752a39e87263c529cd14ed242b096  resnet34/resnet34-v1-7.onnx
c99c507058eaf41de8723408fdda7db8325cb57f0a89f2ee07a716d6e963e14e  googlenet/googlenet-12.onnx
c960c195953423388733cd0e60712cf425ca1f8917e264f5cf98e028752c61cf  googlenet/googlenet-12-no-lrn.onnx
396cdea21e5e7d02c3f26f14d22ef20975171702493f5c5e79b8e0d896e541ef  vgg8/vgg8-mnist-reconstructed.onnx
5e7bd85dc60b252674f8d7e1ad24f2317d00dfb8c524826536698462de04620d  yolo11n/yolo11n.onnx

Hardware profiles

Canonical configs and meshes are in validation/pimsim_configs/pimcomp/. They encode Table V's resources:

Profile Cores Crossbars/core Crossbar Mesh
Arch-A 168 96 128x128 12x14
Arch-B 138 128 128x128 6x23
Arch-C 64 (16 chips × 4) 8 512x1024 Flattened 8x8

All profiles use 2-bit cells and 16 ADCs for 16-bit fixed-point weights. Arch-A/B topology factorizations preserve core counts; the paper does not publish placement details. Arch-C does not model chip boundaries, and Raptor's square-crossbar option cannot match its rectangular arrays. Do not change hardware resources to bypass this limitation.

Other timing/power parameters use Pimcomp's released defaults. Resource and instruction comparisons are reproducible; absolute paper power/energy values are not.

Build and run

From the repository root, after the Raptor build:

.venv/bin/python -m pip install -r requirements.txt
cmake --build third_party/PIMCOMP-NN/build --target PIMCOMP-NN
.venv/bin/python validation/tools/pim/pimcomp/compare/run_pimcomp_models.py

The runner expects existing Pimcomp and Pimsim builds, verifies the paper's GA settings (population 200, up to 1000 iterations), and uses isolated frontend workspaces without changing the source models or shared Pimcomp configuration. Default aggregate results are written beside the comparison runner; explicit custom output roots retain their own aggregate CSVs.

Correctness and precision limits

Pimcomp does not support YOLO11n's Split and Resize; no Pimcomp performance number is reported for that model. Accepted frontend operations can also be ignored by scheduling; see the authoritative frontend and latency scheduler. Known batch-scheduling and BatchNorm gaps must remain visible as failed functional validation.

Functional validation uses FP32 programs in the Rust simulator against native ONNX-MLIR. Pimcomp's Rust export expands byte-sized storage/transfers to FP32. For performance comparison, Pimcomp's original SimulationInfo.gz remains unchanged; a separate Raptor raptor/pimsim_nn/ view scales FP32 storage and transfers to one byte per element with setbw 8, 8. These performance artifacts are not numerically quantized programs and must not be used for correctness.

Vector imm_len is an element count. Addresses and transfer sizes for ld, st, lldi, lmv, send, and recv are byte-based.