发狂的小花
公众号:极空AI
AR行业经验、算法部署优化、图像处理算法、slam、SGBM、相机标定、TOF
CPU、DSP、GPU、算子针对硬件优化
展开
-
模型部署优化综述
对 Inception V3 模型的实验显示,稀疏性为 50%时性能几乎不变,87.5%时分类指标下降 2%,证明模型剪枝有效且必要,关键是找到冗余参数进行剪枝。Dropout 和 DropConnect 是经典的类似技术,如 Dropout 随机将神经元输出置零,DropConnect 随机将神经元连接置零,但因仅在训练中操作且不影响最终模型,未被视为模型剪枝技术。滤波器剪枝只改变滤波器组和特征通道数目,无需专门算法,属结构化剪枝,还有对整个网络层的剪枝,可视为滤波器剪枝的变种。核剪枝:去除某个卷积核。原创 2024-07-29 17:57:10 · 253 阅读 · 0 评论 -
面试:CUDA Tiling 和 CPU tiling 技术详解
Tiling(平铺)是一种将大的问题或数据集分解为较小的子问题或子数据集的技术,目的是提高数据局部性和缓存利用率,从而提升程序性能。(一)技术原理在 CUDA 编程中,常见的优化策略包括利用共享内存和循环分块。共享内存可被一个线程块内的所有线程访问,循环分块则将大循环分解为小循环,减少内存访问冲突,提高内存访问局部性。例如在矩阵乘法中,可将其分解为多个子矩阵乘法,然后用多个线程块并行计算,最后合并结果。CPU Tiling。原创 2024-07-30 15:19:34 · 1225 阅读 · 0 评论 -
面试题:为什么 一般 weight 选择对称量化,activation 选择非对称量化?
为什么 一般 weight 选择对称量化,activation 选择非对称量化?原创 2024-07-28 10:25:48 · 1010 阅读 · 0 评论 -
模型大小的指标和模型量化的指标和手段
大模型量化的几个指标原创 2024-07-27 21:44:51 · 635 阅读 · 0 评论 -
模型量化面试,太难了
模型量化是一种将浮点型参数转换为定点型参数的技术,以减少模型的存储和计算复杂度。原创 2024-07-23 23:22:42 · 935 阅读 · 0 评论 -
AI+HPC 部署优化面试范围分享
C/C++、多态、模板、引用、智能指针、STL、内存管理等,会持续深入,甚至会让实现一些比如:解决循环引用、智能指针的实现。AI的基础知识,整体的训练的流程、算子的计算对比、深度学习的基本知识,pytorch等框架,网络结构,目前流行的网络结构、transformer、YoLo系列、LLMs、BEV、GPTs、BERTs等。原创 2024-07-20 22:33:39 · 1293 阅读 · 0 评论 -
高性能计算工程师面试经验
高性能计算面试原创 2024-03-11 16:48:16 · 1437 阅读 · 2 评论 -
算法部署优化工程师面试题整理
算法部署优化面试,AI算子优化原创 2024-03-11 16:27:01 · 2493 阅读 · 0 评论 -
C/C++常见面试题(五)
移动语义(Move Semantics)是一种C++中的特性,用于在对象之间转移资源所有权而不进行深拷贝。传统的拷贝构造函数和赋值运算符会对数据进行深拷贝,即将源对象的数据复制一份到目标对象中。这种操作对于大型对象或资源密集型操作来说可能会很昂贵,造成性能下降。移动语义通过使用移动构造函数和移动赋值运算符来实现资源的转移,而非复制。它可以将源对象内部指针或资源的所有权直接转移到目标对象,避免了不必要的数据复制和内存分配。原创 2023-12-24 00:26:49 · 1303 阅读 · 0 评论 -
C/C++常见面试题(四)
在C++中,类是一种用户自定义的数据类型,用于封装数据和相关操作。它可以看作是一个模板或蓝图,描述了对象的属性(成员变量)和行为(成员函数)。要定义一个类,可以使用class关键字后跟类名,并在大括号中定义类的成员变量和成员函数。private:// 成员变量public:// 成员函数上述代码定义了一个名为 MyClass 的类,包含一个私有的整型成员变量 myVariable 和一个公有的成员函数 myFunction()。要实例化一个类,需要创建该类的对象。原创 2023-12-23 18:53:34 · 1407 阅读 · 0 评论 -
C语言面试题-C语言详解字节对齐原则
(1)在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。(2)为了使CPU能够对变量进行快速的访问,变量的起始地址应该具有某些特性,即所谓的”对齐”.比如4字节的int型,其起始地址应该位于4字节的边界上,即起始地址能够被4整除.(3)对于32位机来说,4字节对齐能够使cpu访问速度提高,比如说一个long类型的变量,如果跨越了4字节边界存储,那么cpu要读取两次,这样效率就低了。原创 2023-11-03 16:30:08 · 346 阅读 · 0 评论 -
C语言面试题-C语言编码详解动态链接与静态链接的区别
链接主要负责将生成的*.o和含有主函数的源文件,以及一些库文件,链接成可执行文件;链接分为动态链接和静态链接,一般默认使用动态链接,使用静态链接,需要加-static 来告知编译器。 静态链接需要静态库,静态库在Linux下格式是*.a,在Windows下是*.lib。 动态链接需要动态库,动态库在Linux下格式是*.so,在Windows下是*.dll。原创 2023-10-21 15:58:36 · 185 阅读 · 0 评论 -
C语言面试题-C语言实现并详解大端序和小端序
大端存储方式:数据的低位存储到内存的高地址中,数据的高位存储到内存的低地址中小端存储方式:数据的低位存储到内存的低地址中,数据的高位存储到内存的高地址中。原创 2023-10-26 11:25:01 · 224 阅读 · 0 评论 -
C语言面试题-C语言中的多线程机制
(3)线程的分离状态(分离线程:主动结束 和 可汇合线程:等待原有创建线程结束 才结束,即pthread_ioin()调用后,该子线程结束),pthread_join(thread_id,void * (ret));2 创建线程 pthread_create(&thread_id,NULL,fibonacci_com_func,&in);1 申请线程对象,需要包含#include ,pthread_t thread_id;(2)调度的优先级,原创 2023-11-09 14:41:00 · 200 阅读 · 0 评论 -
C语言面试题-C语言头节点法实现对两个升序链表的合并
本文主要使用C语言实现对两个升序列表的合并,涉及到链表的创建、链表的插入、链表排序、链表的合并等。这是常考的一道面试题,比较经典,既可以考察对于链表的理解也可以考察对于排序算法。这里使用带有头结点的链表来实现。原创 2023-10-27 17:10:37 · 166 阅读 · 0 评论 -
C语言面试-C语言实现字符串翻转
字符串翻转是c语言面试基本题中常见的,c语言翻转的实现思路一般是取出来重排,或者前后字符串中的字符对调,那么一般前后字符的对调效率比较高。这里实现前后对调的方法。对字符串翻转的实现一般第一步需要知道字符串的长度(strlen(str),然后对字符串进行前后遍历。原创 2023-10-26 18:01:46 · 611 阅读 · 0 评论 -
C语言面试题-C语言实现bit位的翻转
bit位的翻转,一般只对无符号数进行,对于有符号数,由于符号位的存在,需要对其进行特殊处理,这里使用c来实现对一个无符号整数实现bit位的翻转,假使32位,[0,31],即bit0bit31,bit1bit30,bit2bit29...。原创 2023-10-26 17:30:37 · 1070 阅读 · 0 评论 -
C语言面试题-C99中的restrict关键字详解
restrict是一个用于限定指针的关键字,一般定义int * restrict a,用来告知编译器,对于该指针指向的内容的修改,只能通过该指针实现,这样做的一个好处是,可以让编译器来更好的优化代码,生成效率更高的汇编代码。gcc编译时需要 加-std=c99 来实现对c99的支持。原创 2023-10-26 11:03:17 · 836 阅读 · 0 评论 -
C语言面试题-C语言实现对一个二维数组中目标值的查找
本文主要介绍用C语言实现对一个二维数组中目标值的查找,这是一道面试题。基本有两个方法,利用二维数组的本质是一维的或者分别对行列的遍历,本质上是一样的。对于这种查找很容易想到利用二分法实现。时间复杂度大概。原创 2023-10-29 13:00:46 · 312 阅读 · 0 评论 -
C语言面试题-快速理解并用C实现求一个数组中的众数
c语言标准输入输出流,求一个数组中的众数和出现的次数原创 2023-11-21 00:33:20 · 410 阅读 · 0 评论 -
C/C++常见面试题(三)
宏定义中的两个##符号是连接运算符,在预处理阶段用于将两个标识符(identifier)连接在一起形成一个新的标识符。这种操作称为标识符的拼接(token concatenation)。// 将a和b拼接成abreturn 0;在上述代码中,CONCAT宏定义使用了##连接运算符,将传入的参数a和b进行拼接。在printf()语句中,我们通过将a和b拼接成了ab,最终输出结果为10。原创 2023-12-20 19:04:05 · 1341 阅读 · 0 评论 -
C/C++常见面试题(二)
return 0;如上的一个宏定义:切记宏定义的本质只是简单的替换,因此对于宏定义的操作,一般要求加括号,比如上述的宏定义,要计算x的三次方的话,应该写成 VHU(x) (x)*(x)*(x)原创 2023-12-10 15:29:47 · 1078 阅读 · 0 评论 -
C/C++常见面试题(一)
C/C++最全面试题,最全基础,学会这些可以应对市场上几乎所有的面试题原创 2023-11-28 19:04:23 · 1534 阅读 · 0 评论