高性能计算库开发二面面经
完整信息
本篇目录
翻到了一个多月前的面试录音,补一下面经
形式:线上单面,1 位面试官,约 50 分钟
节奏:项目 1 题 → 体系结构 + C++ 连续拷打约 40 分钟 → 测试 3 题 → 反问
无手撕、无自我介绍,全程八股为主,且逐层往硬件机制下钻
一、项目(1 题)
- 你项目里的依赖图分析是怎么做的?
二、体系结构与硬件机制(本场主体)
2. SIMD 和 SIMT 的区别?
3. SIMT 里执行时遇到分支判断,是怎么执行的?
4. 追问:线程块在 wave 里调度,被 block 住之后会把它换出去、再把下一组具备执行条件的线程加进来 —— 这个调度过程的开销主要在哪里?
5. SIMD 和 SIMT 可以混合吗?
6. 用 SIMD 写并行算法时,if (A > B) X = A; else X = B; 有没有更好、不走 if 判断、不走分支的写法?
7. Bank Conflict 是什么原因导致的?
8. 追问:访问到同一个 bank 一定会冲突吗?有没有不冲突的情况?为什么?
9. 假设有两级 Cache,CPU 要去 DDR 上访问一个数,这个过程中 L1、L2 是怎么配合工作的?
10. 追问:L1 不命中、L2 命中,是把数据整块提出来覆盖到 L1 吗?L2 也不命中呢?
11. 程序已经变成可执行文件了,CPU 执行它的取指、译码、执行是一个什么样的过程?
12. 取指的时候是怎么取的、从哪里取?(指令怎么从内存里读出来)
13. 怎么确认具体该访问哪一条指令?指令缓存满了的话数据怎么更新、什么时候更新?
14. 对一个循环(比如多级 for 循环)怎么优化它?—— 先从代码级/语法层面讲,也可以讲流水线级别
15. 从寄存器读数据和从内存读数据,延迟大概差多少个数量级?从寄存器里读一个数要几个周期?
三、C++ 语言
16. 通过 C++ 的一些语法给编译器一些提示信息,让它编出的代码更高效 —— 有哪些方法?
17. C++ 里左值、右值的概念?右值引用一般是什么场景?
18. struct 和 class 的区别?现在很多人用 struct 也能定义方法,它能定义吗?区别到底在哪?
19. static 最常用是修饰变量,但它也能修饰函数、修饰类 —— 修饰函数和类的时候是什么作用?
四、测试
20. 写好的代码如何测试?有哪些测试环节?
21. 代码完成到什么程度就可以去写单元测试了?
22. 写单元测试需要知道(掌握)哪些东西?
五、软性 / 双向匹配
23. 深度学习这方面自己有了解过一些吗?
24. 对团队有什么要求吗?比如团队工作氛围。
25. 对工作节奏、强度方面有什么期望?
本篇目录
当前问题0125
- 01
你项目里的依赖图分析是怎么做的?
- 02
SIMD 和 SIMT 的区别?
- 03
SIMT 里执行时遇到分支判断,是怎么执行的?
- 04
追问:线程块在 wave 里调度,被 block 住之后会把它换出去、再把下一组具备执行条件的线程加进来 —— 这个调度过程的开销主要在哪里?
- 05
SIMD 和 SIMT 可以混合吗?
- 06
用 SIMD 写并行算法时,if (A > B) X = A; else X = B; 有没有更好、不走 if 判断、不走分支的写法?
- 07
Bank Conflict 是什么原因导致的?
- 08
追问:访问到同一个 bank 一定会冲突吗?有没有不冲突的情况?为什么?
- 09
假设有两级 Cache,CPU 要去 DDR 上访问一个数,这个过程中 L1、L2 是怎么配合工作的?
- 10
追问:L1 不命中、L2 命中,是把数据整块提出来覆盖到 L1 吗?L2 也不命中呢?
- 11
程序已经变成可执行文件了,CPU 执行它的取指、译码、执行是一个什么样的过程?
- 12
取指的时候是怎么取的、从哪里取?(指令怎么从内存里读出来)
- 13
怎么确认具体该访问哪一条指令?指令缓存满了的话数据怎么更新、什么时候更新?
- 14
对一个循环(比如多级 for 循环)怎么优化它?—— 先从代码级/语法层面讲,也可以讲流水线级别
- 15
从寄存器读数据和从内存读数据,延迟大概差多少个数量级?从寄存器里读一个数要几个周期?
- 16
通过 C++ 的一些语法给编译器一些提示信息,让它编出的代码更高效 —— 有哪些方法?
- 17
C++ 里左值、右值的概念?右值引用一般是什么场景?
- 18
struct 和 class 的区别?现在很多人用 struct 也能定义方法,它能定义吗?区别到底在哪?
- 19
static 最常用是修饰变量,但它也能修饰函数、修饰类 —— 修饰函数和类的时候是什么作用?
- 20
写好的代码如何测试?有哪些测试环节?
- 21
代码完成到什么程度就可以去写单元测试了?
- 22
写单元测试需要知道(掌握)哪些东西?
- 23
深度学习这方面自己有了解过一些吗?
- 24
对团队有什么要求吗?比如团队工作氛围。
- 25
对工作节奏、强度方面有什么期望?