使用ncnn的benchmark来测试模型每层结构的推理耗时

2024-04-12 18:28

本文主要是介绍使用ncnn的benchmark来测试模型每层结构的推理耗时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、编译protobuf-3.21.12

链接:Release Protocol Buffers v21.12 · protocolbuffers/protobuf · GitHub

下载并解压,然后执行以下指令,

cd <protobuf-root-dir>mkdir build_vs2017_x86
cd build_vs2017_x86## 假设编译的是32位的库
cmake -A Win32 -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmakecmake --build . --config Release -j 8cmake --build . --config Release --target install

二、编译ncnn-20240102

链接:Release android ios macos linux windows webassembly 预编译库 20240102 1e88fb8 · Tencent/ncnn · GitHub

下载并解压,然后执行以下指令,

cd <ncnn-root-dir>mkdir build_vs2017_x86
cd build_vs2017_x86## 需要将NCNN_BENCHMARK设为ON, 否则不会打印网络中每层结构的推理耗时
cmake -A Win32 -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_DIR=<protobuf-root-dir>/build_vs2017_x86/install/cmake -DNCNN_VULKAN=OFF -DNCNN_AVX2=OFF -DNCNN_AVX=OFF -DNCNN_BUILD_TESTS=OFF -DNCNN_OPENMP=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_SSE2=OFF -DNCNN_BENCHMARK=ON..cmake --build . --config Release -j 8cmake --build . --config Release --target install

三、使用benchncnn.exe测试网络中每层结构的推理耗时

随后,在build_vs2017_x86目录下,会有benchmark文件夹,(下图仅作参考)

进入benchmark/Release,会有一个编译好的可执行文件:benchncnn.exe

ncnn-20240102/benchmark中的param文件(如,alexnet.param)复制到ncnn-20240102/build_vs2017_x86/benchmark/Release中,

做完以上操作后,便可测试alexnet每层结构的耗时,

## loop_count = 1
## num_threads = 1
## powersave = 2
## gpu_device = -1
## cooling_down = 1benchncnn.exe 1 1 2 -1 1 param=alexnet.param shape=[227,227,3]

这篇关于使用ncnn的benchmark来测试模型每层结构的推理耗时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/897898

相关文章

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Kotlin 枚举类使用举例

《Kotlin枚举类使用举例》枚举类(EnumClasses)是Kotlin中用于定义固定集合值的特殊类,它表示一组命名的常量,每个枚举常量都是该类的单例实例,接下来通过本文给大家介绍Kotl... 目录一、编程枚举类核心概念二、基础语法与特性1. 基本定义2. 带参数的枚举3. 实现接口4. 内置属性三、

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看