背景:lz在自驾公司做bev模型在orin上的部署和优化,三年工作经验。最近面了几家公司,主要是自驾公司的模型部署和工程化岗位,也有一些是推理框架和大模型推理优化相关的岗位。这两周大概搞了二十多场面试,也该总结一下经验,顺便攒一波rp了:)lz既然是社招,那肯定是项目问的比较多,这块没啥好讲的,每个人的项目都不一样,只要保证简历上写的东西是自己做的,面试的时候能讲清楚就可以了。CUDA和C++八股lz的cuda基本都是自学的,自我感觉良好,结果面试的时候被各路面试官吊打,还是自己太菜了[牛泪]cuda的问题有下面这些cuda graph作用原理,kernel launch流程如何确定blocksize和gridsize什么是default stream,它存在什么问题shared memor的bank conflict及解决方法threadfence的作用如何debug cuda kernelunified memory和zero-copy memorycuda sort如何实现sin函数在哪个硬件计算,这个硬件还能算什么Volat架构特性,ITS3090上单个block能用的shmem最大有多少PTX与SASS的区别GPU性能xx TFLOPS是怎么计算的C++的八股问的也挺多,不过翻来覆去就下面几个问题C++虚函数实现机制,单继承、多继承、虚继承的内存布局四种cast三种智能指针函数模板声明与定义能否分离CRTP静态多态vector扩容,resize和reserve单例模式手撕题目做推理优化和高性能计算肯定是要懂点cuda,所以大部分的题目都是用cuda实现,一些不太好用cuda实现的如NMS就用c++写了。当然也遇到过一些力扣题目,基本是hot100的范畴,这里不再赘述。cuda实现:reduction,softmax,matrix transpose,avg pooling,算两堆bbox的iou,大部分情况下都是实现kernel即可,少数情况需要跟cpu对齐。c++实现:NMS,conv2d,双线性插值,layernorm,单例模式这里面让我印象比较深刻的是layernorm,用cuda写个layernorm不难,但面试官让我用vadd/vsub/vmul/vdiv等向量指令实现一个layernorm,我人都傻了。一是咱平时写cuda都是SIMT的编程模型,cpu优化是SIMD,这俩写起来有差别;二是没提供sqrt,得自己用牛顿法求,而且还没有比较运算符,浮点数的比较还有一些trick,最后肯定是寄了。另外就是某大模型公司,要求实现softmax,需要跟cpu版本对齐。我写了个3pass的softmax,可惜面试过程中结果没有对齐,面完下来5分钟就解了bug,也算比较可惜吧。还有个小插曲就是面试官让我把代码通过腾讯会议发给他,但是我发错文件了,目录下有test.cc和test.cu,test.cc里面是另一个家面试的手撕,test.cu里面才是softmax。手滑了,发给面试官的是test.cc[笑cry]第二天我重新发了调通的test.cu,希望他能看到吧[笑cry]
点赞 26
评论 9
全部评论

相关推荐

05-23 19:02
吉林大学 Java
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务