作者 | 陳大鑫
最近一年,計算機圖形學正在迎來產業新浪潮,各路計算機圖形學大神紛紛創業成立新的公司。
然而這里面最引人矚目的還得屬今年年初,出身清華姚班、MIT博士畢業的胡淵鳴團隊創建的太極圖形。

身為一家初創企業,想要一直保持競爭力,就必須要不斷的成長。
那么這半年多來,太極圖形發展如何呢?太極編程語言又都取得了哪些最新進展呢?
金色九月(9月4日),為了讓開發者更加真實更加近距離的來了解太極,太極圖形于北京中關村創業大街舉辦了一場面向開發者的技術交流盛會。
太極圖形的聯合創始人和核心開發人員們親臨現場,同步 Taichi 編程語言的最新進展,并與所有參會的開發者們面對面交流,會前參會者踴躍報名,會中參會者積極提問,更是有近千位同學在線上觀看了當天的直播。毫無疑問,這是一場 Taichi 開發者知識與思辨的盛宴。
太極簡史
大會伊始,聯合創始人兼 CEO 胡淵鳴為大家回顧了一遍太極圖形精彩的前世今生。

2016年春天,胡淵鳴第一次萌生了打造“可重用圖形基礎設施”的想法。考慮到優秀的圖形基礎設施將會創造無數個虛擬世界,胡淵鳴決定將項目命名為“太極”:“太極”在中國傳統哲學中意指“宇宙最原始的狀態”,并且其英文“Taichi”已經廣泛被非漢語母語者接受,為未來的國際化發展奠定基礎。
轉眼5年已經過去,Taichi 已經由一套C++庫變成了完整的編程語言和編譯器、胡淵鳴也從清華姚班的一個大二本科生成長為了一個創業公司的CEO。
下圖的時間軸詳細地展示了太極從項目奠基到公司成立壯大的發展歷程。

許多人通過知乎上《99行代碼的冰雪奇緣》知道了Taichi,只需要99行代碼就可以寫一個簡單的連續介質模擬器,模擬三種相互作用的不同材料(水,果凍,雪),效果逼真。時隔一年又半載,太極軟件工程師展示了最新的3D版“冰雪奇緣”,即 Taichi 基于GPU 的高性能 GUI 解決方案。GGUI可以直接獲取位于 GPU 上的太極物理仿真數據進行交互,并直接在GPU上進行渲染,實現了渲染性能的大幅提升。
Taichi Zoo上演示的2D“冰雪奇緣”—Yuanming Hu
實時3D MPM仿真—Dunfan Lu
被廣泛認可的太極
太極的愿景是希望打造一個世界級的開源圖形基礎設施和云平臺,讓圖形計算惠及每一人,使命是解放創造力。太極的團隊來自麻省理工學院,哈佛大學、微軟、谷歌、Facebook等頂尖的學府和企業,有超過半數的同學本科來自清北,2/3的同學擁有海外經歷。開源是刻在太極基因里面非常重要的一點,太極是全球最大的開源平臺Github 上面最受關注的圖形計算基礎設施項目之一,也是一個由中國人主導的GPU編程系統,擁有世界范圍內的影響力。
從外界認可方面來看,太極獲得了紅杉資本數百萬美元的天使輪投資和中國計算機學會 2020年度最佳圖形開源軟件獎。
商業方面,太極和快手進行了合作,使得太極的基礎設施能夠切切實實的讓每一個手機上面有 GPU 的同學可以去體驗到太極的美妙,可以享受到實時物理仿真,給他們生活帶來樂趣。
?
有近百萬用戶快手用戶拍攝并上傳基于太極開發的魔法表情特效,其特效被2000多萬快手用戶觀看到。
在此發展過程中太極也收獲到了來自學術界和產業界眾多積極良好的反饋。
如快手 Y-tech 圖形 AI 團隊負責人馬重陽表示:
太極編程語言和傳統的GPU編程方式比起來極其容易學習,即使是實習生也能在 1小時內基本掌握。并且,太極程序一次開發后,可在 iOS、Android、PC等多平臺運行... 滿足了快手魔法表情快速迭代的需求,對繁重的設備部署工作起到了很好的加速作用。谷歌的資深研究科學家 Alexander 表示:
我經常抱怨類似 Numpy 的框架(如Tensorflow、JAX、PyTorch)在新型計算任務下不夠高效,今天我 benchmark了Physarum這個任務;Tensorflow 耗時 11.9 秒,但是 Taichi 只要240毫秒,Taichi 快了40~50倍,并且代碼更加可讀。中國計算機學會CG&CAD 專委會表示:
Taichi(太極)為整個仿真行業注入了新的力量,對于領域和學科的發展有很好推動作用。太極也擁有非常強的國際影響力,其內核算法和衍生應用頻繁在最近的圖形學和機器學習會議上出現... 代碼規范,文檔充足,并且維護人數正在變多,經評委會嚴格評審及討論,一致認為 Taichi 開源軟件獲得2020年度 “圖形開源軟件獎”。麻省理工學院的博士生 Jie Xu表示:
當我們在參加 MIT 斯隆商學院的金融工程課時,需要求解一個高維動態規劃以來為金融產品定價時。編寫 C++ 甚至CUDA的巨大工作量讓我們望而卻步。好在太極提供了一個極其方便的 GPU 并行編程方案,使得我們的代碼不但比C++快了兩個數量級,而且更加容易編寫、維護。活動當天,美國、中國香港、杭州的三位太極用戶在線上進行了實例分享:用太極編寫不可壓縮流體模擬器(如卡門渦街仿真)、太極在SLAM上的牛刀小試以及用太極實現雙向光線追蹤積分器(BDPT)。
卡門渦街-Zhuo Wang
這三位來自計算流體力學、工業機器人和圖形學的工程師分別展示了太極在各自研究領域內的應用,笑談道“以前用C++實現很勸退的,現在用太極容易很多”。除了易用性的增強,太極朝并行編程語言發展的潛力也逐漸在更多領域凸顯。
Taichi編程語言的格局正在從“Graphics Programming for Everyone” 向 “Parallel Programming for Everyone”逐漸展開實例 1: 用Taichi編寫不可壓縮流體模擬器 (基于FVM和SIMPLE格式) from 包乾不可壓縮流體是流體仿真中最基本的一種計算類型,也是很多更為復雜流體的計算的基礎。作者采用不可壓縮流體仿真中普遍被采用的有限體積法(FVM)和SIMPLE算法,實現了用Taichi語言在二維管道內的非定常流體模擬,并通過添加障礙物的形式觀測到了卡門渦街的產生和發展。通過本項目,作者展示了Taichi語言在流體計算方面的易用和高效特性,并探索了工程流體仿真和計算機圖形學流體仿真的區別與聯系。實例 2: Taichi在SLAM上的牛刀小試 徐浩
SLAM全稱為Simultaneous localization and mapping,即實時定位與地圖構建,對移動機器人/無人機/自動駕駛/eVTOL等至關重要。使用Taichi進行mapping的SLAM后端,能夠快速遍歷特定層次、實現“免費”的并行加速,并可專注于算法實現。實例 3: 如何用Taichi實現一個雙向光線追蹤積分器 林耀冬 雙向路徑追蹤方法相比傳統單向方法,能更好模擬各種光學現象,但由于算法流程復雜,很少有并行實現的開源代碼。本項目利用了太極上手簡單,自動并行的特性,使用500行左右代碼,實現了雙向路徑追蹤的并行版本,大大節省了搭建該算法原型的時間。
本次大會設置了互動性極強的技術實戰環節—用太極實現N-body仿真,并講解了Taichi編程語言的基本語法。從為電腦裝載太極程序開始,太極圖形編譯器架構師張愛玲手把手帶觀眾編寫自己的第一個太極程序—彈簧-質點仿真游戲。幾十位觀眾抱著電腦當場開碼,全神貫注宛如考試現場。太極圖形的軟件工程師們遍布各個角落給大家答疑,當場有十多名同學成功完成實戰,最快的一位同學僅用時40分鐘。
太極圖形開發者大會上,太極圖形聯合創始人兼CTO匡冶正式發布了在線實時創作分享平臺 Taichi Zoo(beta)。許多同學在電腦前自行體驗了一番,在Taichi Zoo中只需簡短地編寫代碼、調整參數,點擊編譯,就可以立馬看到自己調試的動態效果,還可以將自己的作品一鍵分享給同伴。
“嘗鮮地址”:zoo.taichi.graphics
本次大會現場有6位太極圖形的軟件工程師進行了技術進展分享,展現了太極在易用性的提升:包括動態field的添加刪除、緊密排布的內存優化、集成測試上的完善等等。
1、GGUI: Taichi基于GPU的高性能GUI解決方案 from 盧敦凡
本演講介紹了GGUI:太極基于GPU的高性能GUI解決方案。GGUI可以直接獲取位于GPU上的太極物理仿真數據進行交互,并直接在GPU上進行渲染,這使得GGUI可以高效地渲染。2、Packed Mode: 有效降低 Non-power-of-two Fields 的內存占用 from 徐毅本演講主要介紹了Taichi新特性Packed Mode的設計。在Packed Mode下,Taichi不會自動將Field每一維的大小對齊到二的次冪,因此能有效降低本身大小不是二的次冪的Field的內存占用。本次演講詳細分析了二的次冪在Taichi Field實現過程中的使用(包括內存排布、坐標映射、Struct For到Range For的轉化等),并講解了如何不利用二的次冪進行等價的實現。3、Dynamic Indexing: 運行時自由訪問向量與矩陣元素 from 方燠張量計算被廣泛運用在物理仿真,真實感渲染和模型處理等多個領域。Taichi編程語言針對張量必須使用常數下標的這一限定,在優化性能的同時,也給代碼實現增加了額外的限定,生成過量指令減緩編譯。演講從地址訪存的角度出發,探討了針對不同的變量類型,如何全面地支持動態下標,使太極語言更加完善。4、 Taichi的CI/CD系統 from 張家聲Taichi作為一個社區的開源項目,是如何搭建起自己的CI/CD系統的?本次演講主要分享了Taichi在搭建CI/CD的過程中遇到的問題以及解決方案。5、與社區共建Taichi的Vulkan GPU后端 from 余暢本演講主要分享了太極社區的開發者們如何協作完成Taichi Vulkan GPU后端的建設,在這個過程中遇到了一系列工程問題及解決方案,同時介紹了Taichi對于Unified Device API的未來規劃。6、Dynamic SNodes:在運行時靈活添加、刪除Taichi Fields from 劉劍成本篇演講主要內容為介紹Taichi的新特性——動態申請和回收field。演講基于簡單的案例,簡要分析了如何在Taichi中聲明和使用數據結構SNodeTree,和Taichi是如何在即時編譯以及運行時將聲明的SNodeTree利用起來達到訪存的目的的。在此之上,講解了如何使用開發的FieldsBuilder類進行動態申請與回收field,并剖析了它在Taichi中的實現細節,分析了這種實現的優勢,和已知的局限性,展望了未來可供進一步開發的方向。活動當天,太極開源社區共建計劃、2022校招及太極圖形課第一季也重磅官宣。太極人從辦公室走到了用戶中間,聆聽所有的問題和建議,Taichi 也從高性能的編程語言走向了越來越廣闊的世界。
太極圖形 B站觀看大會回放(持續更新中):https://space.bilibili.com/1779922645
雷鋒網雷鋒網雷鋒網
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。