2011 LLVM Developers’ Meeting 3/4

Copyright (c) 2011 陳韋任 (Chen Wei-Ren)

DSC01449
午餐時間。聖荷西是中午,我不知道台灣時間是幾時了。總之,吃飯就對了。由左至右依序是: 洋芋片、醬料、綠色捲心麵、巧克力薄荷糖、礦泉水和三明治。

午飯過後,我四處逛了一下。首先是隔壁桌兩位上海 ARM 公司的工程師和一位當地 AMD 的中國女性工程師,我和她在早上第二場見過面。話說,東方臉孔一開口就先講英語,這有點不對頭。下次先問問對方會不會說中文。會說中文但又全程講英語怪怪的。

Google 的廖世偉 (Shih-wei Liao) 和 MTK 的唐文力 (Luba Tang) 在這邊有個 MC Linkers BOF 要主持。我趁這個機會去拜訪一下,但是只有遇到廖世偉老師和他從台大帶來的學生,我跟他們聊了一下就離開了。之後有遇到在當地 Nvidia 做編譯器的中國工程師。看了一下時間,MC Linkers BOF 已經開始了,我趕緊過去捧個場。
DSC01450
台上是穿橘色衣服的是廖世偉老師,站在門邊穿黑衣服的是唐文力。主要的主持人是唐文力。BOF (Birds of a Feather) 在這裡指的是非式的討論,主要是希望大家一起腦力激盪,提出各種可能方案並討論其優劣。最好的結果是能討論出一個共識,以免分散大家的精力。

抱歉,接下來的 Android Renderscript 有點恍神,沒照到像。這場因為前面 MC Linkers BOF 的 delay,我只能聽到後面結尾的部分。我想它的 abstract 講得算是頗明白了。下一場我選 Register Allocation in LLVM 3.0。在這兩場的中間有海報展示,並有提供下午茶點。可能是因為時差的關係,我真的很想睡,喝了多少咖啡都沒用。Register Allocation in LLVM 3.0 這一場並未提及 LLVM 3.0 新版 greedy register allocator 的運作方式。講者主要是說 spilling 在他的觀點來看比較重要,我想是相較於 register allocation。另外也提到 register allocation 不僅僅只做 register allocation,還有其它的優化也可一併做掉,印像中主要跟 spilling 有關。我想說這一場的講者其低沉嗓音真的讓我很想睡,我真的撐不住。
DSC01454
Dragonegg 的作者 Duncan Sands,因為我也送過小 patch 給他,所以過來捧個場。他在 IRC 上的代號是 baldrick,我常在 IRC 上跟他聊天。他在 ML (Mailing List) 上也很活躍。這一場是 Super-optimizing LLVM IR。主要是想自動找出某些 LLVM 應該優化卻沒有優化的代碼片段,之後再以人工實現那些優化。這邊他提到 AST 上的 type 和 value 應該設定成最小值,比如說 i1 和 i4 應該選 i1 作為 AST 節點上的型態,之後進行查找,看能不能找出應該優化卻沒有優化的代碼片段。最後他給出優化前後的效能比較。很可惜,並非每一隻 benchmark 都有效能上的增長。即使是最應該拿到 performance gain 的 const propagation 都有例外。他的解釋是做完 const propagation 之後,branch 的情況有變,進而影響效能。這部分的分析我不很確定,必須要等錄影和投影片上傳到 2011 LLVM Developers’ Meeting 之後才能確定。

最後我選 Backend/Infrastructure Super BoF 做為今天最後一場議程。這一場主要是 AMD 的工程師和 PTX 後端的作者提出他們在實作上的問題,似乎是在尋求比較正式的解法,或者是說 LLVM Infrastructure 是否有哪些地方需要調整以滿足他們的需求。在這一場議程一開始的時候,我找了個 Justin Holewinski (PTX 後端目前主要的作者) 附近的座位坐下,然後很冒失的遞上我的名片。我很高興他認得我。剛巧 Dan Bailey (PTX 後端目前主要的作者) 也坐在 Justin Holewinski 旁邊,我趕快再遞上一張,他也認得我。

在離開會場前去晚宴之前,我想找 Duncan Sands 見個面。一樣,我也很冒失的遞上我的名片。一開始,他還不清楚我是誰。後來他看了一下我的電子郵件帳號,問我是不是在 IRC 上的跟他聊天的那一個。BINGO! 他從他皮包裡拿出一張名片 (可能是僅有的一張) 給我,並說他很少用這個。在一起聊天的還有 Nadav Rotem,Intel OpenCL SDK Vectorizer 的作者,當然還有其他人,不過我只認得他。這時候大家開始掏名片了,趁機再遞上一張名片給 Nadav Rotem。

這時候聊的比較非技術性。Duncan、Nadav 和其他人討論父母親那一輩所生子女個數會不會影響到他們這一輩所生子女個數。Duncan 說他有這樣的一個假說說是會有影響,他老婆那一邊兄弟姊妹不計其數,而他這邊兄弟姊妹不多,所以他跟他老婆就只有生四個,算是取中間值。印象中,Nadav 要不是獨生子就是沒有很多兄弟姊妹,他的小孩也不多。Duncan 轉過頭來問我說你有幾個小孩。我回答他說我還沒結婚。他接著問我兄弟姊妹多少,我說中間。他再問我我打算生幾個,我還是說中間 (我想生三個)。ㄜ…,算是贊成 Duncan 的假說了。Duncan 這邊的聊天散場之後,我去找 MTK 那一組人,我打算晚宴就找會講中文的一起吃,省的尷尬。

2011 LLVM Developers’ Meeting 2/4

Copyright (c) 2011 陳韋任 (Chen Wei-Ren)

DSC01440
奇妙的感覺,我置身在 LLVM Developers’ Meeting,不再是看著事後的錄影檔。台上是 Chris Lattner 給的開場致詞,說明近年來 LLVM 和 Clang 開發的情況。當然,數字不是那麼完美,所以大家就莞爾一笑帶過。我比較早進到這個會場,那時候 Chris 在台上準備。我以為他是打雜的,但是又覺得他很面熟。這時候才想起來他是 Chris Lattner。今年有三個 parallel session,有人提議明年改成兩天的議程,降成兩個 parallel session 免得有遺珠之憾。
DSC01444

第一場我選 Extending Clang。這一場是在講如何 hook Clang 把自己想要做的功能加進去,講者是以改善編譯時期的錯誤輸出訊息當作例子。
DSC01446

第二場我選 PTX Back-End: GPU Programming With LLVM。我有送幾個小 patch 給講者,當然要過來捧一下場。這一場主要是講 PTX 後端目前的情況,以及針對 PTX 這種 virtual ISA 實作後端有怎樣的問題,最後以和 Nvidia CUDA 編譯器的效能比較作結。PTX 有無限多個暫存器,在實作上講者提出了幾個方法。最後選擇輸出 LLVM virtual register,最後交由 Nvidia PTX 組譯器做 register allocation。我前方這一位是 Tanya Lattner,Chris Lattner 的老婆,挺著個大肚子。她在前座當 session 的 moderator,負責提醒講者時間限制,這是志願職。
DSC01447
第三場我選 Integrating LLVM into FreeBSD。講者提到要將 GNU 工具鏈完全從 FreeBSD 剔除需要哪些工作,以及目前的進度。估計最快在 FreeBSD 10 能夠用 Clang 當作預設系統編譯器。
DSC01448
第四場我選 LLVM MC In Practice。台上較年輕的是 Owen Anderson,台下較為年長的是 Jim Grosbach。他們分別有自己的部分要講。這部分講到將組譯器 (assembler) 整合進 LLVM 有什麼好處。之前是依賴 GNU 的組譯器,gas。JIT 架構也要改寫,改成 MCJIT。這裡主要是將以前各個元件共通但又自己有一份的部分整合在一起,這樣對維護和除錯比較好。

以上是早上的場次,接下來是午飯時間。

2011 LLVM Developers’ Meeting 1/4

Copyright (c) 2011 陳韋任 (Chen Wei-Ren)

DSC01435

Morning! 櫃檯的 morning call 被我按掉之後,我又躺回去睡了。直到窗外太陽把我曬醒,差不多快九點。隨便洗把臉,換上衣服就前往二樓大廳。
DSC01437
在接待處領取名牌。
DSC01650
背後有兩張飲料兌換券,晚上吃飯時可用。今年免註冊費和飯錢。前一天有 hacking session,有興趣的人可以參加。有任何問題都可以寄信問主辦單位,包括是不是免註冊費和飯錢。
DSC01438
噢,食物最能振奮人心。
DSC01439
左邊近似於三明治,但是包得很像春捲。其實這應該要用刀叉切成一塊塊,但是我直接用手拿。右邊是多種麵包、果醬和奶油。飲料有各式果汁和咖啡。
這裡擺放幾張小圓桌,你可以把食物放在上面。早餐其實就算是大家 social 的時間,大家會聊一下你從哪裡來,做的是什麼樣的工作,或是工作內容那裡跟 LLVM 有關。我英語口說能力,尤其是日常會話應該要加強,聽力倒是能抓個大概的意思。和我同桌的三個人,一個是做金融交易系統,一個是做 LunarGLASS,最後一個是 32bitmicro 的 president。做金融交易系統的說之前華爾街某個交易員錯按交易金額導致市場恐慌,所以他們做的系統應該要如何如何。我們聊天內容主要圍繞在金融交易。很可惜,我主要負責聽。