OutputLayer的析构方法解读

【大语言模型课程-8】大语言模型中的输出层(Output Layer)部分介绍 1. 分类任务的输出层2. 序列标注任务的输出层3. 生成式任务的输出层4. 其他任务的输出层总结在大语言模型中,输出层(Output Layer)是指模型在完成预训练并进行微调后,用于最终输出预测结果的部分。输出层的具体结构和功能会根据模型所应用的具体任务而有所不同。输出层在大语言模型中起着至关重要的作用,它决定了模型在特定任务上的表现和效果。根据不同的任务类型,输出层的设计可以灵活调整,以最大程度地提升模型的性能和泛化能力。 阅读详情

背景:

分析SurfaceFlinger的合成trace发现如下:
在这里插入图片描述执行collectVisibleLayers时候具体还会触发destroyLayer操作,还是个跨进程的
在这里插入图片描述明显属于在finalizePendingOutputLayers触发的调用

在这里插入图片描述看到了finalizePendingOutputLayers明显好像没啥啊,没看到有调用destroyLayer啊,但是Trace中确实有展示对应destroyLayer,这个是为啥?

通过堆栈追踪:

经过堆栈添加如下:
在这里插入图片描述

1:46.840 12577 12577 D HidlComposer: #00 pc 0000000000133940  /system/bin/surfaceflinger (android::Hwc2::HidlComposer::destroyLayer(unsigned long, unsigned long)+80)
01-11 11:51:46.866 12577 12577 D destroyLayer: #00 pc 0000000000133950  /system/bin/surfaceflinger (android::Hwc2::HidlComposer::destroyLayer(unsigned long, unsigned long)+96)
01-11 11:51:46.866 12577 12577 D destroyLayer: #01 pc 000000000013e89c  /system/bin/surfaceflinger (android::HWC2::impl::Layer::onOwningDisplayDestroyed()+104)
01-11 11:51:46.866 12577 12577 D destroyLayer: #02 pc 0000000000141410  /system/bin/surfaceflinger (android::HWC2::impl::Layer::~Layer()+28)
01-11 11:51:46.866 12577 12577 D destroyLayer: #03 pc 000000000021bcb4  /system/bin/surfaceflinger (android::compositionengine::impl::OutputLayerCompositionState::~OutputLayerCompositionState()+104)
01-11 11:51:46.866 12577 12577 D destroyLayer: #04 pc 000000000021bc14  /system/bin/surfaceflinger (std::__1::unique_ptr<android::compositionengine::impl::OutputLayer, std::__1::default_delete<android::compositionengine::impl::OutputLayer> > android::compositionengine::impl::createOutputLayerTemplated<android::compositionengine::impl::OutputLayer>(android::compositionengine::Output const&, android::sp<android::compositionengine::LayerFE>)::OutputLayer::~OutputLayer()+20)
01-11 11:51:46.866 12577 12577 D destroyLayer: #05 pc 00000000001e8404  /system/bin/surfaceflinger (std::__1::shared_ptr<android::compositionengine::impl::Display> android::compositionengine::impl::createOutputTemplated<android::compositionengine::impl::Display, android::compositionengine::CompositionEngine>(android::compositionengine::CompositionEngine const&)::Output::finalizePendingOutputLayers()+152)
01-11 11:51:46.866 12577 12577 D destroyLayer: #06 pc 00000000001edf24  /system/bin/surfaceflinger (android::compositionengine::impl::Output::collectVisibleLayers(android::compositionengine::CompositionRefreshArgs const&, android::compositionengine::Output::CoverageState&)+188)
01-11 11:51:46.866 12577 12577 D destroyLayer: #07 pc 00000000001edd70  /system/bin/surfaceflinger (android::compositionengine::impl::Output::rebuildLayerStacks(android::compositionengine::CompositionRefreshArgs const&, std::__1::unordered_set<android::sp<android::compositionengine::LayerFE>, android::compositionengine::LayerFESpHash, std::__1::equal_to<android::sp<android::compositionengine::LayerFE> >, std::__1::allocator<android::sp<android::compositionengine::LayerFE> > >&)+276)
01-11 11:51:46.866 12577 12577 D destroyLayer: #08 pc 00000000001ed948  /system/bin/surfaceflinger (android::compositionengine::impl::Output::prepare(android::compositionengine::CompositionRefreshArgs const&, std::__1::unordered_set<android::sp<android::compositionengine::LayerFE>, android::compositionengine::LayerFESpHash, std::__1::equal_to<android::sp<android::compositionengine::LayerFE> >, std::__1::allocator<android::sp<android::compositionengine::LayerFE> > >&)+56)
01-11 11:51:46.866 12577 12577 D destroyLayer: #09 pc 00000000001e5c88  /system/bin/surfaceflinger (android::compositionengine::impl::CompositionEngine::present(android::compositionengine::CompositionRefreshArgs&)+120)
01-11 11:51:46.866 12577 12577 D destroyLayer: #10 pc 00000000001a7828  /system/bin/surfaceflinger (android::SurfaceFlinger::composite(long, long)+1628)
01-11 11:51:46.866 12577 12577 D destroyLayer: #11 pc 0000000000183fb0  /system/bin/surfaceflinger (android::impl::MessageQueue::Handler::handleMessage(android::Message const&)+116)
01-11 11:51:46.866 12577 12577 D destroyLayer: #12 pc 0000000000017500  /system/lib64/libutils.so (android::Looper::pollInner(int)+376)
01-11 11:51:46.866 12577 12577 D destroyLayer: #13 pc 0000000000017328  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
01-11 11:51:46.866 12577 12577 D destroyLayer: #14 pc 000000000018462c  /system/bin/surfaceflinger (android::impl::MessageQueue::waitMessage()+84)
01-11 11:51:46.866 12577 12577 D destroyLayer: #15 pc 000000000018cbec  /system/bin/surfaceflinger (android::scheduler::Scheduler::run()+28)
01-11 11:51:46.866 12577 12577 D destroyLayer: #16 pc 00000000001e5640  /system/bin/surfaceflinger (main+1992)
01-11 11:51:46.866 12577 12577 D destroyLayer: #17 pc 000000000004a1f4  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+96)

堆栈打印出来就很明显啦,那就是在

        mCurrentOutputLayersOrderedByZ = std::move(mPendingOutputLayersOrderedByZ);

赋值时候就会导致mCurrentOutputLayersOrderedByZ析构,从而一系列的析构方法回调

更多framework干货请关注“千里马学框架”

SurfaceFlinger layer之间的对应关系 本文详细分析了SurfaceFligner中Layer流转的过程,以便于了解SurfaceFlinger的合成过程 阅读详情

相关推荐

Android dumpsys SurfaceFlinger分析

对于分析一些显示问题,我们需要使用adb shell dumpsys SurfaceFlinger命令来获取SurfaceFlinger的dump信息,因此这里来详细讲解下SurfaceFlinger的dump信息。 Display identification data: //display信息 Display 19260441557360770 (HWC display 0): port=130 pnpId=QCM displayName="" //19260441557360770是H...

weixin_42256557的博客 1万+

Android下SF合成流程重学习之Refresh流程

至此,SurfaceFlinger刷新的主体函数分析完了,可以看出来,如果是走device合成,SurfaceFlinger是直接把layer信息提交给hwc,由hwc去合成.prepareFrame 的作用是根据hwc的能力选择合成方式,如果是device合成则直接走hwc present上屏,如果是GPU合成后面则走hwc validate,然后根据hwc过来的变化改变layer的合成方式。composeSurface的主要核心逻辑是针对GPU合成,对于device合成,则直接return了。

IT先森 3558

Android 图形架构 之三—— 创建Layer、Surface、SurfaceControl

前言 上一篇我们分析了,app与SurfaceFlinger建立连接的过程,现在我们就可以继续往下分析,看下创建Surface的过程。 我们可以将Surface理解为一个绘图表面,Android应用程序负责往这个绘图表面上填内容,而SurfaceFlinger服务负责将这个绘图表面的内容取出来,并且渲染在显示屏上。 概述 在Android中,Window与Surface一一对应。 如果说Window关心的是层次和布局,是从设计者角度定义的类,Surface则从实现角度出发,是工程师关系和考虑的类。Windo

薛瑄的博客 1万+

Android Graphics模块中的各种State和重要类普法

这个我的理解它主要是Layer的一个前端,主要用来处理Layer合成相关的,!表示一个"前端"Layer,跟Layer相对应,用于处理Layer在合成阶段的工作。机会是每年一个版本,前进的胶布不能停啊,继续干。Display: 表示所有输出层最终对应的显示设备,可以有硬件合成器支持的显示设备,也可以对应虚拟显示设备。这里的Layer.State主要存储了该Layer相关的数据,例如长宽,各种矩阵,阴影等。这里需要注意CompositionState对应的域空间,不要和Layer里面的搞混淆了!

IT先森 1778

MATLAB实现BiLSTM多特征时间序列分类预测实战指南

长短期记忆网络(LSTM)及其双向变体BiLSTM是处理序列数据的核心深度学习模型,其门控机制能有效捕捉长程依赖关系,缓解梯度消失问题。在工程实践中,BiLSTM通过同时利用序列的过去和未来信息,显著提升了多元时间序列分类任务的精度,广泛应用于设备故障诊断、金融预测和生理信号分析等领域。MATLAB深度学习工具箱提供了从数据预处理、网络设计到训练部署的完整解决方案,其集成的Deep Network Designer图形化界面和简洁的API,极大降低了模型开发门槛。本文以轴承故障诊断为具体应用场景,详细拆解了

weixin_34301132的博客 522

最全软考高项工具技术总结(上)

第四版教材把工具和技术分为:数据收集技术、数据分析技术、数据表现技术、决策技术、沟通技巧、人际关系和团队技能、其他。我会按照上面的分类总结说明并标识他们用在哪些过程。小伙伴们可以通读理解做到有印象能选对应付上午选择,选几个深化用在下午论文的举例中。没必要背!

PM喵的窝 2045

【stgcn】代码pytoch解读(三)

stgcn.py 代码结构 图(a)是全体结构:包括两个ST-conv Block+Output Layer

panbaoran913的博客 1858

Pointnet++环境配置+复现

深度学习点云经典网络Pointnet++

weixin_58663121的博客 8075

paper解读:Bi-Directional Attention Flow For Machine Comprehension

基于双向注意力的阅读理解(ICLR2017,引用800多,入门阅读理解可以看这篇) paper: https://arxiv.org/abs/1611.01603 code: https://github.com/allenai/bi-att-flow 模型框架 模型主要框架如下图所示: 包括六个部分: Character Embedding Layer:使用character-level CN...

Flying_sfeng的博客 743

一次渗透测试引发的Json格式下CSRF攻击的探索

一次渗透测试引发的Json格式下CSRF攻击的探索

weixin_52501704的博客 1050

基于RTL8367S与XS2184的工业级POE交换机硬件设计全解析

本文深入解析基于RTL8367S与XS2184芯片的工业级POE交换机硬件设计,涵盖核心价值、芯片选型、原理图设计、PCB布局及可靠性验证等关键环节。重点探讨双芯片协同工作优势,如RTL8367S的自适应调度算法和XS2184的智能功率分配功能,为工业环境下的稳定供电与数据传输提供专业解决方案。

weixin_42614269的博客 458

ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs论文解读

发表时间:2015 论文链接:https://arxiv.org/pdf/1512.05193.pdf 开源代码:https://github.com/galsang/ABCNN (tensorflow) https://github.com/lsrock1/abcnn_pytorch (pytorch) 代码语言:python 适用: Answer Slection(AS) paraphra...

Suan2014的博客 945

Docker 与容器技术的未来:从 OCI 标准到 eBPF 的演进

OCI 的核心目标是创建一个开放的、厂商中立的容器技术标准。这意味着,只要一个容器镜像符合 OCI 镜像格式规范,它就可以在任何符合 OCI 运行时规范的容器运行时上运行。eBPF 是一种革命性的技术,它允许在 Linux 内核中安全地运行沙盒程序,而无需修改内核源代码或加载内核模块。这些程序可以注册到内核中的各种事件点(如网络包到达、系统调用、函数调用/返回),并在事件发生时执行自定义逻辑。核心思想是:在不将数据复制到用户空间的情况下,程序可以直接在内核中处理数据,极大地提高了效率和性能。

专栏 1383

CNN-LSTM混合模型在时序预测中的优化与应用

深度学习中的卷积神经网络(CNN)和长短期记忆网络(LSTM)是处理时空数据的核心架构。CNN擅长提取局部空间特征,而LSTM则能捕捉时间维度的长期依赖关系。通过将两者结合形成的混合模型,在处理电力负荷、金融时序等具有明显周期性的预测任务时,能同时利用微观特征和宏观趋势,预测精度通常比单一模型提升15-30%。最新提出的TTAO优化器通过动态拓扑结构优化,进一步加速了这类高维非凸问题的收敛速度。这种技术组合特别适合需要同时考虑空间特征和时间演变的场景,如智能电网负荷预测、量化金融分析等工程实践。

weixin_30411819的博客 372

RAGFlow 系列教程 第14课:GraphRAG -- 知识图谱增强检索

RAGFlow v0.25.0深度解读了GraphRAG技术,通过构建知识图谱解决传统RAG在多跳推理问题上的局限。系统支持General GraphRAG和Light GraphRAG两种实现,包含四阶段构建流程:实体关系抽取、实体消解、社区检测和图持久化。核心代码位于rag/graphrag目录,采用LLM驱动的抽取机制,结合编辑距离和LLM确认的实体消解策略,以及Leiden社区检测算法。KGSearch模块通过多信号融合检索(实体+关系+N-hop+社区)实现高效查询。该系统将非结构化文本转化为可推

weixin_43674738的博客 101

【华为OD技术面试手撕真题】1、长度最小的子数组 | 手撕真题+思路参考+代码解析(C & C++ & Java & Python & JS)(三种解法)

【华为OD面试手撕真题】长度最小的子数组,本专栏更新每年华为OD机试的高频手撕代码题,每个题目都会使用五种语言进行解答(C & C++& Java & Python & JS),思路分析都非常详细, 实现最低的时间复杂度和高通过率,每个解题思路超过百字,内含各个编程语言的八股文面试题,欢迎大家订阅学习, 代码可以直接运行使用,全网限时最低价,持续更新

KJ.JK 1万+

Android SurfaceFlinger原理详解

转自:http://blog.chinaunix.net/uid-20564848-id-96788.html SurfaceFlinger是Android multimedia的一个部分,在Android 的实现中它是一个service,提供系统范围内的surface composer功能,它能够将各种应用 程序的2D、3D surface进行组合。在具体讲SurfaceFlinger之前,

868

Python之achatbot包语法、参数和实际应用案例

本书是一本PyTorch深度学习实战指南,分为基础(前6章)和进阶(后5章)两大部分。基础部分涵盖张量运算、神经网络、数据预处理及CNN等核心内容;进阶部分则深入图像、文本、音频建模技术,重点解析Transformer架构及大语言模型开发。全书采用"理论+实践"模式,适合从零基础到进阶的PyTorch学习者。

王国平的博客 632

PSO-GRU多变量时序预测:电力负荷预测实战解析

时序预测是工业领域的关键技术,通过分析历史数据中的时间依赖关系预测未来趋势。门控循环单元(GRU)作为LSTM的改进变体,凭借其精简结构和高效记忆机制,在电力负荷、气象预测等场景表现优异。然而神经网络存在超参数敏感问题,粒子群优化(PSO)算法通过模拟群体智能行为,能高效搜索最优参数组合。这种PSO-GRU混合方法特别适合处理多维时间序列数据(如同时考虑温度、湿度等多变量的电力负荷预测),在保持模型精度的同时显著降低调参难度。工程实践中需注意数据归一化、时序特征构建等关键环节,并采用滑动窗口、时延互信息等技

weixin_34337381的博客 404

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Natron Shuffle 节点完全指南:通道重排、图层提取与分量转换(Channel 组核心工具)

Shuffle 是 Natron 节点式合成器中 **Channel(通道)节点组** 的核心工具,用于从一个或两个输入中重排 RGBA 通道、在多个图层(plane)之间搬运数据,或转换输出位深与分量类型。读完本文,你将掌握 Shuffle 全部参数的含义与默认值、通道映射的实际操作手法,以及它在多图层 EXR、多页 PDF、SVG 图层提取和 Matte 转换等真实合成流程中的用法,并能结合

gitblog_00062的博客 379

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android surfaceflinger研究----SurfaceFlinger loop

http://blog.youkuaiyun.com/rufanchen_/article/details/7975334 上一篇文章介绍了整个Surface机制(我是这么称呼的,主要是Surface的建立,Surface的显示存储的管理),同时我们也介绍过了整个显示系统,那么这篇文章就介绍一下SurfaceFlinger 这个核心服务层的机制。     从代码中我们可以看出SurfaceFlinger

入凡尘笔录 580

Android SurfaceFlinger 学习之路(二)----SurfaceFlinger概述

http://windrunnerlihuan.com/2017/04/27/Android-SurfaceFlinger-%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF-%E4%BA%8C-SurfaceFlinger%E6%A6%82%E8%BF%B0/        因为还有很多烦人的事情需要处理,所以暂时没有离职,也挺忙的。最近一段时间稍微轻

STN_LCD的专栏 3145

Android 10 如何在SurfaceFlinger中解决按Power键会从横屏切换到竖屏问题

问题现象:按Power键会从横屏切换到竖屏 一、先横屏再变竖屏的日志分析 1、从如下日志可以看出宽度和高度的分辨率为:w:720, h:1600 10-25 16:20:22.130 1636 1663 D KeyguardViewMediator: notifyStartedGoingToSleep 10-25 16:20:22.135 422 491 D : GBuffer--------------(*format)=1 10-25 16:20:22.135 422

wq892373445的博客 615

Android Graphics图形栈SurfaceFlinger之间各种Layer以及对应Buffer之间的关系

Android Graphics图形栈SurfaceFlinger之间各种Layer以及对应Buffer之间的关系。Android Graphics图形栈SurfaceFlinger之间各种Layer以及对应Buffer之间的关系。

IT先森 1490

Android SurfaceFlinger做Layer合成时,如何与HAL层进行交互

SurfaceFlinger、Layer、HWC、OpenGL ES、Buffer 显示逻辑,调用逻辑

【全部原创,全部干货】【Android、车载MCU、AIGC】 2653
上一篇: SurfaceFlinger的commit/handleTransaction分析
下一篇: HAL/SurfaceFlinger专题之HWC和GPU合成部分更新通知
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值