2011/04/24

Krakatoa 2.0 全速前進!


這篇是由Maxscript大師Bobo祂的部落格發表關於新版的Krakatoa 2.0的效能提升, 由於不是正式的產品文所以比較口語 (比較難翻譯), 又提到很多數字(million, billion)加上邏輯性的段落, 增加了一點翻譯的困難度. 後段感覺是在替Fusion-io打廣告, 不過, 未來硬體速度絕對是CG特效的一個關鍵 (其實現在就是這樣). 到時後用固態硬碟做特效的時候, 應該會變得更有趣~

Enoy!

------以下為翻譯-----
原文網址點這裡
作者: BORISLAV PETROV (Bobo)
譯者: Hammer Chen

全速前進
發現我有好一陣子沒貼文了, 在Frost, Krakatoa's BFF發片前也沒有發文, 之前在拉斯維加斯待了至少四天, 展示Deadline, Krakatoa與Frost給大家看, 我想現在是寫寫關於未來發展的好時機...

你應該還記得我之前寫的: "多快才算快?" 關於Krakatoa 1.6, 那次的升級還不太可能會有明顯的效能躍進. 這樣想是沒錯,, 我也有數據支持這種說法 事實上, 下一版的Krakatoa會比從1.6到1.5的速度提升相比要多很多!

產生分割並載入PRT序列檔案, 是Krakatoa標準作業流程, 傳統上載入粒子的時間大約是算圖時間的一半. 有幾點因素會影響載入的速度: 一是硬碟的速度 (如果檔案存在網路硬碟), 二是網路傳輸速度 CPU的讀取資料的速度, 與將解壓縮的資料串流道記憶體的速度, 還有其它操作會影響到粒子載入速度, 如MagmaFlow與 Material evaluation, 或是形變與culling都會影響. 在以前, 後者的操作慢慢都支援多核心的計算,了 但是起始載入的動作還是只有兩核心的計算而已, 而且通常只會讓單核滿速.

現在不再有這個問題啦! 我很高興來測Krakatoa 2.0的alpha效能如何, 在不同的電腦配備與不同的硬碟資料量, 為了要測載入速度, 我先做了一個長寬高100的box 轉換成PRT Volume,, 然後分割 儲存到硬碟中分成100個分割組. 每一個分割都有一百萬個粒子, 請注意! 要載入每個有一千萬個粒子, 總共有10個分割檔, 這樣會產生多的開銷, 或者也可以一個分割檔, 包含了一億個粒子, 後者會比較快, 但是我想要做出比較最糟糕的狀況, 因為Krakatoa會受限於3dsmax本身, 而且這樣的測試方法還有個優點, 就是可以產生很多計算量讓每個CPU核心都能工作. 為了要模擬出一般的狀況, 我採用預設的頻道輸出, 位置, 速度, 法線, 顏色, 密度與ID. 縱使我平常不開速度或是ID這通道, 接著我產生一個PRT Loader, 載入100個分割, 放一盞spotlight.

到了實測階段, 首先我用了比較舊的電腦來測 (這台我們用在拉斯維加斯的NAB產展示Thinkbox功能, 配備是dual Intel Core Duo, 也就是四核心, 沒有Hyperthreading). 這台有一個7200 轉的硬碟, 兩個10000 轉的硬碟, 一個SSD硬碟, 還有一個Fusion-io卡 (固態硬碟). 這些硬碟都接在同一部電腦中, 這樣我就可以找到不同的儲存媒體對這個新軟體有怎樣不同的效應.

為了比較差異, 我先用了1.6.1版, 結果花了57.3秒載入一億個粒子, 花了兩分46秒算圖. 不管我用哪種硬碟都一樣, 因為載入的速度取決於PRT壓縮檔的核心讀取速度.

如果我用新版的Krakatoa 自7200轉的硬碟載入, 則花了38.2秒, 總算圖時間為兩分29秒. 這樣的速度提升不是很令人激賞, 但是有達到硬碟的物理極限了, 因為已經達到CPU存取的瓶頸了. 例如你有四核心 4線程(threads)的CPU同時讀取4個PRT串流資料, 硬碟沒有辦法跟得上CPU的速度!

而從兩個10000轉速的硬碟, 在硬碟的頻寬達到最大限度之前, 四核心的CPU才達到80%的運轉率而已. 測試載入一億個粒子時, 整個載入時間降到了16.1秒!相當棒! 當然囉, 如果用固態硬碟的話預期會有更高效能... 真的耶! 同樣的測試用固態硬碟載入時間僅花了11.2秒, 算圖時間為1分49.96秒, 而且四核心的CPU都完全滿載了. 如果我用更快的Fusion-io card進行實驗, 結果是跟故態硬碟一樣的載入時間, 一樣的算圖. 這樣的結果證明了我們達到了CPU的瓶頸(譯者註: CPU可以完全發揮效能的意思).

很感謝Fusion-io在NAB也有展覽, 我有機會用到八核心的電腦來測試水特效 直覺告訴我 CPU核心達兩倍時, 載入時間應該可以減為一半. 所以當我'載入1億個粒子, 才花六秒就載入檔案, 而算圖才花52秒, 我一點也不意外! 幸還是不幸, 所有八核心的CPU這時候都完全滿載了, 現在整個狀況反過來了---是CPU變成運算的限制, 而不是硬碟速度. 這樣個結果讓我更想用16或是32核心的電腦來看看Funsion-io固態硬碟真的能把Krakatoa發揮到怎樣的狀況?!

我的直覺是應該可以讓載入時間降到3秒 甚至更少, 可是當我真的用16或是32核心的電腦測試效能時, 還是可以接受結果啦. 照理來說, 好的SSD硬碟應該也可以跟得上8核心的電腦, 達到6秒的載入時間, 所以你不需要花買一部車的錢就可以達到好的效能.

新版的Krakatoa有幾個地方有加強效能, 用我家裡面的i7 quadcore電腦來測試 如閃電般快速地, 載入一億個粒子由舊版的12秒降到8秒, 而drawing時間由5秒降到4秒. 我的電腦不是很適合拿來做測試, 因為我的硬碟很慢, 所以你可以想像, 如果是用最新的電腦配備, 有很多的CPU核心, 有快速的SSD硬碟Krakatoa真的會在今年下半年飛起來呢!

當然, 這只是新版的Krakatoa牛刀小試而已, 等著看今年的Siggraph吧, 一定會很令人興奮! 至少我會很興奮啦...

---翻譯完畢---

[推薦文章]

No comments: