我是如何用99分的線性代數日賺南非王思聰一萬元的($1,500)

如果看了我上次美國好人那篇的,就知道我還欠大家一個段子。單純從金錢上來說,這個比上次那個是要多一個數量級。現在趁我稍微有空一點,就在知乎上給大家講講,不然再過一個星期就又是忙成狗的節奏了。

一般知友可以當段子聽,有緣人大可以把這個套路學一學,也不收你一分錢學費。

Okay,先上一下我13年前的成績單,好歹我還是有一封真成績單的。

因為是申美國大學博士用的,所以開的是英文。沒有啥炫耀的意思,因為我物理學得也就這麼回事。但是注意到有幾門課程,我是全班或者全理學院第一的水平。然後我在接下來要講的段子裡面,這些課程里學到的知識和能力都有好好的運用。所以貼成績單想說明的重點是如果人要賺錢,先得有自知之明,知道自己的優勢在哪裡、劣勢在哪裡。

需要解釋的是大一下半學期大學物理力學這門課。我考98分其實不是因為我力學學得多好,而是因為教授葉邦角_百度百科也是我們理學院副院長別出心裁,讓大家做一個項目或者論文。然後呢,我就編程模擬分析了一下圓周運動和簡諧運動的對稱性和等價性。把小球諧振子彈簧繩索什麼的全畫出來然後可以輸入參數實時看著它們運動……這其實也沒有啥特別的。

特別之處是,當年我爸媽不給我買電腦,所以所有的工作我是在這玩意上弄的:

吐槽一句,鍵盤真TM難用。

所以力學98分只是說明我能用坑爹的設備做出還算靠譜的東西而已。當時沒有想到七年之後,我會用一張上一代架構的GT8800顯卡來吭哧吭哧CUDA賺錢,不過這確實是一種能力。順說副院長後來可能是破格給我簽了申請博士的推薦信,寫的也就是這件事。

另外一點題外話是,我六年前當時做的,是一個很低調、行規很嚴的行業,而且因為都是老外,更講這些。所以我至少簽了一打NDA或者保密協議。然後很多東西都是遠程連到別人主機或者集群上去弄的,然後全程被監控。

違反會有啥後果?知乎上有兩個類似的案例:

你見過哪些員工因為作死被開除的事情? - solomonhume 的回答 - 知乎

你見過哪些員工因為作死被開除的事情? - 沒有終點的回答 - 知乎

當然悶聲發大財也很有必要。和別人一說,人家表面上佩服佩服,心裡說你吹牛不打草稿是比較好的結果。不好的結果呢?

如何看待新聞:「中國在美留學生做甜點外賣,被當地開餐館的同胞舉報遣返」? - 美國 - 知乎

防人之心不可無啊。雖然我當時研究相關法律的結論是,中美的立法者腦洞都還沒有這麼大。所以我在美國這麼做是完全合法而且完全免收入所得稅的。

當然今年能給大家在這邊講這個段子,還是托JHU計算機系Ahmad教授的福。被他坑了以後,我本來還是相當淡定的,覺得以自己的水平,在美國找個年薪十萬的工作應該輕輕鬆鬆。所以我面子上還是對Ahmad很客氣的,在我把能做的都做了以後他也終於答應給我寫推薦信了。找工作可能還得需要兩個推薦人,一個我找的是物理系教我電磁理論也就是電動力學的教授,因為當時作為課堂論文,我寫了一個如果磁單極子存在Jackson這本書以及麥克斯韋方程組會變成怎樣,他還比較欣賞這個,給了我A+。另外一個,我就想到了南非這哥們(以下簡稱他G)。因為說實話,這單數目不是很大,再加上我們後面還混得比較熟。我就和他商量把保密協議取消了,正因為如此今天能公開和大家侃一侃。

(當然為了公平起見,補充一點。我後來發現美國找工作也坑了以後,沒有辦法的辦法,還多問了Amhad一句。他實在是不好意思,幾天以後和我說可以安排我去什麼鬼瑞士聯邦理工做實習,800歐元一個月,機票自理。我心裡呵呵——「寫程序這麼久,討價還價的也見過,這麼無恥讓人做白工的也就是您一個了」,然後嘴上感謝給機會外加婉拒。)

好的,下面段子開始。免責聲明是G告訴我的部分,我不保證真實性,我自己的事情可都是真的。然後對於考據黨,下面是G的公司的網站。公司和人過了這麼多年還在不在我不保證,反正網站還在

Adam Engineering

---

當G已經知道我是中國留學生後的某一天,他突然問了我一個神奇的問題:

「你用QQ么?」

我當時想到別的方面去了,正納悶呢。因為我平時和G用MSN溝通,都是得裝一個消息加密的插件的。用QQ不是要作死的節奏。

但是後來我發現G的意思是,QQ的公司,也就是騰訊,其實某種意義上是他的客戶,也就是我的客戶的客戶,一位南非高帥富家裡的。我並不知道高帥富叫啥名,方便且親切起見,下文就稱呼他為南非王思聰。說起來,因為知乎現在算是騰訊的,所以知乎也是南非王思聰家裡的哈。

思聰家裡很有錢,然後有錢人都有很多不太尋常的愛好。思聰的愛好之一是飆車。

但他丫不在賽車道上飆,而是在晚上十點以後,約翰內斯堡市區的大馬路上飆……

當時G和我說這個,我壓根不相信,心想這是《極品飛車7》玩多了分不清幻想現實了吧。

當然後來我知道了二環十三郎_百度百科,也還是只能默默承認現實生活比我們的想像還要奇幻。

對,所以思聰的日常就是賽車賭錢,然後賭錢賭紅眼了就賭車(兩邊誰賽贏了,誰把對方的車也一起開走)。然後各式跑車就常年不斷的從歐洲一輛輛裝集裝箱里用巨輪運過來。

當然要想贏,車是必須改裝的。換個輪胎、裝個一氧化氮加速什麼的其實都是小意思。最核心最核心的部分,是汽車的大腦ECU電控單元。這是一台小型的工業計算機,實時的從全車幾十個感測器讀取數據,然後對一些很關鍵的環節做一些控制,比如發動機氣缸噴油的時機和油量、比如剎車電子制動的力度和頻度。一般來說,原廠配置的設定,是以最優化安全和駕乘舒適為目的的。

所以其實,改裝車的很重要的一個部分,就是要把ECU刷機,把自定的、調教過參數甚至程序的ROM給刷進去,和我們現在智能手機刷機也差不多。不過手機刷壞了是變磚,跑車刷壞了,變磚都是小事,你信不信一踩油門開到一百邁以後突然給你出bug失靈?這個事,全世界有多少人能做我不清楚,但是當時南非就只有G的公司能做。

但是思聰才不要命呢……他只要贏

所以思聰就花了重金,請G給他專門做這件事情。單講裡面一環。ECU運行的ROM其實也和手機一樣,有一個小小的安全措施。所有的ROM都必須用廠家的一個密鑰來簽名,不然壓根沒法執行。這個簽名的演算法,對學密碼學的都是如雷貫耳的,但是正因為如此,我並不能公開說是什麼,總之知道這玩意還是美國對中國禁運的就行,所以夠先進。

重點在於G這邊也不是吃素的,不知道用什麼辦法,半暴力半經驗的把這個加密演算法解決了。他這邊有一套自己的程序,然後一個小型的集群,平均兩個月,能夠把這個密鑰給算出來。

一切到這邊還沒我什麼事。但是,2010年他們遇到了一點小麻煩。不知道怎麼回事,廠家那邊開始頻繁的更新密鑰了。所以新車到港以後,就只能在車庫裡吃灰等著這邊算出來。平均是兩個月,意思是運氣好兩周,運氣不好半年。思聰輸了幾場比賽,心情不是很好,看在合作了這麼久的份上責成G務必儘快解決這個問題,不然他就費神去找南非以外的高手了。

G也有點慌,就開始上天入地的四處問這玩意怎麼解決。終於終於,他一個合作夥伴的合作夥伴,也是我當時另外一個客戶,和他說nVidia新推出的CUDA技術,可以利用顯卡的並行計算能力,或許能夠更加高效的解決這個問題。然後就把美國的AADPS,也就是我當時的皮包工作室(本來想寫皮包公司的,不過當時其實壓根也沒有公司),推薦了過去。

G就抱著試一試的想法給我寫郵件。然後他當然不會把他那個完整的程序給我,而只是給了我一小段——一個兩百行的C語言的PoC,或者Proof of Concept(我現在也不知道中文怎麼翻譯這個)。就讓我給他寫個報告,說清楚怎麼樣能讓他這個程序在顯卡上跑起來。當然他當時是壓根沒提思聰的事或者這個PoC到底是幹啥的。

我是下午兩點吃中飯回來以後收到G的郵件的。一看樂了,心想這事太好辦。首先先設計演算法,相當於得把32個key candidate編成一組,然後n組同時算,n取決於實際使用的顯卡性能。然後這樣就都是矩陣運算,我接著發現通過一個不算太複雜的變換,可以把矩陣給對角化,減掉了一半運算量。然後當時CUDA有四種kernel對顯存的模型,兩種完全不搭,那麼另外兩種我都試了一下。然後CUDA C的CPU模擬器我也試了一下。還有一點就是當時CUDA怎麼樣在內存顯存直接交換數據這個解決得不是特別好,但是我自己是已經有一個現成的方案,所以也省事。

當然你可能完全看不明白我上一段講了啥。所以用比較文藝一點的講法,劉慈欣《三體》裡面不是有二維化么?我做的事情相當於反過來,把二維的東西三維化,憑空添加一個維度。

晚上十點收工,把報告發回去。總計3頁源代碼,4頁用官方的profiler進行的性能分析報告外加和原始的C語言程序進行對比(對C語言我自個弄了一個簡單的profiler框架),2頁是我那個內存顯存數據交換小訣竅以及針對本具體案例的最佳實踐。

G那邊看了以後一拍大腿,立即回郵件說很滿意很感謝按照之前商量的付錢。然後就開始一個個打電話:讓手底下程序員向「聰明的美國佬」學著點(他當時還以為我是美國人),迅速把程序準備好、讓熟悉的硬體行老闆把一批主板、CPU和新出的GTX295留下來、讓機房準備好場地網線工程師。五天之後,一切就緒正式開始算。G就忙自己的工作去了。第六天一早被手機吵醒,發現是新CUDA集群的自動通知——key已經算出來了,耗時13.8個小時!

思聰,重振雄風!

---

段子講完了。關於我這個賺錢方法,與其說是難,不如說是巧。是要兩個一般情況下互斥的條件都同時達到。

一方面,寫英文email要寫得和美國大計算機公司的美國程序員一樣,然後別主動暴露自己身份。我之前不明白這點的時候坑了蠻多回的。事實上換位思考一下也很明白,假定你是美國人要外包到中國,你是選BAT程序員給你弄,還是找某大學的黑人留學生給你弄?

另一方面,你需要專精一門有巨大潛力但還沒有什麼人會搞的新技術(CUDA是個好例子,而且我當時實際情況是同時弄好幾個方向。但是換現在弄CUDA肯定不行,該弄什麼自己去研究,我也不知道)。前些日子看到知乎上評論有人搞兩個月六萬培訓全棧工程師。但問題在於,這個世界上三腳貓全棧大有人在,但真正需要人解決的問題,很多可能也真不容易找到合適的人來解決。

怎麼達到這兩個條件?自己想辦法。我會祝你好運,但是沒興趣沒時間幫助你。就算你給我錢我也還是沒興趣沒時間。所以別誤會,我只是單純想講段子而已。

當然,其實我回國之後也可以繼續一直這麼干。美國地址和銀行賬號什麼的都是小問題。不過我不幹的真正原因是——

我TM不想再裝美國人了。我想用我的真名實姓、真才實學堂堂正正的賺錢。


推薦閱讀:

用一句話告訴我你來自哪個州|政治非常不正確的美國偏見地圖
TAMU(德州農工大學)的訪學生活
美國大學名校的水項目有哪些?

TAG:留学美国 | CUDA | 程序员 |