XiaoMi / StableDiffusionOnDevice

本项目是一个通过文字生成图片的项目,基于开源模型Stable Diffusion V1.5生成可以在手机的CPU和NPU上运行的模型,包括其配套的模型运行框架。
MIT License
80 stars 17 forks source link

K70 Pro等新款手机失败原因定位 #8

Open caofx0418 opened 4 months ago

caofx0418 commented 4 months ago

问题已定位,高通接口 二进制不兼容,导致失败。

详细原因:

K70 Pro手机系统版本高,必须使用新的SDK,否则在读取so符号表正确,但进行调用qnn_net->getBackendBuildId()函数指针时错误,从而crash; deviceCreate,参数设置和初始化设备,也会失败。 如下2个重要结构体失败: typedef struct { // 新增函数指针xxx } QNN_INTERFACE_VER_TYPE;

typedef struct { // 新增成员 const char const enableGraphs; /// Used with QNN_CONTEXT_CONFIG_MEMORY_LIMIT_HINT uint64_t memoryLimitHint; /// Used with QNN_CONTEXT_CONFIG_PERSISTENT_BINARY uint8_t isPersistentBinary; /// Used with QNN_CONTEXT_CONFIG_BINARY_COMPATIBILITY QnnContext_BinaryCompatibilityType_t binaryCompatibilityType; }; } QnnContext_Config_t;

解决方案:QNN头文件和so,替换为2.19 测试手机:K70 Pro、14

a67793581 commented 1 month ago

具体怎么操作呢?哪个版本的SDK