rk3399+ubuntu:基于深度学习框架ncnn对比clang和gcc性能

本文介绍如何使用Clang编译NCNN框架,并详细解释了配置过程和编译指令。通过修改toolchains文件,设置CMake参数,最终在aarch64平台上成功编译。实测表明,Clang编译的NCNN在不同核心上展现出优越的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装clang

apt-get install clang

编译方式

修改toolchains/aarch64-linux-gnu.toolchain.cmake,内容如下:

# set cross-compiled system type, it's better not use the type which cmake cannot recognized.
SET ( CMAKE_SYSTEM_NAME Linux )
SET ( CMAKE_SYSTEM_PROCESSOR aarch64 )

# 注意这里的编译器改为clang
SET ( CMAKE_C_COMPILER "clang" )
SET ( CMAKE_CXX_COMPILER "clang++" )

# set searching rules for cross-compiler
SET ( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
SET ( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
SET ( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )

# set ${CMAKE_C_FLAGS} and ${CMAKE_CXX_FLAGS}flag for cross-compiled process
SET ( CMAKE_CXX_FLAGS "-std=c++11 -march=armv8-a -fopenmp ${CMAKE_CXX_FLAGS}" )

# other settings
add_definitions(-D__ARM_NEON)
add_definitions(-D__ANDROID__)
SET ( ANDROID true)

然后:

cd $(ncnn root)
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu-clang.toolchain.cmake ../
make -j6

编译完毕,把(ncnnroot)/build/benchmark/benchmark复制到(ncnn root)/build/benchmark/benchmark复制到(ncnnroot)/build/benchmark/benchmark(ncnn root)/benchmark/目录下

简单性能测试

clang编译的ncnn在小核和大核上都有肉眼可见的优势。特别是小核上,能优化的和大核差不多。大核上优化空间反而比较小。这点很神奇。

个别模型clang上会差一点。

综合来说,用clang不亏。

树莓派的性能在这里基本不能看了。
在这里插入图片描述
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值