开启NEON优化opencv4:ARM64EC-Windows
无数次的尝试,关闭了许多FEATURE,尝试了无数次的组合,不同的vs studio版本,不同的CMAKE,不同的opencv分支,不同的硬件PC,等等,以上排列组合下。我都是跟ARM64-windows一样的参数了啊,编译环境都一样了啊。哦,居然有人在使用windows-arm64 这个服务器来测试了,而且发现了cross编译的问题了。哦真的有这个patch啊,怀疑居然是windows的sdk的
比较编译log

先看ARM64-windows是如何优化的
从这里看如何ARM64-windows
prepare to build for ARM64 on Windows with Visual Studio · opencv/opencv@b6ec9b9
if(MSVC)
ocv_update(CPU_NEON_DOTPROD_FLAGS_ON "")
ocv_update(CPU_NEON_FP16_FLAGS_ON "")
ocv_update(CPU_NEON_BF16_FLAGS_ON "")
也就是这个feature开启了,目标是对齐他即可。
- NEON:ARM 的 NEON 指令集。
- FP16:16 位浮点数优化。Disable fp16 instructions detection on Windows ARM64 because of build… · klatism/opencv@005db1c 最新有问题,取消了这个提交了?---TODO
- NEON_DOTPROD:NEON 的点积运算优化。
- NEON_FP16:NEON 的 16 位浮点数优化。
- NEON_BF16:NEON 的 Brain Floating Point 16 位优化。--- 可能当前硬件CPU不支持?TODO

从log看工作量和工作流程
这里看
Adding build for ARM64 Windows10 by shibayan · Pull Request #16027 · opencv/opencv
还有113个文件需要修改
搜索”_M_ARM6400”代码有17个文件
https://github.com/search?q=repo%3Aopencv%2Fopencv+_M_ARM64&type=code
类似的头文件和cmakelists.txt文件
如何理解优化看如下文档链接至少3遍
Build options 官方说明
CPU optimizations build options · opencv/opencv Wiki
cpu_dispatch_0_baseline.png (1772×703)

配置编译好了,如何查看
当你设置 OPENCV_DUMP_CONFIG 环境变量为 1 时,OpenCV 会在启动时 dump 编译和版本信息到控制台。这个信息包括:
- OpenCV 版本号
- 编译器版本号
- 编译选项
- 支持的功能和模块
编译还是遇到错误:
__uint64x1_t_to_n64 在ARM64-windows SDK的问题?
哦,居然有人在使用windows-arm64 这个服务器来测试了,而且发现了cross编译的问题了。
哦真的有这个patch啊,怀疑居然是windows的sdk的问题了
这个 opencv-mobile/fix-windows-sdk-26100-arm64-wchar.patch at master · nihui/opencv-mobile
另外的大神是多尝试
(experimental) support _M_ARM64EC for MSVS2022 by Kumataro · Pull Request #27416 · opencv/opencv
# See https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
# See https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/index-legacy
# set(CMAKE_SYSTEM_VERSION 10.0.26100.4188) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.26100.2454) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.26100) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.22621.5040) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.22621.1778) # NG
# set(CMAKE_SYSTEM_VERSION 10.0.22621.755) # NG
set(CMAKE_SYSTEM_VERSION 10.0.22621.0) # OK
可怜的人啊,他尝试了多少次啊?
有人伸出援助之手,
https://github.com/opencv/opencv/pull/27416
我手动合入到4.10从4.11,其实差了一个patch,事后后悔了。
无数次的的更新怀疑自我:
无数次的尝试,关闭了许多FEATURE,尝试了无数次的组合,不同的vs studio版本,不同的CMAKE,不同的opencv分支,不同的硬件PC,等等,以上排列组合下。
cmake -S . -B ARM0611preview_png_libjpegturbo_off -A ARM64 -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_opencv_world=ON -DCMAKE_INSTALL_PREFIX=install -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=ARM64 -DCPU_BASELINE=NEON -DENABLE_FP16=OFF -DENABLE_DOTPROD=OFF -DWITH_OPENEXR=OFF -DBUILD_opencv_dnn=OFF -DBUILD_opencv_world=OFF -DPNG_ARM_NEON=off -DENABLE_LIBJPEG_TURBO_SIMD=OFF
这个终于通过了,而且能执行得到结果了。
直面问题,搜索和询问AI,
我生成了,好像成功了
******************************************************************
* FATAL ERROR: *
* This OpenCV build doesn't support current CPU/HW configuration *
* *
* Use OPENCV_DUMP_CONFIG=1 environment variable for details *
******************************************************************
Required baseline features:
ID=100 (NEON) - NOT AVAILABLE
现实很残酷。
为什么呢?我都是跟ARM64-windows一样的参数了啊,编译环境都一样了啊。还是头文件修改不到位吧,重新上文的流程,从第一步开始。
17个文件就17个吧,一个个细细读下,到底是否加上_M_ARM64EC这个宏。按理解和查询来尝试吧。
哦,最后终于形成了VCPKG的版本,方便发布,测试比以前好了。
满纸荒唐言,一把辛酸泪。
都云作者痴,谁解其中味
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)