赞
踩
C++ struct 相比 C struct 扩充了:
1.成员函数
2.继承
3.多态
//c
strcut A
{
int a;
int b;
}
//c++
strcut A:public base
{
void fuctionA();
virtual void fuctionB();
int a;
int b;
}
c++ struct 和 class的区别:
1.默认的继承访问权限。class默认的是private,strcut默认的是public;
2.默认的成员变量访问权限。class默认的成员变量访问是private,struct默认的成员变量访问是public;
1.非继承关系
public:变量和函数在类内外都可以访问;
protected:变量和函数只能在类内函数和派生类内函数和友元类共享;
private:变量和函数只能类内函数和友元类访问;
2.继承关系下的访问权限
子类继承方式 :
class child :public/protected/private Parent
父类中的访问级别 :
公有成员 : public
保护成员 : protected
私有成员 : private
public继承:访问权限保持不变
protect继承:private不变,其他变为protect
private继承:全都变为private
1.new和malloc的区别:
⚪前者是c++运算符,后者是c/c++标准库函数
⚪new自动计算分配空间的大小,malloc需要手工计算
⚪new是类型安全的,malloc不是
⚪new返回的是具体类型的指针,malloc返回的是void指针(必须进行强制类型转换)
⚪new由malloc+指针强制类型转换+构造函数组成
指针是内存的抽象表示;
new和malloc都非常慢,在高性能计算领域要减少它们的次数;
代码段:存储程序的二进制指令,即程序编译后的二进制代码
数据段:存储已被初始化的全局变量、静态变量
bss:存储未被初始化的全局变量、静态变量
stack(栈空间):存储函数参数和局部变量
heap(堆空间):malloc或new申请的内存
全局变量,静态变量是什么?
全局变量:全局可见,静态存储区,全局变量优先级低于局部变量(如果同名的话)
优点 :使用全局变量程序运行时速度会快一点,因为内存不需要再分配。
缺点 :使用全局变量会占用更多的内存,因为其生命期长。
不管加不加static,全局变量都是存储在静态存储区,都是在编译时分配存储空间的,两者只是作用域不同,全局变量可以使用extern拓展作用域,可以是整个工程,但static静态全局变量作用域仅限于本文件;
static修饰局部变量只改变生命周期,不改变作用域!
1.管理方式:堆是需要手动开辟的
2.内存管理机制:可不记;但可以了解一下内存池的概念!
3.空间大小:只需要记住堆是几G,栈是几M,的数量级就可以了;
4.碎片问题;因为开辟空间的时候可能不是连续的,所以可能存在碎片;
5.生长方向
6.分配方式
7.分配效率:栈快很多,有专门的寄存器存栈地址,栈操作有专门的指令
内存池的作用和实现方式?
开辟一块大的内存,避免了频繁的使用new操作,提升性能;
1.inline定义: 函数A调用函数B的时候,直接把B函数体给替换过来
2.作用: 避免函数A调用B造成的栈空间(栈帧)创建(局部变量和函数参数)和释放开销(创栈->参数入栈->删栈)
3.缺点:当函数B的函数体比较复杂的时候,不宜inline,(再深入一点:此时会造成代码膨胀,造成CPU流水线前端fetch指令发生cache miss,降低性能)
cpu从cache中读取指令,如果函数体太大,cache缓存不够,cpu会从内存去读取,这样性能反而降低了;
重载的定义:某个函数和运算符可以有多个定义,参数个数、顺序、类型有一个不同即可,分别称为函数重载和运算符重载。编译器会根据实际调用传进去的实参在这多个定义中选择最合适的重载函数或重载运算符,称为重载决策。
类内函数重载:
类外函数重载:
运算符重载:
conv2d,matmul,pooling,relu,batchnorm,softmax,mul等,要是能说出某种算子的优化方式就更好了,另外,加上一些算法idea上的思考也可以,比如conv2d可以通过转换成矩阵乘法来计算,算法名称叫做im2col,cuDNN内部就是这样计算conv2d
AI优化:1.计算图(算子融合);2.算子优化;3.执行时(内存池)
gemm = mattul
拷贝构造函数?能写出实例代码吗?
batchnorm和softmax在什么情况下计算结果可能会出现精度问题?为什么?怎么解决?
宏观上:
1.计算效率:取决于硬件算力,以及计算的持续而不被打断
2.访存效率:取决于访存延迟和带宽
3.计算与访存相重叠
4.计算与通信相重叠
举例说明对它们的理解
写出代码
持续更新中…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。