Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[QNN] 16a4w_block stride-2 conv + ReLU fails HTP graph prepare on SM8850 (Relu16bParamsPlaceholder)

Ouverte
#23,922 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@psiddh y travaille déjà.

Depuis le 16/10/2026.

Évaluation

Cette issue n'a pas encore été évaluée.

Description

bug module: qnn partner: qualcomm
🐛 Describe the bug

A 16a4w_block (LPBQ) conv with stride 2 followed by ReLU fails HTP graph prepare on SM8850, for every block size tried (16/32/64):

[ERROR] [Qnn ExecuTorch]: tcm_migration.cc:2163::ERROR:no properties registered for q::Relu16bParamsPlaceholder
[ERROR] [Qnn ExecuTorch]: graph_prepare.cc:208::ERROR:could not create op: q::Relu16bParamsPlaceholder
AssertionError: Failed to generate Qnn context binary.

Stride 1, stride 2 without the ReLU, and plain per-channel 16a4w with stride 2 + ReLU all lower fine. Hit on DeepLabV3-ResNet50 (torchvision), where it blocks LPBQ for most ResNet-style CNNs.

import torch
from executorch.backends.qualcomm.quantizer.quantizer import QnnQuantizer, QuantDtype
from executorch.backends.qualcomm.serialization.qc_schema import QcomChipset
from executorch.backends.qualcomm.utils.utils import (
    generate_htp_compiler_spec, generate_qnn_executorch_compiler_spec, to_edge_transform_and_lower_to_qnn)
from torchao.quantization.pt2e.quantize_pt2e import convert_pt2e, prepare_pt2e

class M(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.conv = torch.nn.Conv2d(256, 128, 3, stride=2, padding=1)
    def forward(self, x):
        return torch.relu(self.conv(x))

x = (torch.randn(1, 256, 64, 64),)
gm = torch.export.export(M().eval(), x).module()
conv = next(n.name for n in gm.graph.nodes if n.target == torch.ops.aten.conv2d.default)
q = QnnQuantizer(soc_model=QcomChipset.SM8850)
q.set_default_quant_config(quant_dtype=QuantDtype.use_16a4w_block, is_conv_per_channel=True)
q.set_block_size_map({conv: (1, 16, 1, 1)})
p = prepare_pt2e(gm, q)
p(*x)
specs = generate_qnn_executorch_compiler_spec(
    soc_model=QcomChipset.SM8850, backend_options=generate_htp_compiler_spec(use_fp16=False))
to_edge_transform_and_lower_to_qnn(convert_pt2e(p), x, specs).to_executorch()
Versions

ExecuTorch main e6cfbf87c3, QAIRT 2.47.0.260601, x86_64 Linux host, target SM8850 (V81).

cc @cccclai @winskuo-quic @shewu-quic @haowhsu-quic @DannyYuyang-quic @cbilgin @abhinaykukkadapu @psiddh

Langage dominant
Python
Étoiles
5.1k
Forks
1.2k
Merge moyen
2 j 14 min
PR mergées (30 j)
704

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de pytorch/executorch

Toutes les issues de pytorch/executorch

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.