ncnn op forward代码学习

2023-05-16

OpenMP支持的编程语言:C、C++和Fortran;支持OpenMp的编译器包括Visual studio,Sun Compiler,GNU Compiler和Intel Compiler, Clang。具体见:https://www.openmp.org/resources/openmp-compilers-tools/

OpenMP功能中最强大的一个功能:在串行程序的源码基础上,只要进行少量的改动,就可以并行化许多串行的for循环,达到明显提高性能的效果。

 

 

1. AbsVal: 有两种接口,forward和forward_inplace, 区别就是inplace操作原地替换,不会额外申请新内存空间,具体操作时,在channel维度做pragma omp parallel for并行加速,若bottom value为正,则top value = bottom value,否则取反。

2. ArgMax: 存在两种输出方式,1). 仅输出max index  2). 输出max index的同时,也会输出该index对应的val。具体使用哪种输出方式,通过load_param(FILE*  paramfp)接口中载入的out_max_val参数来决定,若out_max_val为真,则为2)方式输出,输出时前topk的值为max index, 后topk个值为max val;否则为方式1输出。

int nscan = fscanf(paramfp, "%d %d", &out_max_val, &topk);

值得一提的是内部针对topk的排序,ncnn接口中使用的std::partial_sort接口。

std::partial_sort(vec.begin(), vec.begin() + topk, vec.end(), std::greater< std::pair<float, int> >());

3. BatchNorm: BatchNorm也有两种接口,forward和forward_inplace, 不做过多赘述。核心优化还是在于初始化时算好了全部的预置计算,在实际forward时降低计算量。

#pragma omp parallel for

for(int q = 0; q < channels; q++){

const float* ptr = bottom_blob.channel(q);

float* outptr = top_blob.channel(q);

float a = a_data_ptr[q];

float b = b_data_ptr[q];

for(int i=0; i<size; i++){

outptr[i] = b*ptr[i] + a;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ncnn op forward代码学习 的相关文章

随机推荐

  • eclipse 中 中文字符变小的解决方法

    前言 xff1a 装了新版的eclipse后发现 英文代码部分正常 xff0c 但是但凡有中文的地方中文字符变小了 xff0c 若调整字体大小 xff0c 英文就更大了 xff0c 总归中英文大小不一致 推荐解决方法 xff1a 打开 ec
  • LINUX/AIX下文本DOS格式与UNIX格式互转

    LINUX AIX下文本DOS格式与UNIX格式互转 一 文本换行符简介 n 换行 newline LF LineFeed 0x0D r 回车 return CR CarrageReturn 0x0A windows dos r n uni
  • STM32F103用hal库使用DMA+串口空闲中断接收数据

    简介 xff1a 出现空闲标志时 xff0c 认为一帧报文发送完毕 xff0c 进行报文分析 xff0c 比普通的串口中断效率高很多 xff01 用到的工具 xff1a CubeMX xff0c Keil5 芯片 xff1a STM32F1
  • AIX页面空间管理

    一 页面空间相关概念及设计规则 系统中的物理内存是非常有限的 xff0c 因此大多数OS都采用了虚拟内存技术 在AIX系统中也使用分页的存储方式管理存储器 xff0c 并将虚拟内存称为页面空间 Paging space 页面空间 xff1a
  • C/C++中的double类型四舍五入

    一 前言 最近 xff0c 项目中需要对金额进行四舍五入运算 本身系统中全部使用长整型 long or long long xff0c 数据库中使用decimal xff0c 从而防止double类型的精度缺失情况以及数据库中小数点后几位的
  • CAS实现SSO单点登录-CAS Server搭建

    最近公司连续接了三四个单点登录集成的项目 xff0c 由我们公司提供CAS Server端的 xff0c 也有需要我们把Client与其他公司提供的Server端对接的 xff0c 我负责把我们公司的一个Client与另外一个公司提供的Se
  • 从高考到程序员:我的程序探险之旅

    就在今天下午 xff0c 湖南省教育考试院公布了 2017 年湖南省普通高等学校招生全国统一考试的卷面成绩 xff0c 我的微信也瞬间被各种分段统计表和喜报刷屏 xff0c 每年的这个时候总是几家欢喜几家愁 六年前的 6 月 25 日 xf
  • MatconvNet+VS2015+Matlab2018a+CUDA9+cudnn7:在matlab上搞深度学习,安装环境时遇到的大坑!

    事情发生的背景 作为刚入职的深度学习实习生 xff0c 入职第一天 xff0c 我领完电脑 xff0c 刚装完电脑 xff0c 分配好公司的ip xff0c 连chrome都还没来得及安装 xff0c 就接到任务 xff0c 需要实现给定的
  • CAS学习(一) 编译支持REST认证的cas6.2服务端并配置部署测试

    CAS 是 Yale 大学发起的一个开源项目 xff0c 旨在为 Web 应用系统提供一种可靠的单点登录方法 xff0c CAS 在 2004 年 12 月正式成为 JA SIG 的一个项目 CAS 具有以下特点 xff1a 1 开源的企业
  • QEMU

    QEMU 1 使用QEMU创建虚拟机 一 QEMU简介 QEMU是一款开源的模拟器及虚拟机监管器 Virtual Machine Monitor VMM QEMU主要提供两种功能给用户使用 一是作为用户态模拟器 xff0c 利用动态代码翻译
  • 使用virt-install手动创建qcow2镜像并安装ISO

    virt install是一个使用libvirt库构建新虚拟机的命令行工具 xff0c 此工具使用串行控制台 xff0c SDL xff08 Simple DirectMedia Layer xff09 图形或者VNC客户端 服务器 xff
  • OVN总结

    参考 xff1a https www sdnlab com 18600 html 三 OVN L3 对比 Neutron L3 Neutron 的三层功能主要有路由 xff0c SNAT 和 Floating IP xff08 也叫 DNA
  • Keil MDK5 打开MDK4项目

    安装完最新版本keil 5 38a 后 xff0c 需要打开几个MDK4的项目 xff0c 结果一打开keil就提示报错了 这里我选择的是第二种方式 xff0c 首先安装legacy support xff0c 以下是下载链接 MDK v4
  • ubuntu18.04换源及E: 仓库 “http://ppa.launchpad.net/v-launchpad-jochen-sprickerhof-de/pcl/ubuntu bionic Re

    ubuntu18 04换源E 仓库 http ppa launchpad net v launchpad jochen sprickerhof de pcl ubuntu bionic Re问题 1 备份2 修改源3 更新4 解决E 仓库
  • 图像分割2020总结:结构,损失函数,数据集和框架

    点击上方 AI公园 xff0c 关注公众号 xff0c 选择加 星标 或 置顶 作者 xff1a Derrick Mwiti 编译 xff1a ronghuaiyang 导读 一个很好的入门小短文 xff0c 内容很全 xff0c 适合上手
  • 从APM源码分析GPS、气压计惯导融合

    最近事多 xff0c 忙着开源自研飞控 xff0c 现主要工作基本已经完成 xff0c 代码最迟下月中旬开放 xff0c 博客来不及更新 xff0c 还请各位见谅 xff0c 后面会抽空多更的咯 xff01 xff01 xff01 自研飞控
  • 通达OA应用中心操作手册

    第1章应用中心功能介绍 1 1 功能介绍 应用中心是一款以企事业单位广为使用的表单为对象 业务为驱 动 决策为目标 xff0c 以 34 平台 34 43 34 实施 34 的方式 xff0c 进而帮助企事业单位实 现各类管理信息系统的软件
  • 通达OA使用手册(一)

    第一章引言 1 1 编写目的 本用户使用手册目的是将通达 OA 系统的各类操作和功能加以描述 xff0c 以指导 用户更快速正确的使用本系统 该手册分为以下几个部分 xff1a 引言 功能介绍 管 理员手册 用户手册 OA 精灵使用手册和移
  • 通达OA系统管理员操作手册

    3 4 系统管理 安装 OA 后 xff0c 进入 系统管理 菜单 xff0c 对软件功能进行初始化设置 xff0c 以下篇幅主要介绍这个菜单中各个子菜单的作用及使用 3 4 1 功能管理中心 功能管理中心是针对某模块进行权限设置的功能 例
  • ncnn op forward代码学习

    OpenMP支持的编程语言 C C 43 43 和Fortran xff1b 支持OpenMp的编译器包括Visual studio xff0c Sun Compiler xff0c GNU Compiler和Intel Compiler