Qualcomm AI Engine Direct: HTP float16 Concat reads a static bool input of all True as False

オープン
#24,750 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python

調査の方向性

Start with CatBoolConstant in test_qnn_backend_cat and reproduce the reported case on the QNN SDK 2.51 x86 simulator. Compare HTP float16 Concat output with the static bool input and inspect the QNN Saver tensor values. Done means identifying why the constant is read as False and confirming correct output; the issue says the partitioner workaround can then be removed.

索引モデルが issue の本文から書いたものです。

説明

module: qnn partner: qualcomm

In HTP float16, Concat can read a static bool input of all True as False, with
no error:

class CatBoolConstant(torch.nn.Module):
    def forward(self, x, y):
        return torch.cat((x > 0, torch.full((1, 1, 2, 2), True)), axis=3)

On the x86 simulator of QNN SDK 2.51, with a positive x, the part that comes
from the constant comes back as False. QNN Saver shows the static tensor holds
0x01 for every element, so the input given to QNN is right. The wrong result
depends on the shapes and on where the static input is. Quantized graphs, float
and int32 cats, and constants with mixed values come out right. Not checked on a
device yet.

The QNN partitioner now keeps every such bool cat on CPU in HTP float16. That
also moves cats that would come out right, and can split a graph into 2
delegates. CatBoolConstant in test_qnn_backend_cat checks the values, so the
rule can be removed once HTP reads the input right.

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

主要言語
Python
スター
5.2k
フォーク
1.2k
平均マージ
1日 23時間
マージ済み PR(30日)
696

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pytorch/executorch のほかの issue

pytorch/executorch の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。