自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Godot4.x的整体架构图解析-源码阅读

Godot引擎核心架构解析 本文通过分析Godot 4.4.1源码,重点探讨了引擎的核心架构设计。文章首先指出官方架构图中关系表达不清晰的问题,进而绘制了UML类图来明确类之间的关系。特别分析了Variant与Object的关联实现,揭示了Variant作为通用数据容器如何通过内部ObjData结构持有Object引用。此外,以Sprite2D模块为例,详细说明了Scene模块与RenderingServer的依赖关系,展示了从纹理设置到最终渲染的完整调用链路。这些分析为深入理解Godot引擎的底层机制提供

2025-10-21 18:08:22 709

原创 C/C++程序员如何理解Godot的场景式游戏开发逻辑的?

本文从C++程序员视角出发,对比了传统串行编程与Godot场景式游戏开发的差异。通过一个简单游戏案例,展示了两种实现方式的区别: 传统串行编程采用类继承结构,通过main循环驱动游戏逻辑 Godot采用场景树设计: 使用.tscn文件定义游戏对象及其组件关系 通过GDScript实现行为逻辑 采用信号机制进行对象间通信 内置_process等生命周期函数替代显式循环 文中通过玩家角色实现细节,帮助理解Godot的组件化设计理念,为从面向对象思维转向场景树思维提供了具体示例。

2025-10-15 18:09:32 1126

原创 游戏编程模式-享元模式(Flyweight)

由浅到深说明Flyweight,增加opengl实践说明

2025-10-11 17:49:14 872

原创 游戏编程模式-命令模式(Command)

文章摘要: 命令模式是一种将方法调用封装为对象的编程模式,它可以实现输入配置、撤销操作等功能。文章首先批评了GoF对命令模式晦涩的定义,提出更直观的理解方式——命令模式是"具体化的方法调用"。随后通过游戏输入处理的例子,展示了如何使用命令模式实现可配置的按键映射。进一步地,文章介绍了如何引入角色参数使命令更灵活,并讨论了命令序列化在网络游戏中的应用。最后,重点阐述了如何利用命令模式实现撤销和恢复功能,通过保存命令历史记录来实现状态回滚。

2025-10-09 17:42:01 1207

原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(4)

结束了,已经搞定了onnx官方的简化库的基本细节了。后面再续其他有趣的东东。

2024-01-12 16:31:48 2438 2

原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(3)

补充说明Pass。基本上目前所有的Pass已经被罗列出来了,后续会用实际的效果去加深大家的印象。

2024-01-12 16:00:28 1723

原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(2)

上述的Pass只是其中的一小部分,还有将近二十来个Pass没有说明清楚,因此这个留到后续的文章继续说明。

2023-12-18 16:27:25 1324

原创 [Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(1)

这次主要是介绍了OnnxSimplifier简化原理,重点介绍了FoldConstant功能和FixedPointFn迭代优化函数,这是该简化包的核心部分了。但是对于其他的OptimizeFixed,也就是OnnxOptimizer函数库的内部简化细节却没有具体的说明。后续将会具体介绍OnnxOptimizer的模型优化细节。

2023-12-18 16:04:33 2514

原创 Disasm 示例程序改写和适配

最近在看这本书籍,在第一张的简介中我们可以看到ProViem这个反汇编开源工具的内容,内部介绍了反汇编的基本原理,我们可以看到详细的开源代码。但是从网址下载后的代码无法直接使用VS2019或者是GNUC工具进行编译构建

2023-11-23 17:44:32 496

原创 [PTQ]均匀量化和非均匀量化

下图表示三种量化方式的x-fakequant_y的映射关系。数据分布在[0.0, 1.0]之间,全覆盖。python代码实现如下所示。python代码实现如下所示。python代码实现如下所示。

2023-11-23 17:40:48 2233 2

原创 【PTQ】Cross-Layer Equalization跨层均衡-证明和实践详细解读

PTQ、DFQ、Cross-Layer Equalization跨层均衡-原理解读和证明以及实验

2023-11-14 16:34:51 1512 2

原创 [深度学习主流框架解析一] Onnx

Onnx同样也是采用了Protobuf协议进行模型文件的整体构建,与Caffe相比,Onnx使用了多proto文件描述模型。因此,解析Onnx模型文件需要了解多个proto文件之间的关联。proto文件之间的依赖关系如下所示:fill:#333;color:#333;color:#333;fill:none;

2022-10-17 16:48:28 1109

原创 [深度学习主流框架解析一] Caffe

重点解析caffe.proto模型文件中的内容,整体的模型文件可见下图。模型结构相关特性:特点总结:运用到的数学原理是《求导的链式法则》,相关表达式如下所示:δyδz=δyδx∗δxδz\frac{\delta y}{\delta z} = \frac{\delta y}{\delta x} * \frac{\delta x}{\delta z}δzδy​=δxδy​∗δzδx​下面以caffe中的sigmoid算子进行说明caffe内部的反向传播过程是如何的。sigmoid是激活函数,具体的数学公式如下所

2022-10-14 17:05:27 2048

原创 【网络通信四】ping工具源码cmake工程编译以及运行说明

代码】【网络通信四】ping工具源码cmake工程编译以及运行说明。

2022-08-09 16:47:55 611

原创 【渣渣彭-错误记录】专门记录本人的撒币问题

后续将会把困扰自己的问题和一些注意点统统放在上面,就算是给自己当做笔记了。

2022-08-05 16:31:03 1735

原创 【网络通信三】研华网关Modbus服务设置

最近在使用研华网关进行Modbus的通信试验,试图跟之前研究的Modbus通信库进行相互通信。企图互通两者的通信,熟悉AdvantechEdgeLinkStudio的使用等目的。ModbusTcpSocket阻塞和非阻塞IPv4和IPv6区别使用到的相关软件和工具。...

2022-07-28 17:05:03 6629

原创 Halide::Generator生成器使用说明

本次的主要工作就是尝试了HalideGenerator生成器去进行核函数生成以及如何使用不同后端的试验。多计算图调度gpu约束输入输出定义信息自动调度操作生成器调用示例。

2022-07-22 20:00:00 883 7

原创 【网络通信二】TCP参考模型

最近在搞网络编程方面的工作,先前有去了解socket通信,进行了示例的学习。所以又有幸去重温一下网络模型。以现在的知识储备去进行重新学习,发现比之前的理解好了不少。至少比那个差不多要挂科的从前的自己强了不少。哈哈哈,我们直接进入正题。如下所示表示的是TCP/IP模型中如何封装一个数据,也就是报文的产生的过程是如何的。网络模型的基本的模型是OSI参考模型,其被分成7层。...

2022-07-18 19:16:35 608

原创 为Halide安装opencl支持

打开TargetOpenCL开关,我们可以看到使用opencl进行推理的时候,计算时调用的openclapi是如何的。展示的测速结果如下所示,这里可以看出来,虽然都是使用了cpu进行计算,但是还是intel-cpu-opencl速度更快些。compile_jit进行处理操作。查看主机平台支持的设备平台。设置kernel参数。...

2022-07-16 15:13:43 639 1

原创 【网络通信一】SOCKET套接字

1、Socket的整体使用流程下图表示的是用socket接口实现了典型的CS事务的具体调用流程。补充知识:目前本人亲自测验大小端的代码和结果枚举如下硬件操作系统大小端浪潮盒子ARMv8 Processor rev 0 (v8l)Linux version 4.9.140-tegra小端2080服务器Intel® Xeon® Silver 4110 CPUUbuntu 7.5.0-3ubuntu1~18.04小端本地电脑Intel® Core™ i7-9700

2022-07-14 19:00:00 529

原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(9)

1、前言本次的进展内容:本次文章的主要内容:3、InferenceDebugByCpu调试推理接口3.1、调用流程具体的调用流程示例如下所示:3.2、实现细节具体的调用流程示例如下所示:4、cpu_run调试推理部分如何从cl核函数转换4.1、关于opencl的cl核函数说明cl核函数内部遵循了C99编程语言标准,内部的代码跟C语言一致;cl核函数内部的逻辑只代表一个工作项的所有工作,具体的循环是靠外部调用clEnqueueNDRangeKernel函数时设置的globalWorkSi

2022-07-08 16:17:19 550

原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(8)

《你或许也想拥有专属于自己的AI模型文件格式》这个系列,上一次的文章更新是2022-03-05,距今已经4个月之久了。主要是这段时间有其他的事情在忙,期间也在断断续续地在完善该推理框架的。而让我思绪卡死的地方就是整网的推理时事件依赖问题,这个问题主要是因为OpenCL的clEnqueueNDRangeKernel这个核函数推理函数的局限性问题(正文仔细说明)。本次的进展内容:本次文章的主要内容:目前的工程整体结构:2、有向图重排网络层2.1、重排的原因和目的模型的网络层顺序是乱序的:我们自定义的模型

2022-07-07 17:44:20 714

原创 Intel-Cpu-OpenCL-Runtime-SDK的使用和示例源码编译

2. Intel-Cpu-OpenCL-Runtime的SDK安装确认安装的系统环境,是Linux还是Windows下载对应的SDK安装程序,点击此处的Intel-Cpu-OpenCL-SDK官网下载下载之后可以一键运行安装程序3. 编译指令说明3.1. 运行结果说明输入图片如下所示:输出图片如下所示:3.2. cpp工程的处理流程如下所示:......

2022-06-14 20:30:00 2634 1

原创 Halide示例学习五

Halide示例学习四函数重定义操作RDom下标使用使用RDom计算直方图调度函数更新多阶段重定义操作使用归化函数进行模糊操作内置的归化函数sum使用归约函数的一个复杂例子函数重定义操作#include "Halide.h"#include <stdio.h>using namespace Halide;int main(int argc, char **argv) { Var x("x"), y("y"); Buffer<uint8_t> input

2022-05-04 10:25:09 484

原创 Halide示例学习四

Halide示例学习四多阶段计算图多计算图组合示例compute_at使用方法store_root配合compute_at使用方法tile配合compute_at使用方法compute_at和store_at以及之前的混合技使用方法多阶段计算图#include "Halide.h"#include <stdio.h>using namespace Halide;int main(int argc, char **argv) { Var x("x"), y("y");

2022-05-02 16:42:43 389

原创 halide调度过程可视化工具

halide调度过程可视化工具简介代码实现调用流程简介该工具主要是为了进行能够对Halide使用了trace之后,打印出来的计算信息进行动态图可视化,如此可以更好地理解Halide的调度过程代码实现下面部分显示了所有的代码实现import cv2import numpy as npimport imageio# 显示Halide计算过程的图像可视化def readtxt(filename:str): f = open(filename) line = f.readlin

2022-05-01 18:00:00 371

原创 SRPC初步使用和说明

SRPC初步使用和说明一. RPC介绍和SRPC说明RPC是一种概念,表示远程过程调用,就是指能够让用户在本地调用远程的方法,调用透明,我们不需要知道调用的方法部署在什么地方。SRPC目前是搜狗业务线上使用的企业级RPC系统,是一种RPC框架,具有以下的相关优势:底层基于Sogou C++ Workflow,兼具:高性能、低延迟、轻量级低开发和接入门槛完美兼容workflow的串并联任务流对于已有protobuf/thrift描述文件的项目,可以做到一键迁移支持Linux / MacO

2022-04-27 20:02:14 3349 1

原创 Halide示例学习三

Halide示例学习三改变维度遍历起点多计算图组合示例改变维度遍历起点#include "Halide.h"#include <stdio.h>using namespace Halide;int main(int argc, char **argv) { Func gradient("gradient"); Var x("x"), y("y"); gradient(x, y) = x + y; gradient.trace_stores();

2022-04-26 17:53:10 259

原创 Halide示例学习二

Halide的调度实操以及说明

2022-04-24 20:45:55 532

原创 Halide示例学习一

Halide示例学习一示例学习基本变量和概念操控图片操作debug操作1示例学习基本变量和概念// 使用Halide,我们只需要包含Halide.h这个头文件就可以了#include "Halide.h"#include <stdio.h>int main(int argc, char **argv) { // Halide::Func代表了一个计算图,代表了每一个像素值需要进行的计算操作 Halide::Func gradient; // Halide::

2022-04-19 22:03:13 696

原创 Unix进程的学习

Unix进程的学习一、初步了解父子进程的特性,特别是fork()函数的使用:调用一次,返回两次并发执行相同但是独立的地址空间共享文件  示例程序如下所示:#include "csapp.h"int main(int argc, char** argv){ pid_t pid; int x = 1; pid = Fork(); if (pid == 0){ /*子进程 */ printf("child : x = %d\n"

2022-03-15 19:17:46 781

原创 Halide源码编译

Halide源码编译Halide为何要源码编译?源码编译LLVM库源码编译Halide测试Halide是否编译成功生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Halide  Halide 算是一种编程模式,主要用于在现代机器上来进行高性能的图像和数组处理。其寄生在C++编程语言中,作为DSL编程语言(特定域语言)来实现高

2022-03-10 19:57:38 1864

原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(7)

距离上次的文章,已经有一个月之久了。要是再不继续推进,那么我17个粉丝又要催更了(纯属本人瞎说,实际情况是没人催更)。今天就少扯皮了,直接开淦吧!上次的文章中,说明了如何在C++代码中解析我们的专AI模模型文件格式,大概的思路无非和构建模型的时候是反着进行的。因为这份模型文件格式是完全由flatbuffers进行解析的,因此,解析的过程是一场清晰明了的。而之所以解析模型文件,主要是这样我们就能够实现专AI模的跨平台传送,构建好的模型能够无差异地在各...

2022-03-05 20:59:06 2562

原创 你或许也想拥有专属于自己的AI模型文件格式(推理部署篇)-(6)

如果有新的观众,如有疑惑,请从《专ai模》这个专栏从头开始阅读。特别是想要彻底搞清楚深度学习中模型的起源,以及如何一步一步构建自定义模型格式的观众来说,除了可视化篇,前面的三章必须要仔细阅读。而为什么我又有雅致来开启《推理部署篇》呢?主要原因是,目前个人野心有点大,想要从零构建一整套关于推理部署的工具链吧。也就是向着推理引擎的方向努力吧。特别是自从上次结束了《可视化篇》,总感觉意犹未尽。因此,全新的篇章开启了,该篇章的文章数可能会控制在10篇以下吧。不...

2022-02-15 20:24:00 1012

原创 The ROS_DOMAIN_ID,即ROS的领域标识的含义

最近心血来潮尝试了一下ROS 2,想着看下ROS 2是如何仿真,以及想要看下ROS 2实际应用的可行性。关于ROS,本人最近才开始了解,之前少有接触。目前我是打算当作仿真工具来使用的,关于其实际运用落地,目前还是比较担心其性能、延时的问题(毕竟在网络上听说过ROS对于时间延时的问题优化不够)。但是仔细想来,应该也没有哪个产品会完全使用ROS吧,毕竟不是所有的Robot都是拥有多个处理单元的(应该考虑到多线程能力弱的处理单元),因此从实际的方面考虑,我目前是把这个ROS当作...

2022-01-03 17:40:59 2394

原创 你或许也想拥有专属于自己的AI模型文件格式(可视化篇)-(5)

太久才来写这个专栏的第五篇,不是我鸽了,是想要测试我那两位数粉丝有没有催更的可能,结果是显而易见的——没有!好吧,其实是可视化篇比较难,花费了比较多的时间去编写代码适配专ai模,尤其是代码调试难度高,导致花费了很多时间精力去配置调试环境,熟悉vscode对于javascript的调试。本篇章将会讲述如何可视化我们的专属于自己的AI模型文件格式,特别是如何适配netron可视化工具。所以,对于可视化篇而言,或者就止步在这篇章了。这篇将会带你一起来可视化专ai模。 那么,就...

2021-12-24 18:15:00 846 7

原创 你或许也想拥有专属于自己的AI模型文件格式(可视化篇)-(4)

可视化篇来了,一起来用netron实现自定义模型格式的可视化吧!

2021-12-15 18:15:00 1251

原创 你或许也想拥有专属于自己的AI模型文件格式-(3)

如果读者没有阅读过前两篇,或者想要再次回顾,以下是对应的链接:你或许也想拥有专属于自己的AI模型文件格式-(1)https://blog.youkuaiyun.com/Pengcode/article/details/121754272你或许也想拥有专属于自己的AI模型文件格式-(2)https://blog.youkuaiyun.com/Pengcode/article/details/121776674 前两篇文章,讲述了制作专属于自己的AI模型文件格式的初衷,写下了我们的需求,同时我们制定了...

2021-12-10 18:15:00 783

原创 你或许也想拥有专属于自己的AI模型文件格式-(2)

紧接着上次的工作,想要回顾或者查看上次内容可以点击以下的链接,链接如下所示:你或许也想拥有专属于自己的AI模型文件格式-(1)https://blog.youkuaiyun.com/Pengcode/article/details/121754272?spm=1001.2014.3001.5502 这次主要的内容是构建我们的专ai模的灵魂,也就是信息组成描述编写。通俗来说,就是定义一个数据协议,这些数据协议中包含了模型数据结构,这些数据结构是我们搭建整个模型的积木,或者说是包含了整个模...

2021-12-08 18:15:00 857

原创 你或许也想拥有专属于自己的AI模型文件格式-(1)

2021年前后,大量的推理框架和训练框架层出不穷;训练框架有较新的Pytorch、TensorFlow,和老的Caffe、Darknet等;推理框架中有各种国产的、开源的,特别是边缘设备上的框架Ncnn、Tengine等;另外,国产的CANN更是兼顾了训练和推理两方面。 但是,以上所有的框架基本是拥有一种专属于自己的模型文件。比如caffe由.prototxt和.caffemodel文件组成,darknet由.cfg和.weight文件组成,pytorch由.pt组成,te...

2021-12-07 08:00:00 1216

onnx-simplifier的单元测试示例和结果

onnx-simplifier的单元测试示例和结果

2024-01-12

均匀量化和非均匀量化测试工程

均匀量化和非均匀量化测试工程

2023-11-23

C++ 反汇编与逆向分析技术揭秘 01章 Disasm-Push工具

改写的,可使用gcc/g++编译的反汇编工具。 可用于反汇编x86的二进制汇编文件,展示出来内部的反汇编原理和流程。

2023-11-21

Cross-Layer Equalization跨层均衡-python测试脚本

DFQ后量化方法,CLE

2023-11-14

LM(列文伯格-马夸尔特)方法的matlab实现代码

实现较为粗略的列文伯格-马夸尔特方法代码实现,因为matlab代码简单,很容易修改参数和进行变种。配合https://blog.youkuaiyun.com/Pengcode/article/details/107783834进行LM研究将会更加合理。

2020-08-04

Draw a phase diagram.rar

能够根据自定义的matlab微分方程绘制二维相图,能够体现二阶系统的稳定点和该点的稳定特性。该文件包含了代码和说明文档。该资源本人同步上传到了百度云,可移步到本人博客https://blog.youkuaiyun.com/Pengcode/article/details/106860116查看链接进行下载。

2020-08-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除