日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android-NCNN-Vulkan】记录一次ncnn-vulkan在低性能开发板上出现的native内存溢出的问题

發(fā)布時間:2023/12/15 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android-NCNN-Vulkan】记录一次ncnn-vulkan在低性能开发板上出现的native内存溢出的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

模型作用:人臉關(guān)鍵點檢測

原模型:tensorflow pb.model

轉(zhuǎn)化后:ncnn *.param *.model

主干網(wǎng)絡(luò):shufflenet v2

CPU:ARM A53 2.0GHz 2G MEM

GPU:IMG GE 8300

問題描述:

加載兩個模型--人臉檢測和人臉關(guān)鍵點檢測
人臉檢測模型:ssd,param 10kb,model 509kb,cpu load param 需要1.7ms,load model 需要 19ms;
但是,使用vulkan load param 需要 32s,load model需要55s,一個初始化需要將近2min;

人臉關(guān)鍵點檢測模型:shufflenet v2,param 40kb, model 2.5Mb, cpu load param 需要 5ms,load model 需要 10ms;
但是,使用vulkan load param 需要32s,load model時,mem 中native 狂飆,直接被殺死,導(dǎo)致初始化失敗。

內(nèi)存泄漏問題描述:

主干采用shufflenet v2,最后三層為reduce,由于vulkan不支持reduce,因此用如下方法代替

Pooling pool1 1 1 concat_splitncnn_0 pool1 0=1 1=20 11=20 2=20 12=20 5=1


但是在vulkan ncnn load model 執(zhí)行到 pipeline.cpp 469行

VkResult ret = vkCreateComputePipelines(vkdev->vkdevice(), 0, 1, &computePipelineCreateInfo, 0, &pipeline);


內(nèi)存崩掉了,然后被系統(tǒng)強殺。

?

內(nèi)存泄漏原因分析:

0=1 表示average pool,1和11表示kernal的h和w,2和12表示pad的h和w,以此來代替reduce操作,該方法在ncnn arm cpu 上能夠得到正確的結(jié)果,但是在vulkan gpu上內(nèi)存會出現(xiàn)上述問題。

內(nèi)存泄漏替換方案:

Pooling pool1 1 1 concat_splitncnn_0 pool1 0=1 4=1


可以在確保正確forward的同時,在該硬件環(huán)境上推理速度上升30ms。

?

load model速度慢問題,參見 【Android-NCNN-Vulkan】ncnn-vulkan load param & model 速度慢

?

【PS】復(fù)現(xiàn)vulkan average pooling 內(nèi)存溢出問題:

pool.proto

7767517 2 2 Input images 0 1 images 0=13 1=13 2=1024 Pooling pool1 1 1 images pool1 0=1 1=12 11=12 2=12 12=12 5=1 unsigned char m[16]; std::string param = "/pool.proto"; Net->load_param(param.c_str()); Net->load_model(m);

設(shè)置kernal 和 stride? >=13 時,在本次記錄的配置中,出現(xiàn)內(nèi)存溢出

詳細(xì)問題參見:https://github.com/Tencent/ncnn/issues/1874

總結(jié)

以上是生活随笔為你收集整理的【Android-NCNN-Vulkan】记录一次ncnn-vulkan在低性能开发板上出现的native内存溢出的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。