基于 mac 的 ncnn vulkan iOS集成參考

1 測試結果

總體上悦穿,截止至發(fā)文日(4月4日 星期四……好日子……)ncnn在iOS上的vulkan支持效果還不盡理想巩趁,vulkan版本的執(zhí)行速度有至少20%的下降堤器。(僅僅是我的測試結果谨胞,不排除有我的測試方式不理想的可能扎阶,不過官方也有聲明洛姑,現(xiàn)在的vulkan優(yōu)化還不完善上沐,如下圖)

ncnn vulkan集成后速度變慢的官方說明.png

不過毋庸置疑的是:提前熟悉一下集成流程不會有什么壞處的~

2 工程參考

https://github.com/chrisYooh/ncnnSrcDemo
其下有3個工程:

1)NcnnSrcDemo
ncnn(非vulkan支持版本)直接以 源碼方式 集成,可打斷點調試楞艾。

2)NcnnSrcDemo_MoltenVK
ncnn(vulkan版本)直接以 源碼方式 集成参咙,可打斷點調試。
ncnn源碼對應提交號:c778265(源碼有小幅vulkan無關改動)

3)NcnnFrmDemo_MoltenVK
ncnn(vulkan版本)Framework的方式 集成硫眯,不可調試ncnn源碼蕴侧,僅做工程配置參考。
ncnn源碼對應提交號:c778265(源碼有小幅vulkan無關改動)

3 集成步驟(先練習一下吧两入!19.05.24. 更新)

3.1 下載最新的VulkanSDK

比如:1.1.106.0版本:編譯ncnn使用
下載地址:https://vulkan.lunarg.com/sdk/home#mac

vulkanSDK下載參考.png

Tips:
1 不需要下載MoltenVK的源碼自己編譯(當然你想也可以)
2 你會發(fā)現(xiàn)MoltenVK/iOS/framework下的Framework只支持arm64平臺净宵,沒錯,MoltenVK在iOS上只支持arm64裹纳。

只支持arm64原來是Metal的鍋.png

3.2 編譯ncnn

倪神 更新過ncnn代碼后在mac的編譯還蠻順利的择葡,只需要下載ncnn的源碼按照提示編譯即可

3.2.1 ncnn源碼地址

https://github.com/Tencent/ncnn

3.2.2 在MacOSX上編譯iOS ncnn

進入上面的源碼地址后,往下來剃氧,就看到了【HowTo】一節(jié)敏储,
選擇【Build for iOS on MacOSX with xcode】即有詳細說明。
當然她我,我都寫簡書了虹曙,你可以選擇不看“她”的!(這個“她”頗有深意啊哈哈……)

ncnn git readme節(jié)選.png

3.2.3 vulkan ncnn 編譯腳本參考

對番舆,不用看她的酝碳,在ncnn源碼工程的根目錄下創(chuàng)建build_ios_vulkan.sh文件,然后文件內容按下面代碼的填寫恨狈,一個vulkan的ncnn ios framework的編譯腳本 就完成了疏哗。
運行腳本,會在ncnn源碼工程的根目錄下生成ncnn.framework禾怠。
7捣睢!吗氏!腳本要修改兩個路徑哦Q科!弦讽!
-DVulkan_LIBRARY
-DVulkan_INCLUDE_DIR
對應的路徑改為你的 vulkansdk 對應的絕對路徑
vulkansdk-macos-1.1.106.0 即為 你在3.1節(jié)下載的vlukan SDK

#!/bin/sh

# Build For iphoneOS
rm -rf build-ios-vulkan
mkdir build-ios-vulkan
cd build-ios-vulkan

cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake \
-DIOS_PLATFORM=OS \
-DENABLE_BITCODE=0 \
-DIOS_ARCH="arm64" \
-DVulkan_LIBRARY=/Users/chris/Documents/Software/vulkansdk/vulkansdk-macos-1.1.106.0/MoltenVK/iOS/dynamic/libMoltenVK.dylib \
-DVulkan_INCLUDE_DIR=/Users/chris/Documents/Software/vulkansdk/vulkansdk-macos-1.1.106.0/MoltenVK/include \
-DNCNN_VULKAN=ON ..

make -j8
make install
cd ../

# Combine Framework
rm -rf ncnn.framework
mkdir -p ncnn.framework/Versions/A/Headers
mkdir -p ncnn.framework/Versions/A/Resources
ln -s A ncnn.framework/Versions/Current
ln -s Versions/Current/Headers ncnn.framework/Headers
ln -s Versions/Current/Resources ncnn.framework/Resources
ln -s Versions/Current/ncnn ncnn.framework/ncnn

lipo -create \
build-ios-vulkan/install/lib/libncnn.a \
-o ncnn.framework/Versions/A/ncnn

cp -r build-ios-vulkan/install/include/* ncnn.framework/Versions/A/Headers/
cp Info.plist ncnn.framework/Versions/A/Resources/

3.3 集成工程

3.3.1 Search Path Setting

Framework Search Path 添加:
[路徑前綴]/vulkansdk-macos-1.1.106.0/MoltenVK/iOS/framework

Head Search Path 添加:
[路徑前綴]/vulkansdk-macos-1.1.106.0/MoltenVK/include

修改成你的vulkan-sdk的文件夾名

3.3.2 framework集成

Link Frameworks and Libraries添加:
ncnn.framework
MoltenVK.framework

image.png

3.4 ncnn 開啟vulkan功能

其實就2行代碼污尉,頭文件包含<ncnn/Net> 直接搞定
云里霧里膀哲?直接去第2節(jié)下載源碼看一看吧。

// 初始化gpu
ncnn::destroy_gpu_instance();

// 設置網(wǎng)絡支持vulkan
ncnn_net.use_vulkan_compute = 1;
ncnn原版vulkan開啟說明.png

4 結語與展望

至此被碗,我們完成了ncnn 的 vulkan 版本在iOS的集成某宪,雖然現(xiàn)在的優(yōu)化效果不僅理想。但考慮到vulkan在mac端的支持也才僅僅2锐朴、3個月兴喂,我們有理由為ncnn vulkan版本之后的優(yōu)化速度報以信心。

為倪神打Call吧焚志!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末衣迷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子娩嚼,更是在濱河造成了極大的恐慌蘑险,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岳悟,死亡現(xiàn)場離奇詭異佃迄,居然都是意外死亡,警方通過查閱死者的電腦和手機贵少,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門呵俏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人滔灶,你說我怎么就攤上這事普碎。” “怎么了录平?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵麻车,是天一觀的道長。 經(jīng)常有香客問我斗这,道長动猬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任表箭,我火速辦了婚禮赁咙,結果婚禮上,老公的妹妹穿的比我還像新娘免钻。我一直安慰自己彼水,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布极舔。 她就那樣靜靜地躺著凤覆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拆魏。 梳的紋絲不亂的頭發(fā)上盯桦,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天澡绩,我揣著相機與錄音,去河邊找鬼俺附。 笑死,一個胖子當著我的面吹牛溪掀,可吹牛的內容都是我干的事镣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼揪胃,長吁一口氣:“原來是場噩夢啊……” “哼璃哟!你這毒婦竟也來了?” 一聲冷哼從身側響起喊递,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤随闪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骚勘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铐伴,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年俏讹,在試婚紗的時候發(fā)現(xiàn)自己被綠了当宴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡泽疆,死狀恐怖户矢,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情殉疼,我是刑警寧澤梯浪,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站瓢娜,受9級特大地震影響挂洛,放射性物質發(fā)生泄漏。R本人自食惡果不足惜恋腕,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一抹锄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荠藤,春花似錦伙单、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淤井,卻和暖如春布疼,著一層夾襖步出監(jiān)牢的瞬間摊趾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工游两, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砾层,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓贱案,卻偏偏與公主長得像肛炮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宝踪,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容