※ 引述《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但不同處理器
在細節上