※ 引述《armorNoob (pro臭酸肥宅)》之铭言:
: 标题: [请益] compiler engineer跟一般sw engineer差别
: 时间: Fri Dec 3 14:42:58 2021
:
(小弟没有在台湾做过compiler的工作,但还是就我的经验丑人献曝一下)
: 各位大大好
: 小弟有几个疑惑
: 1. 想请问下写compiler的话,跟一般的sw会差很多吗?
我不太清楚你的"差很多"意思是什么 但如果要说差别的话
compiler engineer 需要的 domain knowledge 会比较多一些 但除此之外
依然需要具备跟一般的SWE一样的技能
: C++写LLVM,扩充openCL语法,整个flow都会碰到
: 如果之后要转纯软不晓得年资会不会重算
:
: 2. 大部分时间focus的点会是在软件还是硬件?
: 听说要很多硬件的东西,不晓得这样会不会大部分都在搞硬件的架构,
: 软件的部分反而很少碰到。
简短的答案:看你接触的区块
极端一点的例子是你的工作只负责 Clang 里面的C++语意检查(Sema)
那这部分就基本上不会摸到硬件了
但如果以我过往待过的 compiler team 情况来看,通常工作分配不会分的那么细
除了少数过于专门的问题以外 一般处理的工作里整个 compilation pipeline 都有
机会碰到。这时你软硬件都会接触了
当然主管的确会依照你擅长的部分分配 ticket,有时候你也会分配到某个
project,但通常你的生涯不会"只"解决特定的compiler问题
:
: 3. 如果跳其他写compiler的缺,多少知识是可以共用的?
: 听说韧体如果是不同device资历就会砍很重,compiler
: 也专攻硬件的知识,也会怕硬件不一样很多东西要重学,年资会被砍
并没有.jpg
如果真的发生这种事情 有问题的是该公司 不是你
compiler engineer 很多技能在不同公司都是可以适用的 即便硬件或者产品不同
你这边提到的硬件知识我猜最接近的就是 compiler backend 相关的
的确,架构不同很多东西都要重记 但不包括核心的知识 像是你大学学的计算机结构
或是 backend development 相关的知识。对方雇用的是你的不能取代的技能、经验,
以及解决问题的能力,而不是看你能不能回答x86_64最长的instruction有几个bits
这种google一下就可以出来的东西
举个最近发生的例子:LLVM X86 backend 的 code owner,Craig Topper 去年从
Intel 跳槽到 SiFive。他过去10几年都在跟 x86 backend 打混 (搞不好你问他
上面那个问题他还真的回答得出来),但是他现在在SiFive做的是...RISCV backend
X86 和 RISCV 两个天差地远的架构,但Craig还不是以 Staff 或 Senior Staff
engineer 身份被SiFive雇用。
: → VF84: 像 Chris Lattner 在 Apple 搞 swift,跳去 google 搞 12/03 16:25
: → VF84: Tensorflow,去年跳去 sifive 搞 riscv。最近还在弄什么 12/03 16:26
: → VF84: MLIR,compiler 能玩的东西可多的咧 12/03 16:26
准确来说他最近正在朝EDA进军XD 用MLIR做 hardware compiler
: 推 VF84: 像是游戏主机公司也有在请 compiler 的人。他们那里在做的事 12/03 16:29
: → VF84: 就跟硬件一点关系也没有,你可以去问问 CompilerDev 版主 12/03 16:30
恩...我相信 PS/Xbox compiler team 有人的确是做跟硬件无关的工作
但他们的业务有很大一部分是我喜欢称作 "hyper-optimization"的东西:
针对单一一个处理器把软件效能搾到极致(这也是为啥都已经2021年了他们还是
认为出console有钱赚)这部分就需要超出一般 compiler engineer 所需的
硬件知识了。准确来讲你不只需要了解ISA,还要知道同ISA但不同处理器
在细节上