mac vulkan_基于 mac 的 ncnn vulkan iOS集成参考
1 测试结果
总体上,截止至发文日(4月4日 星期四……好日子……)ncnn在iOS上的vulkan支持效果还不尽理想,vulkan版本的执行速度有至少20%的下降。(仅仅是我的测试结果,不排除有我的测试方式不理想的可能,不过官方也有声明,现在的vulkan优化还不完善,如下图)
ncnn vulkan集成后速度变慢的官方说明.png
不过毋庸置疑的是:提前熟悉一下集成流程不会有什么坏处的~
2 工程参考
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
vulkanSDK下载参考.png
Tips:
1 不需要下载MoltenVK的源码自己编译(当然你想也可以)
2 你会发现MoltenVK/iOS/framework下的Framework只支持arm64平台,没错,MoltenVK在iOS上只支持arm64。
只支持arm64原来是Metal的锅.png
3.2 编译ncnn
倪神 更新过ncnn代码后在mac的编译还蛮顺利的,只需要下载ncnn的源码按照提示编译即可
3.2.1 ncnn源码地址
3.2.2 在MacOSX上编译iOS ncnn
进入上面的源码地址后,往下来,就看到了【HowTo】一节,
选择【Build for iOS on MacOSX with xcode】即有详细说明。
当然,我都写简书了,你可以选择不看“她”的!(这个“她”颇有深意啊哈哈……)
ncnn git readme节选.png
3.2.3 vulkan ncnn 编译脚本参考
对,不用看她的,在ncnn源码工程的根目录下创建build_ios_vulkan.sh文件,然后文件内容按下面代码的填写,一个vulkan的ncnn ios framework的编译脚本 就完成了。
运行脚本,会在ncnn源码工程的根目录下生成ncnn.framework。
!!!脚本要修改两个路径哦!!!
-DVulkan_LIBRARY
-DVulkan_INCLUDE_DIR
对应的路径改为你的 vulkansdk 对应的绝对路径
vulkansdk-macos-1.1.106.0 即为 你在3.1节下载的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行代码,头文件包含 直接搞定
云里雾里?直接去第2节下载源码看一看吧。
// 初始化gpu
ncnn::destroy_gpu_instance();
// 设置网络支持vulkan
ncnn_net.use_vulkan_compute = 1;
ncnn原版vulkan开启说明.png
4 结语与展望
至此,我们完成了ncnn 的 vulkan 版本在iOS的集成,虽然现在的优化效果不仅理想。但考虑到vulkan在mac端的支持也才仅仅2、3个月,我们有理由为ncnn vulkan版本之后的优化速度报以信心。
为倪神打Call吧!
mac vulkan_基于 mac 的 ncnn vulkan iOS集成参考相关推荐
- cisco 2960 VLAN MAC_华为网络初级工程师快速掌握基于MAC地址的VLAN划分实用收藏
点上方蓝字关注公众号 学网络,就在IE-LAB 国内最著名的高端网络工程师培养基地 HCIA DATCOM基础入门技术基于MAC地址的VLAN划分 基于mac 地址VLAN划分方式,是一种动态的VLA ...
- 基于Mac自带nginx、php,配置php服务器
这里基于Mac( MacOS 10.14.0 )自带的nginx (1.12.0)和php (PHP 7.1.23),主要有以下几个方面: php-fpm 配置 nginx 配置 php-fpm/ng ...
- 实战 MDT 2012(六)---基于MAC地址的部署
转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jqq1982.blog.51cto.com/515663/1123289 基于MAC地址的部署需要S ...
- mac 下基于firebreath 开发多浏览器支持的浏览器插件
mac 下基于firebreath 开发多浏览器支持的浏览器插件 首先要区分什么是浏览器扩展和浏览器插件;插件可以像本地程序一样做的更多 一. 关于 firebreath http://www.fir ...
- linux构建基于mac的vlan,通过CLI配置交换机的基于MAC的VLAN组
通过CLI配置交换机的基于MAC的VLAN组 Introduction 虚拟局域网逻辑上允许您对网段A区域网(LAN)到不同的广播域.在敏感数据可能是在网络的广播的方案中, VLAN可以通过选定广播创 ...
- vlan划分_基于MAC地址划分VLAN配置示例
1.组网需求 图1 配置基于MAC地址的VLAN划分组网图 如上图1所示,某个公司的网络中,网络管理者将同一部门的员工划分到同一VLAN.为了提高部门内的信息安全,要求只有本部门员工的PC才可以访问公 ...
- 新华三交换机基于MAC的vlan划分
前景提示: 经常会有这样的案例, 一会议室内只有一条网线且这条网线接入了交换机的D1/0/41端口,财务部(vlan10),行政部(vlan20)携带笔记本来开会,我们希望财务部能获取到192.168 ...
- 玩转华为数据中心交换机系列 | 配置基于MAC地址划分VLAN示例
素材来源:华为数据中心交换机配置指南 一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:玩转华为数据中心交换机系列 | 汇总_COCOgsta的博客-CSDN博客 组网需求 某 ...
- 破解路由器基于MAC地址过滤策略的方法
众所周知,路由器可通过设置MAC地址过滤策略来限制上网设备.而MAC地址又是全球唯一的,如笔记本网卡的MAC地址在出厂时就被烧入了一串独一无二的数字(如97-AB-DE-23-45-67),既然MAC ...
- Mac是不是基于Linux系统开发?
程序员在使用中,常常会觉得MacOS和Linux很相似,特别是命令行的操作.所以很多人认为MacOS基于Linux开发的,也许是Linux的一个发行版. 但事实上,目前的MacOS是基于 NeXTst ...
最新文章
- Java中线程池ThreadPoolExecutor原理探究
- python坐标点怎么输入_python导入坐标点的具体操作
- python with方法
- [蓝桥杯][2014年第五届真题]排列序数(思维)
- 公有云与私有云的差别(转)
- IOS 开发 UIProgress 和 UISlidre 进度条和滑动条组件
- p2psearcher2013其中
- python如何画出多个独立的图使用turtle_从选项列表一次绘制多个形状(Python-Turtle图形)?...
- git(2)---git 分布式版本控制系统
- 经典书单 —— 人文社科
- Windows11 配置 java 8.0 环境变量
- 如何用VC 2005打开VC 2008的工程
- Ubuntu 查看分区的磁盘格式
- win7计算机ip地址怎么查,win7电脑的IP地址怎样查看
- miui系统备份恢复失败(一招解决,,无需技术也行)
- CMMI(能力成熟度集成)四个等级
- java丐帮_java多线程学习笔记(四)
- 【计算机网络】思科实验(8):网络地址转换之路由器动态NAT模拟
- 创客学院9天C语言二
- 2021年程序员薪资和生活现状调查,就等你的参与了!