对caffe2的一些初步体会(草稿)

2023-11-04

Caffe2的一些关键设计思想:

  • 所有运算都抽象为Operator。
  • Blob和Tensor的概念。
  • Blob和Net都存放在Workspace中,一个Workspace中可以有多个Net,这些Net中使用到的相同名称的Blob实际对应于这个Workspace中的同一个Blob。
  • 将Net转化为DAG运算图,从而多线程实现并行运算。
  • 每个Operator绑定在一个Context上,这个Operator创建的Tensor分配的内存都在这个Context上。
  • Net,Blob,Tensor不具体绑定Context,与Context的绑定只在Operator上实现。
  • Memonger分析Blob重用,节约内存。


具体代码分析

caffe2/core


typeid.h, typeid.cc, types.h, types.cc

CaffeTypeId

TypeNameRegisterer, UninitializedTypeNameRegisterer

TypeMeta: PlacementNew, TypedCopy, TypedDestructor

CAFFE_KNOWN_TYPE

StorageOrder


allocator.h,allocator.cc

Allocator:CPUAllocator,MemoryDeleter,MemoryAllocationReporter,DefaultCPUAllocator,


blob.h, blob_serializer_base.h, blob_serialization.h, blob_serialization.cc, blob_serialization_gpu.cc

Blob, 

BlobSerializerBase, TensorSerializer

BlobDeserializerBase, TensorDeserializer,

BlobStatGetter, BlobStatRegistry


common.h, common.cc, common_gpu.h, common_gpu.cc, common_omp.h

TIndex, CaffeMap, 

DeviceGuard


common_cudnn.h, common_cudnn.cc, cudnn_wrappers.h

cudnnTypeWrapper, 

cudnnTensorDescWrapper, cudnnFilterDescWrapper, 

CuDNNWrapper, CuDNNWorkspace, CuDNNState, 


context.h, context_gpu.h, context_gpu.cu

CPUContext, 

CudaMemoryPoolType, ThreadLocalCUDAObjects, CUDAContext

PinnedCPUAllocator

TensorCUDA

Caffe2CudaInitializerHelper


db.h, db.cc

Cursor,Transaction,DB,DBReader,


event.h, event.cc, event_gpu.cc

Event

EventCreateFunction, EventRecordFunction, EventWaitFunction, EventFinishFunction

EventCreateFunctionRegisterer, EventRecordFunctionRegisterer, EventWaitFunctionRegisterer, EventFinishFunctionRegisterer

REGISTER_EVENT_CREATE_FUNCTION, REGISTER_EVENT_RECORD_FUNCTION, REGISTER_EVENT_WAIT_FUNCTION, REGISTER_EVENT_FINISH_FUNCTION

CudaEventWrapper


flags.h, flags.cc


graph.h, graph.cc, transform.h, transform.cc

Node, Graph, 

Transform


init.h, init.cc, init_omp.cc

Caffe2InitializeRegistry, InitRegisterer

REGISTER_CAFFE2_INIT_FUNCTION, REGISTER_CAFFE2_EARLY_INIT_FUNCTION


logging.h, logging.cc, logging_is_google_glog.h, logging_is_not_google_glog.h


macros.h, macros.h.in


memonger.h, memonger.cc

optimize_inference_net

compute_blob_recycling_for_dag


module.h, module.cc

ModuleSchema


net.h, net.cc, 

net_simple.h, net_simple.cc, net_simple_async.h, net_simple_async.cc, 

net_dag.h, net_dag.cc, net_async_dag_gpu.h, net_async_dag_gpu.cc

NetBase, SimpleNet, AsyncSimpleNet, 

OperatorNode, OpGraphNode, 

DAGNetBase, DAGNet, AsyncDAGNet


observer.h

ObserverBase, Observable


operator.h, operator.cc, operator_schema.h, operator_schema.cc, operator_gradient.h

OperatorBase, Operator, 

CPUOperatorRegistry, CUDAOperatorRegistry, GradientRegistry, 

GradientWrapper, GradientOpsMeta, GradientMakerBase, NoGradient, 

OpSchema, OpSchemaRegistry


plan_executor.h, plan_executor.cc


predictor.h, predictor.cc


tensor.h, tensor.cc, qtensor.h, qtensor.cc, qtensor_serialization.h, qtensor_serialization.cc

Tensor, TensorCPU, TensorPrinter, TensorCPUStatGetter

QTensor


registry.h

Registry, Registerer


scope_guard.h


static_tracepoint.h, static_tracepoint.elfx86.h


stats.h, stats.cc


timer.h

Timer


workspace.h, workspace.cc

StopOnSignal, Workspace



cudnnTypeWrapper, 

cudnnTensorDescWrapper, cudnnFilterDescWrapper, 

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

对caffe2的一些初步体会(草稿) 的相关文章

  • 步骤教学 :安装下载Oracle VM VirtualBox + 安装win7 win10镜像文件

    网上一大堆资料 发现搜不到安装镜像文件的步骤 在自己捣鼓完了之后 决定自己写一篇 1 官网下载Oracle VM VirtualBox Downloads Oracle VM VirtualBox 2 安装好Oracle VM Virtua
  • 更改ElementUI默认样式的方法

    1 添加没有scoped的样式 页面中可以有多个 2 有scoped css原生写法 用 gt gt gt gt gt gt 前面可以是父元素或祖先元素 3 项目中用到了scss sass less 都可以使用 deep
  • TCP连接的建立与释放

    一 TCP连接的建立 1 先搭建一个合适的拓扑建立连接 这是一个已经连接好的拓扑 2 PC1 客户端 发送请求建立TCP的请求报文 图为客户端发送的TCP连接建立请求报文 此时的SEQUENCE NUMBER和ACK NUMBER的值均为0
  • 初识服务发现及Consul框架的简单使用

    1 什么是服务发现 服务发现组件记录了 大规模 分布式系统中所有服务的信息 人们或者其它服务可以据此找到这些服务 DNS 就是一个简单的例子 当然 复杂系统的服务发现组件要提供更多的功能 例如 服务元数据存储 健康监控 多种查询和实时更新等
  • 调研:暴恐识别(图像识别)by_xxzcc

    调研 暴恐识别 一 方法 分类 目标检测 人体姿态分析 1 腾讯优图 接口 https ai qq com doc imageterrorism shtml 图片分类 属性 13类 terrorists 恐怖分子 normalarmy 普通
  • 十大排序算法-桶排序(c语言实现)

    1 原理 桶排序 Bucket sort 或所谓的箱排序 是一种分块的排序算法 工作的原理是将数组分到有限数量的桶里 每个桶的大小都相等 每个桶再个别排序 有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序 把待排序序列 数组 中
  • SQL注入原理-万能密码注入

    一 学习目的 1 理解 万能密码 原理 2 学习 万能密码 的使用 二 实验环境 本机 192 168 1 2 目标机 192 168 1 3 三 举例说明 1 输入一个存在漏洞的网站 例如 http 192 168 1 3 8009 2
  • 浏览器无痕模式有什么作用,手机浏览器开启无痕模式的方法

    在我们的手机基本上都安装了浏览器 当我们在上网过程中 不想浏览记录被留下 那么开启无痕模式是非常有必要的 那么 浏览器的无痕模式有什么作用 手机浏览器如何开启无痕模式呢 下面教大家如何在手机浏览器中开启无痕模式 赶紧学一学吧 关键时刻能用上
  • 机械臂正运动学标准DH参数建立技巧

    1 切记 i 坐标系建立在i 1关节轴上 如 0 坐标系建立在关节1轴上 依次类推 6 坐标系与 5 坐标系姿态一致 固连在法兰盘接口末端 2 坐标系原点建立 若1 2轴垂直或异面垂直 则坐标系 1 原点在1轴与2轴的交点 0 坐标系原点建
  • 2.2.1 数据通信系统的模型

    一个数据通信系统分为三大部分 1 源系统 或发送端 发送方 2 传输系统 或传输网络 3 目的系统 或接收端 接收方 数据通信系统模型如下 上图中调制解调器有2个功能 1 调制 将计算机发出的低频 数字信号 转换成传输媒介可以传输的 模拟信
  • fetch中断请求, 和再次恢复使用

    业务场景 当时用fetch 建立长连接请求 在不使用时需要将其断掉 以缓解带宽压力和浏览器运行压力 等再次需要建立长链接时 再次启用 1 外层定义controller 一旦中止 AbortController就会被消耗 每次调用都必须创建新
  • Python基础学习-简要记录

    目录 快捷键 基础 1 字符串 2 变量 3 序列 4 列表 5 元组 6 字典 7 集合 8 time 模块 9 datetime 模块 date time datetime 类 10 calendar 模块 Calendar 类 Tex
  • 在1行上输入5个数字,数字之间用英文半角逗号分隔。输出其中最小的数字。 结果保留2位小数。

    题目描述 在1行上输入5个数字 数字之间用英文半角逗号分隔 输出其中最小的数字 结果保留2位小数 输入 6 4 5 2 3 输出 2 00 样例输入 Copy 12 22 2 32 42 样例输出 Copy 2 00 a map eval
  • undo表空间故障恢复

    time 2008 04 15author skate 参考文档 http blog chinaunix net u 7667 showart 163271 html undo表空间故障恢复 ORA 00376 file 2 cannot
  • mysql查询排名前5的语句_MySQL语句实现排名

    首先我们创建一张city popularity表 CREATE TABLEcity popularity regionint 10 NOT NULL COMMENT 1 国内 2 海外 city nameVARCHAR 64 NOT NUL

随机推荐

  • Vue.js全家桶仿哔哩哔哩动画 (移动端APP)

    项目地址 由于项目是移动端 电脑访问时可以切换成手机端 播放页面其实没有根据B站移动端来 比较粗糙 源码地址 欢迎Star 在线预览 项目描述 前端部分 实现的Swiper Toast Indicator组件 来自Mint ui 使用了Vu
  • 【HDFS】EditLogTailer功能及原理(二)-- selectInputStreams细节详解

    HDFS EditLogTailer功能及原理 一 整体流程 HDFS EditLogTailer功能及原理 二 selectInputStreams细节详解 HDFS EditLogTailer功能及原理 三 loadEdits方法细节详
  • Javascript变量提升预解析的理解

    预解析 JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的 JavaScript解析器执行JavaScript代码的时候 分为两个过程 预解析过程和代码执行过程 预解析过程 把变量的声明提升到当前作用域的最前面
  • 使用python的pandas库把.data文件转化为csv文件

    1 问题引入 在数据分析 机器学习 深度学习中 我们经常会处理各种各样格式的数据 今天 博主在做房价预测时 采用波士顿房价数据集 从网上下载的数据集格式为 data 并不是我们喜闻乐见的csv格式 所以想采用pandas库将其转为为csv格
  • 【Redis】Redis 的学习教程(十)之使用 Redis 实现消息队列

    消息队列需要满足的要求 顺序一致 要保证消息发送的顺序和消费的顺序是一致的 不一致的话可能会导致业务上的错误 消息确认机制 对于一个已经被消费的消息 已经收到ACK 不能再次被消费 消息持久化 要具有持久化的能力 避免消息丢失 这样当消费者
  • linux怎么将磁盘剩余空间给分区,利用fdisk将硬盘剩余空间进行分区

    1 首先查看分区 发现300多G的硬盘 dev sdc1只使用了200多G而已 root local103 dbbackup df h Filesystem Size Used Avail Use Mounted on dev sda2 1
  • [黑科技] 使用Word和Excel自制题库自判断答题系统

    这篇文章是LZY老师告诉我的一个方法 如果你需要做题库 并且喜欢电子答题的方法 这篇文章或许会对你有所帮助 反正李老师班级的平均成绩高出其他班级的14分 这就是它的好处 希望这篇文章对我今后的学生有所帮助吧 注意 这篇文章涉及到Word特殊
  • 详解分布式共识(一致性)算法Raft

    分布式共识及Raft简介 所谓分布式共识 consensus 与CAP理论中的一致性 consistency 其实是异曲同工 就是在分布式系统中 所有节点对同一份数据的认知能够达成一致 保证集群共识的算法就叫共识算法 它与一致性协议这个词也
  • PyTorch 更改训练好的模型 继续训练

    目录 直接加载预训练模型 加载部分预训练模型 冻结部分参数 训练另一部分参数 微改基础模型预训练 微改基础模型 简单预训练 直接加载预训练模型 如果我们使用的模型和原模型完全一样 那么我们可以直接加载别人训练好的模型 my resnet M
  • SHADER学习笔记(一):Surface Shader

    Surface Shader是Unity为了方便shader编写提供的特殊功能 它对底层的vertex fragment shader做了封装 省去了一些重复代码编写的工作量 我的理解是它同时具有vertex fragment shader
  • [CISCN 2022 初赛]login_normal

    叠甲 菜 很菜 就是懂一点但是不多 可能涉及的错误会很多 有错误欢迎指出 同时对于这个疑问有解答的也欢迎留言 总之就是很菜 QAQ 这一道题 首先要考代码审计 来猜它这个 login 的格式 然后在通过它的 login 之后 通过传入可见字
  • 【Android】ViewModel原理分析

    概述 本文主要通过分析ViewModel源码解决以下两个疑问 1 ViewModel如何保证的唯一性 2 ViewModel如何保证数据不丢失的 为了解决这些问题 从ViewModel的构造开始 一般创建ViewModel的方法如下 Vie
  • 《消息队列高手课》内存管理:如何避免内存溢出和频繁的垃圾回收?

    不知道你有没有发现 在高并发 高吞吐量的极限情况下 简单的事情就会变得没有那么简单了 一个业务逻辑非常简单的微服务 日常情况下都能稳定运行 为什么一到大促就卡死甚至进程挂掉 再比如 一个做数据汇总的应用 按照小时 天这样的粒度进行数据汇总都
  • SQL Server用户登录失败

    SQL Server数据库中 如果我们忘记了 sa密码 又删除了jhyf kj administrators帐号 我们可以用下面的方法来修复 1 首先停止所有与SQLServer相关的服务 net stop SQL Server Integ
  • Spring Boot全面总结(超详细,建议收藏)

    前言 本文非常长 建议先mark后看 也许是最后一次写这么长的文章 说明 前面有4个小节关于Spring的基础知识 分别是 IOC容器 JavaConfig 事件监听 SpringFactoriesLoader详解 它们占据了本文的大部分内
  • 2021极客大挑战web部分wp

    Dark 看到url http c6h35nlkeoew5vzcpsacsidbip2ezotsnj6sywn7znkdtrbsqkexa7yd onion 发现后缀为 onion 为洋葱 下载后使用洋葱游览器访问 Welcome2021
  • git学习:github上传自己的代码到别人的仓库

    转载 原博客链接 总结 向别人贡献自己的代码 和传到自己仓库的区别 要先fork转化 clone仓库文件到电脑本地 然后进入文件夹 若想提交到非默认分支 要先git checkout到分支 pull分支下的最新代码 若还想创建新分支 用gi
  • 入門篇-耦合Coupling AC/DC/GND差別在哪

    摘自 https www strongpilab com p 156 示波器操作 入門篇 耦合Coupling AC DC GND差別在哪 2016 06 26 儀器 Instrument 示波器 Scope 0 示波器的Vertical選
  • Crested Ibis vs Monster——AT动态规划思想

    题目描述 Ibis is fighting with a monster The health of the monster is H Ibis can cast N kinds of spells Casting the i th spe
  • 对caffe2的一些初步体会(草稿)

    Caffe2的一些关键设计思想 所有运算都抽象为Operator Blob和Tensor的概念 Blob和Net都存放在Workspace中 一个Workspace中可以有多个Net 这些Net中使用到的相同名称的Blob实际对应于这个Wo