UH-OH

It looks like you don’t have access to that feature yet

Contact sales to get upgraded to the full DevStudio experience.

UH-OH

It looks like you don't have access to that feature yet.

to select
to navigate
escto close
Introduction to the Chimera SDK
Chimera SDK Quick Start Guide
Chimera SDK Command Line Interface (CLI)
Tutorial: Using SDK as a Library
Tutorials & Model Demos
Quantization Tutorials
Multicore Demo
Chimera LLVM C++ Compiler
Chimera SDK Licensing Policy Documentation
Glossary
Chimera Software User GuideTutorials & Model DemosQuantization TutorialsTutorial: Top1 and Top5 Classifier Validation

Tutorial: Top1 and Top5 Classifier Validation


NOTE: The Jupyter Notebook below is included in the Chimera SDK and can be run interactively by running the following CLI command:

$ quadric sdk notebook

From the Jupyter Notebook window in your browser, select the notebook named /quadric/sdk-cli/examples/quantization/ClassifierTop1Top5Validation.ipynb.


Evaluating Classifier Performance: Top-1 and Top-5 Accuracy

This notebook focuses on Top-1 and Top-5 accuracy metrics for classifier validation in machine learning. Top-1 accuracy measures the percentage of predictions where the classifier's top choice is correct, crucial for scenarios demanding high precision. Top-5 accuracy evaluates whether the correct answer is within the classifier's top five predictions, useful in situations with numerous classes or when approximate correctness is sufficient.

Both metrics provide insights into a classifier's performance: Top-1 for precision and Top-5 for broader relevance. We'll apply these metrics to a dataset of NUM_IMAGES to assess our classifier's effectiveness, offering a balanced view of its capabilities in precise and general prediction scenarios.

In this tutorial, we will show how to compute top1 and top5 for a classifier using the Quadric SDK both as a library and using the command line tools.

Preparation

First let's export a classifier from torchvision and quantize it. This network will be used for the remainder of the tutorial.

from pathlib import Path

import torch
import torchvision
from torch.utils.data import Subset
from torchvision.transforms import CenterCrop, Compose, Normalize, Resize, ToTensor

from tvm.contrib.epu.chimera_job.constants import DEFAULT_ONNX_OPSET
from sdk_cli.lib.quantize import (
    QuantizedONNXModel,
    quantize_onnx_model,
)
from sdk_cli.utils.datasets import ImageNet_Mini_Quadric
from sdk_cli.utils.datasets.ImageNet import IMAGENET_1K_NORMALIZATION_PARAMETERS
## NOTE: Full list of available torchvision models can be found by running the following:
## print(torchvision.models.list_models())

pytorch_model = torchvision.models.resnet18(weights="DEFAULT")

## Convert PyTorch model into ONNX Format
onnx_model_path = Path(f"{pytorch_model.__class__.__name__}_float32.onnx")

## Create an example input tensor for the model
input_tensor_shape = (1, 3, 224, 224)
example_input = torch.randn(*input_tensor_shape, requires_grad=True)

## Export the model to ONNX format
torch.onnx.export(
    pytorch_model,
    example_input,
    onnx_model_path,
    export_params=True,  # Store the trained parameter weights inside the model file
    do_constant_folding=True,  # Execute constant folding for optimization
    opset_version=DEFAULT_ONNX_OPSET,
    input_names=["input"],
    output_names=["output"],
)
## NOTE: Change normalization parameters below if using dataset other than ImageNet
transforms = Compose(
    [
        Resize(224),
        CenterCrop(224),
        ToTensor(),
        Normalize(
            IMAGENET_1K_NORMALIZATION_PARAMETERS.channel_means,
            IMAGENET_1K_NORMALIZATION_PARAMETERS.channel_standard_deviations,
        ),
    ]
)

## Path to directory containing data to use for for numerical range calibration during quantization
## Data is used also used to compare accuracy of fp32 and int8 models
dataset = ImageNet_Mini_Quadric.Dataset(transform=transforms)
subset_of_dataset = Subset(dataset, range(100))

quantized_onnx_model: QuantizedONNXModel = quantize_onnx_model(
    onnx_model_path, subset_of_dataset, asymmetric_activation=True
)
2026-06-19 03:53 - INFO - sdk - quantize - ONNX model shapes inferred.
2026-06-19 03:53 - DEBUG - sdk - quantize - Forcing node types: []
2026-06-19 03:53 - DEBUG - sdk - quantize - ONNX Node types excluded from quantization: ['Softmax', 'Sigmoid', 'QuadricCustomOp']
2026-06-19 03:53 - DEBUG - sdk - quantize - ONNX Node names excluded from quantization: []
2026-06-19 03:53 - INFO - sdk - quantize - Starting quantization...
WARNING:root:Please use QuantFormat.QDQ for activation type QInt8 and weight type QInt8. Or it will lead to bad performance on x64.
2026-06-19 03:53 - INFO - sdk - quantize - Quantization completed! Quantized model saved to /quadric/sdk-cli/examples/quantization/ResNet_OpSet16_optimized_asym_int8_q.onnx
2026-06-19 03:53 - INFO - sdk - quantize - ONNX full precision model size: 44.58MB
2026-06-19 03:53 - INFO - sdk - quantize - ONNX quantized model size: 11.18MB
2026-06-19 03:53 - INFO - sdk - quantize - ONNX model shapes inferred.
2026-06-19 03:53 - INFO - sdk - quantize - ONNX Model with well-defined shapes has been saved at `/quadric/sdk-cli/examples/quantization/ResNet_OpSet16_optimized_asym_int8_q_shaped.onnx`.
2026-06-19 03:53 - DEBUG - sdk - quantize - Checking for FLOAT/FLOAT16 types...
2026-06-19 03:53 - INFO - sdk - quantize - Checking for remaining FLOAT/FLOAT16 types.
2026-06-19 03:53 - INFO - sdk - quantize - Model still has FLOAT/FLOAT16 types after quantization. Creating ranges for floating point tensors using calibration data...
2026-06-19 03:54 - INFO - sdk - quantize - Saved computed tensor ranges to /quadric/sdk-cli/examples/quantization/ResNet_OpSet16_optimized_asym_int8_q_shaped.tranges.
2026-06-19 03:54 - INFO - sdk - quantize - 
╒═════════════════════════════════════════════════════════════════════════════════════════╤════════════════════════════════════════════════════════════════════════════════════════════╕
 Quantized ONNX Model                                                                     Tensor Ranges File                                                                         
╞═════════════════════════════════════════════════════════════════════════════════════════╪════════════════════════════════════════════════════════════════════════════════════════════╡
 /quadric/sdk-cli/examples/quantization/ResNet_OpSet16_optimized_asym_int8_q_shaped.onnx  /quadric/sdk-cli/examples/quantization/ResNet_OpSet16_optimized_asym_int8_q_shaped.tranges 
╘═════════════════════════════════════════════════════════════════════════════════════════╧════════════════════════════════════════════════════════════════════════════════════════════╛

Using sdk_cli.lib.validation in a python script

First let's look at using the sdk_cli.lib.validation.classification_validation() function to easily compute top1 and top5 for ort and iss given a quantized network, a path containing images, and supporting parameters. This can easily be adapted to work with any dataset similar to Imagenet mini.

from sdk_cli.lib import validation

THREADS = 3
NUM_IMAGES = 24

validation_scores = validation.classification_validation(
    onnx_model_p=str(quantized_onnx_model.model_path),
    validation_p="../common/validation/imagenet-mini-quadric/",
    threads=THREADS,
    num_images=NUM_IMAGES,
    normalization_mean=IMAGENET_1K_NORMALIZATION_PARAMETERS.channel_means,
    normalization_std=IMAGENET_1K_NORMALIZATION_PARAMETERS.channel_standard_deviations,
    map_cls_p="../common/validation/map_clsloc.txt",
    dict_label_p="../common/validation/imagenet_classes.txt",
)
print(validation_scores)
2026-06-19 03:54 - INFO - epu - chimera_job - START==================================onnx_ingest
2026-06-19 03:54 - INFO - sdk - validation - Extracted singular input: input
2026-06-19 03:54 - INFO - sdk - validation - Extracted singular output: output
2026-06-19 03:54 - INFO - sdk - validation - Extracted input shape: [1, 3, 224, 224]
2026-06-19 03:54 - INFO - sdk - validation - Implied image dimensions (W, H): (224, 224)
2026-06-19 03:54 - INFO - epu - chimera_job - START==================================onnx_ingest
2026-06-19 03:54 - INFO - epu - codegen - START===============================optimize_relay
2026-06-19 03:54 - INFO - epu - codegen - START====================quantize_to_cpu_runnable_fx
2026-06-19 03:54 - INFO - epu - fx - 

Source name              Op                      Output 0 Range                             Output 0 Frac Bits
-----------------------  ----------------------  ---------------------------------------  --------------------
output_DequantizeLinear  contrib.epu.dequantize  (-9.761742234230042, 38.10833987593651)                    25

2026-06-19 03:54 - INFO - epu - codegen - START====================build_cpu_runnable_fx_relay
2026-06-19 03:54 - INFO - epu - codegen - START=======================quantize_to_chimera_fx
2026-06-19 03:54 - INFO - epu - codegen - START=================================relay_to_tir
2026-06-19 03:54 - INFO - epu - codegen - START===========================relay_to_epu_relay
2026-06-19 03:54 - INFO - epu - codegen - START==============================adapt_and_order
2026-06-19 03:54 - INFO - epu - mac_counter - 
2026-06-19 03:54 - INFO - epu - mac_counter - ============================================================
2026-06-19 03:54 - INFO - epu - mac_counter - MAC Operation Count Summary
2026-06-19 03:54 - INFO - epu - mac_counter - ============================================================
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 236,027,904 ops (118,013,952 MACs) - /conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.0/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.0/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.1/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.1/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 115,605,504 ops (57,802,752 MACs) - /layer2/layer2.0/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer2/layer2.0/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 12,845,056 ops (6,422,528 MACs) - /layer2/layer2.0/downsample/downsample.0/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer2/layer2.1/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer2/layer2.1/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 115,605,504 ops (57,802,752 MACs) - /layer3/layer3.0/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer3/layer3.0/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 12,845,056 ops (6,422,528 MACs) - /layer3/layer3.0/downsample/downsample.0/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer3/layer3.1/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer3/layer3.1/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 115,605,504 ops (57,802,752 MACs) - /layer4/layer4.0/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer4/layer4.0/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 12,845,056 ops (6,422,528 MACs) - /layer4/layer4.0/downsample/downsample.0/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer4/layer4.1/conv1/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer4/layer4.1/conv2/Conv_quant
2026-06-19 03:54 - INFO - epu - mac_counter - ------------------------------------------------------------
2026-06-19 03:54 - INFO - epu - mac_counter - Total: 3,627,122,688 ops (1,813,561,344 MACs)
2026-06-19 03:54 - INFO - epu - mac_counter - ============================================================
2026-06-19 03:54 - INFO - epu - mac_counter - 
2026-06-19 03:54 - INFO - epu - codegen - START==============================amend_ctrl_flow
2026-06-19 03:54 - INFO - epu - codegen - START=============================plan_lrm_virtual
2026-06-19 03:54 - INFO - epu - codegen - START==============================amend_ctrl_flow
2026-06-19 03:54 - INFO - epu - codegen - START===============================lrm_alloc_loop
2026-06-19 03:54 - INFO - epu - codegen - START==============================amend_ctrl_flow
2026-06-19 03:54 - INFO - epu - codegen - START================================lrm_splitting
2026-06-19 03:55 - INFO - epu - codegen - START==============================ext_split_relay
2026-06-19 03:55 - INFO - epu - codegen - START====================================build_tir
2026-06-19 03:55 - INFO - epu - chimera_job - Compilation of ResNet_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1 successful
Processing: 100%|██████████████████████████████| 24/24 [02:07<00:00,  5.33s/it]
100%|██████████████████████████████████████████| 24/24 [00:05<00:00,  4.70it/s]


ISS mismatch not in ORT Top1:
[]
ISS mismatch not in ORT Top5:
[]
ORT mismatch not in ISS Top1:
[]
ORT mismatch not in ISS Top5:
[]

+------+--------+--------+
|      | ORT    | ISS    |
+======+========+========+
| TOP1 | 62.50% | 62.50% |
+------+--------+--------+
| TOP5 | 87.50% | 87.50% |
+------+--------+--------+

Validation with the graph validate CLI tool

We also provide a convenient command line interface to perform the same task on the command line. However classifier validation is limited to only the dataset and class mappings contained within the docker container. For users who require the use of their own datasets, we recommend using the library call directly.

!sdk graph validate --help
Usage: sdk graph validate [OPTIONS] QUANTIZED_MODEL

  Validate a quantized onnx against a set of validation images.

Options:
  --mean [<float>, <float>, <float>]
                                  Mean of the input normalization that the
                                  model was trained with.  [default: [0, 0,
                                  0]]
  --std [<float>, <float>, <float>]
                                  Standard Deviation of the input
                                  normalization that the model was trained
                                  with.  [default: [1, 1, 1]]
  --num-images INTEGER            Total maximum number of images to use
  --num-threads INTEGER           Number of threads to use. (Cannot exceed
                                  machine limit)
  --trange-file TEXT              Optional tranges file
  --help                          Show this message and exit.
!sdk graph validate {quant_result.qmodel_path} \
    --mean '[0.485, 0.456, 0.406]' --std '[0.229, 0.224, 0.224]' \
    --num-images {NUM_IMAGES} --num-threads {THREADS}
Usage: sdk graph validate [OPTIONS] QUANTIZED_MODEL
Try 'sdk graph validate --help' for help.

Error: Invalid value for '--num-images': '{NUM_IMAGES}' is not a valid integer.

The graph validate command writes a validation_report.json file to disk with the run summary.

!cat validation_report.json
cat: validation_report.json: No such file or directory

FILM Region Validation

In addition to top1 / top5 validation. We can use the built in FILM region validation to try to localize sources of error within the compilation process and correlated differences to regions of the ONNX graph.

from tvm.contrib.epu.chimera_job.chimera_job import ChimeraJob

## In addition to top1 / top5 validtion. We can use the built in FILM region validation to try to localize sources of error.
cgc_job = ChimeraJob(
    model_p=str(quantized_onnx_model.model_path),
    validate_iss=True,
)

cgc_job.compile()
cgc_job.validate_ort_iss()
2026-06-19 03:58 - INFO - epu - chimera_job - START==================================onnx_ingest
2026-06-19 03:58 - INFO - epu - codegen - START===============================optimize_relay
2026-06-19 03:58 - INFO - epu - codegen - START====================quantize_to_cpu_runnable_fx
2026-06-19 03:58 - INFO - epu - fx - 

Source name              Op                      Output 0 Range                             Output 0 Frac Bits
-----------------------  ----------------------  ---------------------------------------  --------------------
output_DequantizeLinear  contrib.epu.dequantize  (-9.761742234230042, 38.10833987593651)                    25

2026-06-19 03:58 - INFO - epu - codegen - START====================build_cpu_runnable_fx_relay
2026-06-19 03:58 - INFO - epu - codegen - START=======================quantize_to_chimera_fx
2026-06-19 03:58 - INFO - epu - codegen - START=================================relay_to_tir
2026-06-19 03:58 - INFO - epu - codegen - START===========================relay_to_epu_relay
2026-06-19 03:58 - INFO - epu - codegen - START==============================adapt_and_order
2026-06-19 03:58 - INFO - epu - mac_counter - 
2026-06-19 03:58 - INFO - epu - mac_counter - ============================================================
2026-06-19 03:58 - INFO - epu - mac_counter - MAC Operation Count Summary
2026-06-19 03:58 - INFO - epu - mac_counter - ============================================================
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 236,027,904 ops (118,013,952 MACs) - /conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.0/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.0/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.1/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer1/layer1.1/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 115,605,504 ops (57,802,752 MACs) - /layer2/layer2.0/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer2/layer2.0/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 12,845,056 ops (6,422,528 MACs) - /layer2/layer2.0/downsample/downsample.0/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer2/layer2.1/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer2/layer2.1/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 115,605,504 ops (57,802,752 MACs) - /layer3/layer3.0/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer3/layer3.0/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 12,845,056 ops (6,422,528 MACs) - /layer3/layer3.0/downsample/downsample.0/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer3/layer3.1/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer3/layer3.1/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 115,605,504 ops (57,802,752 MACs) - /layer4/layer4.0/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer4/layer4.0/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 12,845,056 ops (6,422,528 MACs) - /layer4/layer4.0/downsample/downsample.0/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer4/layer4.1/conv1/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter -   conv2d: 231,211,008 ops (115,605,504 MACs) - /layer4/layer4.1/conv2/Conv_quant
2026-06-19 03:58 - INFO - epu - mac_counter - ------------------------------------------------------------
2026-06-19 03:58 - INFO - epu - mac_counter - Total: 3,627,122,688 ops (1,813,561,344 MACs)
2026-06-19 03:58 - INFO - epu - mac_counter - ============================================================
2026-06-19 03:58 - INFO - epu - mac_counter - 
2026-06-19 03:58 - INFO - epu - codegen - START==============================amend_ctrl_flow
2026-06-19 03:58 - INFO - epu - codegen - START=============================plan_lrm_virtual
2026-06-19 03:58 - INFO - epu - codegen - START==============================amend_ctrl_flow
2026-06-19 03:58 - INFO - epu - codegen - START===============================lrm_alloc_loop
2026-06-19 03:58 - INFO - epu - codegen - START==============================amend_ctrl_flow
2026-06-19 03:58 - INFO - epu - codegen - START================================lrm_splitting
2026-06-19 03:58 - INFO - epu - codegen - START==============================ext_split_relay
2026-06-19 03:59 - INFO - epu - codegen - START====================================build_tir
2026-06-19 03:59 - INFO - epu - chimera_job - Compilation of ResNet_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1 successful
2026-06-19 03:59 - INFO - epu - iss_testing - No tranges found for input, use default float range: <tvm.contrib.epu.interval.Interval object at 0x798f0abd9d50>
2026-06-19 03:59 - INFO - epu - iss_testing - No tranges found for input, use default float range: <tvm.contrib.epu.interval.Interval object at 0x798f0abd9d50>
2026-06-19 03:59 - INFO - epu - iss_testing - Started Executing Onnxruntime...
2026-06-19 03:59 - INFO - epu - iss_testing - Done 0:00:00.223592
2026-06-19 03:59 - INFO - epu - iss_testing - No tranges found for input, use default float range: <tvm.contrib.epu.interval.Interval object at 0x798ff27de230>
FILM 12/12: 100%|███████████████████████████████████████████████████| 12/12 [00:21<00:00,  1.81s/it]
2026-06-19 04:00 - WARNING - epu - iss_testing - /layer3/layer3.1/Add_quant::adapter_tb_strided_tb(tb(0)->tb(0))::/layer4/layer4.0/conv1/Conv_quant:0 not found in the graph that was run in ORT
2026-06-19 04:00 - INFO - epu - iss_testing - 
======================================================================
ISS validation results (quantized model, rtol=0.1, atol=-1)
======================================================================
  input_QuantizeLinear:0 (PASS, Node, int8)
    Bitwise Mismatches  0 / 150528 (0.0000%)
    Mismatches > Tol    0 / 150528 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       18
    ISS @ max err       18

  /conv1/Conv_quant:0 (PASS, Node, int8x2)
    Bitwise Mismatches  0 / 802816 (0.0000%)
    Mismatches > Tol    0 / 802816 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -128
    ISS @ max err       -128

  /maxpool/MaxPool:0 (PASS, Node, int8x4)
    Bitwise Mismatches  0 / 200704 (0.0000%)
    Mismatches > Tol    0 / 200704 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -127
    ISS @ max err       -127

  /layer1/layer1.0/conv1/Conv_quant:0 (PASS, Node, int8x4)
    Bitwise Mismatches  0 / 200704 (0.0000%)
    Mismatches > Tol    0 / 200704 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -128
    ISS @ max err       -128

  /layer1/layer1.0/Add_quant:0 (PASS, Node, int8x4)
    Bitwise Mismatches  0 / 200704 (0.0000%)
    Mismatches > Tol    0 / 200704 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -117
    ISS @ max err       -117

  /layer1/layer1.1/conv1/Conv_quant:0 (PASS, Node, int8x4)
    Bitwise Mismatches  0 / 200704 (0.0000%)
    Mismatches > Tol    0 / 200704 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -106
    ISS @ max err       -106

  /layer1/layer1.1/Add_quant:0 (PASS, Node, int8x2)
    Bitwise Mismatches  0 / 200704 (0.0000%)
    Mismatches > Tol    0 / 200704 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -118
    ISS @ max err       -118

  /layer2/layer2.1/Add_quant:0 (PASS, Node, int8x2)
    Bitwise Mismatches  0 / 100352 (0.0000%)
    Mismatches > Tol    0 / 100352 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -128
    ISS @ max err       -128

  /avgpool/GlobalAveragePool_quant:0 (PASS, Node, int8)
    Bitwise Mismatches  0 / 512 (0.0000%)
    Mismatches > Tol    0 / 512 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0, 0, 0)
    ORT @ max err       -128
    ISS @ max err       -128

  output_DequantizeLinear:0 (PASS, Node, custom[qfp.25]32)
    Bitwise Mismatches  0 / 1000 (0.0000%)
    Mismatches > Tol    0 / 1000 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0)
    ORT @ max err       -1.5018065
    ISS @ max err       -1.5018065

  output (PASS, Output, custom[qfp.25]32)
    Bitwise Mismatches  0 / 1000 (0.0000%)
    Mismatches > Tol    0 / 1000 (0.0000%)
    Thresholds          rtol=0.1, atol=-1
    RMSE                0
    PSNR                inf dB
    Max Abs Err         0
    Max Abs Err / ε     0
    Max Err Loc         (0, 0)
    ORT @ max err       -1.5018065
    ISS @ max err       -1.5018065

11 entries





[{'S': 'PASS',
  'Type': 'Node',
  'Name': 'input_QuantizeLinear:0',
  'dtype': 'int8',
  'total': 150528,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': 18,
  'ISS[loc]': 18,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/conv1/Conv_quant:0',
  'dtype': 'int8x2',
  'total': 802816,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -128,
  'ISS[loc]': -128,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/maxpool/MaxPool:0',
  'dtype': 'int8x4',
  'total': 200704,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -127,
  'ISS[loc]': -127,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/layer1/layer1.0/conv1/Conv_quant:0',
  'dtype': 'int8x4',
  'total': 200704,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -128,
  'ISS[loc]': -128,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/layer1/layer1.0/Add_quant:0',
  'dtype': 'int8x4',
  'total': 200704,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -117,
  'ISS[loc]': -117,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/layer1/layer1.1/conv1/Conv_quant:0',
  'dtype': 'int8x4',
  'total': 200704,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -106,
  'ISS[loc]': -106,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/layer1/layer1.1/Add_quant:0',
  'dtype': 'int8x2',
  'total': 200704,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -118,
  'ISS[loc]': -118,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/layer2/layer2.1/Add_quant:0',
  'dtype': 'int8x2',
  'total': 100352,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -128,
  'ISS[loc]': -128,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': '/avgpool/GlobalAveragePool_quant:0',
  'dtype': 'int8',
  'total': 512,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0, 0, 0),
  'ORT[loc]': -128,
  'ISS[loc]': -128,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Node',
  'Name': 'output_DequantizeLinear:0',
  'dtype': 'custom[qfp.25]32',
  'total': 1000,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0),
  'ORT[loc]': -1.5018065,
  'ISS[loc]': -1.5018065,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''},
 {'S': 'PASS',
  'Type': 'Output',
  'Name': 'output',
  'dtype': 'custom[qfp.25]32',
  'total': 1000,
  'Bitwise Mismatches': 0,
  'Mismatch %': 0.0,
  'RMSE': 0.0,
  'PSNR (dB)': inf,
  'Max Abs Err': 0.0,
  'Max Abs Err Loc': (0, 0),
  'ORT[loc]': -1.5018065,
  'ISS[loc]': -1.5018065,
  'Max Abs Err / ε': 0.0,
  'Mismatches Above Tol': 0,
  'rtol': 0.1,
  'atol': -1,
  'Comment': ''}]
Table of Contents
Introduction to the Chimera SDK
Chimera SDK Quick Start Guide
Chimera SDK Command Line Interface (CLI)
Tutorial: Using SDK as a Library
Tutorials & Model Demos
Quantization Tutorials
Multicore Demo
Chimera LLVM C++ Compiler
Chimera SDK Licensing Policy Documentation
Glossary


© Copyright 2026 Quadric All Rights Reserved • Privacy Policy
This documentation is preliminary and confidential. It is subject to change. Quadric does not give any warranty express or implied that the contents will be complete or accurate or up to date. The company shall not be liable for any loss, actions, claims, proceedings, demands or costs or damages whatsoever or howsoever caused arising directly or indirectly in connection with or arising out of the use of this material.

Sign in to your account

Don't have an account? Create an Account
By signing in, you are agreeing to our Terms of Use and Privacy Policy.

Develop.

Simulate.

Profile.

Collaborate.

We use cookies to enhance your browsing experience, and analyze our traffic.
By clicking "Accept All", you consent to our use of cookies.