自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(610)
  • 收藏
  • 关注

原创 3、

1、什么是导数?https://www.bilibili.com/video/BV1Ja411x7fB/可导意味着在某点处它的导数存在导数就是切线的斜率2、什么是可微?https://www.bilibili.com/video/BV1sp4y1Y7uz/3、自变量和因变量有啥区别?...

2023-09-16 23:06:00 93

原创 18、复合类型之指针(P47、P48、P49、P50);C++ primer 2.3.2

1、C++中的“声明符”是什么?声明符是用来指定变量或函数的类型、名称和属性的符号。例如:int list[20];声明了一个名为 list 的整型数组,它有 20 个元素。int是类型说明符,list[20]是声明符char *cp;声明了一个名为 cp 的指向字符的指针1。*cp是声明符double func( void );声明了一个名为 func 的函数,它没有参数,返回...

2023-09-14 22:36:00 108

原创 17、复合类型之引用(P45、P46)

P45倒数第五行“引用为对象起了另外一个名字,引用类型引用另外一种类型。”int x = 10; // 声明一个整数变量x,并初始化为10int &refX = x; // 声明一个整数引用refX,它是x的别名ref就是x的另外一个名字,refX就是引用类型,它引用了x(int整形)P45倒数第四行,声明符:具体来说,声明符可以包含以下部分:基本类型或用户自定...

2023-09-09 15:20:00 104

原创 3、运算精度的选择(P106、P107、P108、P109、P110、P111)

1、fp16和fp32有什么区别?FP32(单精度浮点数)和FP16(半精度浮点数)是两种不同的浮点数表示方式,它们在精度和存储空间上有显著的区别。下面是它们的主要区别以及一个示例来说明这些区别:精度:FP32:单精度浮点数使用32位来表示一个数,其中包括1位符号位、8位指数位和23位尾数位。它具有较高的精度,通常用于大多数科学计算和图形渲染任务。FP16:半精度浮点数使用16位来...

2023-09-09 14:58:00 160

原创 14、浮点数P75、P76、P78

1、数字权是什么?在进制中,数字的权(也称为权重或位置权重)表示了数字在该进制中的位置对其所代表的数值的贡献大小。不同进制有不同的权值计算方式。在常见的十进制(base-10)中,数字的权值按照从右到左的顺序分别为1、10、100、1000等,每一位数字的权值都是前一位的10倍。例如,数字1234中各个数字的权值如下:4 的权值是 1,因为它在个位上。3 的权值是 10,因为它在十位...

2023-09-03 15:13:00 34

原创 16、C++ primer 变量声明和定义的关系P41

1、什么是分离式编译?分离式编译(Separate Compilation)是一种软件开发技术,用于将一个大型的程序分割成多个独立的源代码文件,并分别进行编译。每个源代码文件通常包含一个模块、类、函数或者其他逻辑单元的实现。2、声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。什么意思假设有两个源代码文件:main.cpp 和 functions.cpp,...

2023-08-31 22:18:00 24

原创 关于内存对齐的问题

关于内存对齐的问题

2023-08-23 22:30:00 39

原创 15、P146

1、我们必须牢记pc所指的真实对象是一个int而非字符。这句话还有点模糊。2、强制类型转换为什么干扰了正常的类型检查?2.2.22.3.22.4.36.419.2

2023-08-21 17:41:00 34

原创 14、P145

1、”不包含底层const,都可以使用 static_cast“目前不理解这句话(整数第四行)1、指针的类型是int*,double*,float*等1、int a = 5;int* b = &a;这个时候是可以称呼b为指针。2、把指针放在void*中,其实是指的是把指针放在void这个类型的变量里,加了*,是为说明这是一个指针。3、这里所说的原来类型指的是double*这个...

2023-08-21 15:45:00 65

原创 C++面试题

1、当使用C++编写代码时,有一个常见的问题是如何在子类中调用父类的构造函数。下面是一个相关的C++面试题:题目: 假设有一个基类Animal,其中包含一个带参数的构造函数和一个公共成员函数display()。请编写一个派生类Dog,继承自Animal,并实现自己的构造函数和display()函数。要求:Dog类的构造函数应接受两个参数:name(狗的名字)和age(狗的年龄)。构造函数...

2023-06-11 17:57:00 153

原创 TVM面试题

1、TVM中的调度器(Scheduler)是什么?请简要解释TVM调度器的作用和工作原理。TVM中的调度器(Scheduler)是负责将计算图映射到特定硬件目标上的组件。调度器在TVM中起着关键的作用,它决定了计算图的执行方式、并行化策略以及内存布局等,以优化计算性能和资源利用。TVM调度器的主要作用包括:并行化和优化:调度器能够根据硬件目标的特性和限制,自动进行并行化和优化,将计算图划...

2023-06-10 23:28:00 821

原创 MLIR面试题

1、请简要解释MLIR的概念和用途,并说明MLIR在编译器领域中的重要性。MLIR(Multi-Level Intermediate Representation)是一种多级中间表示语言,提供灵活、可扩展和可优化的编译器基础设施。MLIR的主要目标是为不同的编程语言、领域专用语言(DSL)和编译器优化提供统一的中间表示框架。MLIR的概念和用途如下:概念:MLIR采用层次化的设计,其中不...

2023-06-10 22:39:00 1642

原创 编译原理面试题

1、请解释编译器前端和后端的区别,并描述它们在编译过程中的职责。编译器是将高级程序语言转换为目标机器语言的软件工具。它通常由两个主要组件组成:前端和后端。编译器前端: 编译器前端主要负责源代码的分析和处理。它包括以下阶段:词法分析(Lexical Analysis):将源代码分解成标记(Tokens)的过程。词法分析器(Lexer)根据语法规则,将源代码转换为标记流,去除空格、注释等无...

2023-06-10 13:02:00 1534

原创 计算机体系结构面试题

1、请解释什么是指令级并行(Instruction-Level Parallelism,ILP)并提供一个示例说明?

2023-06-10 00:09:00 135

原创 数据操作指令(算术指令)

参考资料:L-1.9: Arithmetic Instructions(Data Manipulation) in Computer Organisation and Architecture - YouTube算术指令出现在数据操作中,算术是逻辑的,我们有移位指令。算术运算,就像在C语言中我们做两个数的加法,两个数的乘法,两个数的减法,两个数的除法我们一般在编程语言中使用的算术运算,...

2023-06-09 14:00:00 47

原创 数据传输指令

参考资料:L-1.8: Data Transfer Instructions in Computer Organisation and Architecture - YouTube数据传输指令意味着需要传输数据,什么是源地址?什么是目的地址?准备好内存和寄存器组(与处理器进行工作的),还需要准备I/O设备。在I/O设备中也有内存与寄存器组。数据传输就是指在上面的这些内存与寄存器之间传输数...

2023-06-06 06:51:29 65

原创 cmake学习

参考资料:02-CMake的HelloWord编译_哔哩哔哩_bilibili1、在Linux上安装cmake2、写一个c++程序#include <iostream>int main(){ std::cout<<"Hello world!"<<std::endl; return 0;}3、写一个CMakeL...

2023-06-04 01:19:00 34

原创 git常用命令介绍

git mergeGit merge是一种用于将一个分支的更改合并到另一个分支的操作。示例: A---B---C [master] \ D---E---F [feature-branch]在这个示例中,master分支上有三个提交(标记为A、B和C),而feature...

2023-05-28 19:54:00 41

原创 计算机的基本工作原理

参考资料:L-1.6: Common Bus system| How basic computer works - YouTube准备好内存单元、不同类型的寄存器,内存和寄存器、寄存器和寄存器之间都是通过总线连接(假设是直接把数据总线、控制总线、地址总线变成一条总线)。使用多路复用器实现的总线,在上个视频是有介绍的,需要重新看一下,做笔记,这里就直接使用了总线,多路复用器的实现总线就省略了...

2023-05-21 03:46:00 376

原创 命名空间

参考资料:6-命名空间_哔哩哔哩_bilibili1、什么是命名空间?一个区域、一个包裹、一个作用域、一个范围2、举例#include <iostream>namespace kkb{class Washer{ public: std::string str; int vol; void getstr();...

2023-05-07 20:34:00 47

原创 通用寄存器

参考资料:L-1.3:Various General Purpose Registers in Computer Organization and Architecture - YouTube数据寄存器(data register)意味着临时存储数据的地方,大小一般是一个字(word)累加寄存器(accumulation register)使用累加寄存器存储中间数据,意味着输出当输入使...

2023-05-06 23:56:00 42

原创 C++类模板(模板类)

参考资料:C++类模板(模板类)详解 (biancheng.net)人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是C++引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动。例如,在《C++运算符重载》一章中的《C++实现可变长度的动态数组》一节中,我们实现了一个可变长的整型数组类,可能还需要可...

2023-05-05 23:07:00 79

原创 [MLIR] 转换流程详解(以Toy接入为例)

参考资料:[MLIR] 转换流程详解(以Toy接入为例) - 知乎 (zhihu.com)在本文中我们使用 toy 语言接入 MLIR,最终转化为 LLVM IR (或目标代码)为例,来讲解 MLIR 的转换流程。具体的流程如下:.toy 源文件→AST→MLIRGen(遍历AST生成MLIR表达式)→Transformation(变形消除冗余)→Lowering→LL...

2023-04-24 06:52:01 264

原创 [MLIR] CodeGen Pipeline总结

参考资料:[MLIR] CodeGen Pipeline总结 - 知乎 (zhihu.com)本文主要以 tensorflow 为例,介绍了其接入 MLIR 后的 CodeGen 过程,以及简要分析了一些现在常用的 CodeGen pipeline。本文是本人在结合博客(Codegen Dialect Overview - MLIR - LLVM Discussion Forums)以及相关...

2023-04-23 22:30:00 474

原创 Dialect及Operation详解

参考资料:[MLIR] Dialect及Operation详解 - 知乎 (zhihu.com)2. Dialect 及Operation2.1Dialect2.1.1Dialect 是什么?从源程序到目标程序,要经过一系列的抽象以及分析,通过 Lowering Pass 来实现从一个IR到另一个IR的转换。但IR之间的转换需要统一格式,统一IR的第一步就是要统一“语言”,各个IR原...

2023-04-23 17:04:00 599

原创 C++ const关键字

参考资料:【C++ const的各种用法详解】【const用法深入浅出】 - COS - 博客园 (cnblogs.com)const的基本概念:const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。下面我就const的用法来谈谈:const的用法大致可分为以下几个方面:(1)const...

2023-04-18 23:36:00 580

原创 流水线-控制冒险

参考资料:606-控制冒险的处理 - 第六讲 流水线处理器 | Coursera

2023-04-16 22:40:00 59

原创 7.1存储系统的基本知识

7.1.1 存储系统的层次结构满足对三个指标的要求: 容量大 速度快 价格低采用多级存储技术,构成多级存储结构层次多级存储技术是一种计算机存储系统的组织方式,将计算机存储系统划分为多个层次,每个层次的存储介质速度和容量不同,以便在不同的应用场景下提供最优的性能和存储空间。多级存储技术的核心思想是通过增加低速、高容量存储介质来平衡高速、低容量存储介质的局限性,从而提高整个存储系统的性能和可靠...

2023-04-13 22:19:00 48

原创 C++中&的功能 及 用法

参考资料:C++中&的功能 及 用法 - konglingbin - 博客园 (cnblogs.com)对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在c++学习提高篇(3)---隐式指针的文章中我...

2023-04-11 22:20:00 884

原创 总线结构

参考资料:总线结构-微计算机原理-电子发烧友网站 (elecfans.com)一个计算机系统由主机和外设组成,而主机又是由各种大规模集成电路芯片为核心的多种插件组成。所以插件与插件之间,同一插件芯片与芯片之间,或者系统与系统之间都需要用通信线路连接起来。所谓 总线,就是若干互连线的集合。由它构成芯片之间,插件之间及系统之间标准信息通路。一块插件中芯片中的互连线称为芯片总线,插件与插件之间的互...

2023-04-06 22:48:00 317

原创 C++ 继承

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。...

2023-04-04 23:41:00 25

原创 CPU指令集架构

参考资料:漫话CPU指令集架构 - 知乎 (zhihu.com)目前市面上存在两种指令集架构类型:Reduced Instruction Set Computing (RISC) 精简指令集,比如ARM,MIPS等Complex Instruction Set Computing (CISC) 复杂指令集,比如Intel的X86等简单说,一精简指令集就是只规定非常简单的2进制处理器...

2023-04-02 02:00:00 430

原创 C++编程语言中赋值运算符重载函数(operator=)介绍

参考资料:C++编程语言中赋值运算符重载函数(operator=)介绍_operator==_liitdar的博客-CSDN博客本文主要介绍 C++ 编程语言中赋值运算符重载函数(operator=)的相关知识,同时通过示例代码介绍赋值运算符重载函数的使用方法。1 概述1.1 Why首先介绍为什么要对赋值运算符“=”进行重载。某些情况下,当我们编写一个类的时候,并不需要为该类重载“=”...

2023-03-28 23:35:00 46

原创 CPU中的指令周期、CPU周期和时钟周期

参考资料:【浅析】CPU中的指令周期、CPU周期和时钟周期 - 知乎 (zhihu.com)一.指令周期指令周期:是指计算机从取指到指令执行完毕的时间计算机执行指令的过程可以分为以下三个步骤:Fetch(取指),也就是从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。Decode(译码),也...

2023-03-28 20:59:00 1735

原创 C++类的定义和对象的创建详解

参考资料:C++类的定义和对象的创建详解 (biancheng.net)类和对象是C++的重要特性,它们使得 C++ 成为面向对象的编程语言,可以用来开发中大型项目,本节重点讲解类和对象的语法,如果你对它们的概念还不了解,请先阅读《C++类和对象到底是什么意思》。类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个...

2023-03-28 00:06:00 174

原创 计算机组成原理:结构冒险和数据冒险

参考资料:计算机组成原理:结构冒险和数据冒险_結构冒險_OceanStar的学习笔记的博客-CSDN博客

2023-03-27 19:05:00 65

原创 深入浅出CPU流水线工作原理

参考资料:深入浅出CPU流水线工作原理 - 公众号文章汇总 | 宅学部落 (zhaixue.cc)

2023-03-25 23:18:00 132

原创 C++ 直接初始化和拷贝初始化

首先我们介绍直接初始化:编译器使用普通的函数匹配来选择与我们提供的参数最匹配的构造函数。文字描述可能会让你们云里雾里,那我们直接看代码://先设计这样的一个类class A{public: A(){ cout << "A()" << endl; } A(int a){ cout << "A(int a)" << endl; ...

2023-03-25 22:03:00 425

原创 标量打断流水

标量打断流水(Scalar Operand Interlock)是指在流水线中,两条指令之间存在数据依赖关系,且第一条指令的执行结果需要在下一条指令中使用,但第一条指令尚未完成时,下一条指令已经进入流水线并开始执行,这种情况称为标量打断流水。在发生标量打断流水时,为了避免数据错误,需要采取一定的措施进行处理。常见的方法包括:延迟执行下一条指令:当第一条指令尚未完成时,将下一条指令暂时停止...

2023-03-25 02:14:00 258

原创 C++11 shared_ptr智能指针(超级详细)

在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如:有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存...

2023-03-24 00:54:00 197

空空如也

空空如也

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

TA关注的人

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