5nm process 將達到現在 製程極限

lovesharepc wrote:
以現實中來舉例程式能不能平行化

比如說蓋房子
你要先有組模型才能灌水泥
你不可能 組模型跟灌水泥同時進行
不過你是有可能把 模型交由好幾個工人一起處理...(恕刪)


蓋房子也許現場灌漿的,但大型工程比如高架橋之類的,都採用預鑄工法,RC橋面先在多個工廠預先鑄造好,在用大型載具搬到現場組裝,如此才能縮短工期。

不然混凝土的終擬+保養,需要數天的時間,否則強度會不夠,如果每次只做一小段就要等好幾天,加上天氣因素下雨天就不能施工,那麼蓋好一座高架橋恐怕要幾十年功夫。


其實這是工法的差別。

比方說一支手機,外殼、主機板、電池、各式零件,可以先在各個工廠做好,然後拿去生產線組裝。如此才有利於大量生產。

藉由工法的創新,原本無法平行化的工作,也能變成可以平行化。



比如電路生產線
你可以安排每塊電路上每個元件交由 2 人焊上
也可以安排 10 個人
不過 10 個人效率就未必比 2 個人好...(恕刪)


人腦和電腦機器的差別:

人會疲倦、會出錯,會偷懶。一個和尚挑水喝,三個和尚沒水喝。

電腦不會疲倦,不會偷懶,幾乎不會出錯,容錯機制、例外處理 可增加可靠性。

在人類的世界中,10個人去焊接元件,效率未必比 2個人好。

但是在電腦的世界中,愈多線程就是愈快的。

唯一有可能影響效率的考量是:資料量是否足夠大到需要多線程處理?

比方說:某一筆資料,單線程處理須 100ms,而打散成多線程處理需要花到 120ms,那麼這筆資料量太小,用多線程處理反而拖慢。



甚至也可以拿超級電腦舉例
如果程式(演算法)都可以做到完全平行處理
一張 40W 的顯卡 可以買 1W *40張 普通顯卡
但效能可能只有快上 3 倍
那超級電腦何需用什麼新的工作站繪圖卡 一張 40W 來提升效能
只要拿普通的顯卡一直並聯就好了


事實上超級電腦前 500大,超過 2/3 以上都是叢集式的

叢集式:由大量的「一般平價電腦」並聯組成一個分散式運算系統


泰坦 (超級電腦,當前第二名,美國)

以下資料節錄自 WIKI:
-----------------------------------------
整台泰坦共計18,688顆中央處理器和相同數量的圖形處理器,理論峰值效能是27petaFLOPS(每秒27×1015次浮點運算)

完整的泰坦超級電腦上有18,688個運算節點,每部刀鋒伺服器擁有四個運算節點,24部刀鋒主機為一個機櫃。
--------------------------------------------


京(超級電腦,當前第四名,日本)


以下資料節錄自 WIKI:
-----------------------------------------
系統配備了864個機櫃,88,128顆八核心富士通生產的SPARC64CPU,為45奈米的CMOS製程。它的水冷系統可以把故障率和能耗降到最低。
--------------------------------------------


天河二號(超級電腦,當前第一名,中國)


以下資料節錄自 WIKI:
-----------------------------------------
天河二號共有16,000個運算節點,每節點配備兩顆Xeon E5 12核心的中央處理器、三個Xeon Phi 57核心的協處理器(運算加速卡)。累計32,000顆Xeon E5主處理器和48,000個Xeon Phi協處理器,共312萬個計算核心。
--------------------------------------------


御風者 (超級電腦,2011年時是全球42名,台灣,國網中心)



以下資料節錄自 WIKI:
-----------------------------------------
「御風者」擁有25,600顆計算核心(AMD Opteron 12 Core 2200 MHz,每顆8.8 GFlops)、73,728 GB記憶體及1074 TB儲存,計算量每秒高達177兆次浮點運算(Tflops),相當於2萬台個人電腦。
--------------------------------------------


所有這些超級電腦,都是用一般電腦(零件市面上就有賣),成千上萬台,去組成叢集分散式運算系統。

附帶一提:
其上運行的軟體,只能是平行運算的軟體。否則沒有意義。

比方說:軟體如果只能跑單核心的,無法平行運算的,那麼放到這些超級電腦上執行,運行速度可能會比一般人家用電腦還不如。


lovesharepc wrote:
在程式的世界
也是同樣的道理
有些工作是需要前一級的工作完成才可能繼續
至於前一級的工作就不一定能拆分平行處理


如果一件工作,真的不能拆成平行處理,那倒也不必拆。

但假如這件工作,有成千上萬件要處理,讓每一件都平行處理依然可以增快。

電腦通常是用來處理:重複、繁瑣的工作。


比方說轉圖軟體,批次裁尺寸、批次銳化...之類的,我就不明白為何有些軟體要一張圖跑完,才要跑下一張。假如它可以一次跑多張圖的批次處理,那時間就可以節省好幾倍。

即便它在處理一張圖片的時候,無法平行處理,但有幾百上千張的圖片等著讓它處理,也不該是一張圖片處理完畢,才要去處理下一張吧。

像壓縮軟體(WinRAR、7zip 之類),就算只壓一個檔案,多核心 CPU 也可跑全速。估計它應該是先行計算要把檔案拆分成幾份,然後每份都同時壓縮,來達到平行處理加速。

就像網路下載檔案,有的伺服器可以多線程下載,一次分割10點下載的(一個檔案拆分成10份,同時下載),就會比單點下載快很多。

fedora wrote:

蓋房子也許現場灌漿的,但大型工程比如


我也想知道不能平行化的"大型程式"有哪一些?

上面樓層的朋友們可以舉一些例子來看看嗎?

常用的程式那麼多,舉一兩個應該很簡單吧!

直接舉出來,事實為證,大家也就不用吵來吵去嘍?


Whistle Blow wrote:
根本不是這個意思,f兄請別用腦補的..........簡單說:f兄的問題,在於開過五六部車、就認為自己懂車、懂引擎拆解維修跟設計組裝。地基都還沒有打好,要怎麼讓101樓頂的風阻尼器安裝先完工就定位?這不僅是指許多事務的根本循序性,還包括f兄目前對於電腦架構以及作業系統的基礎瞭解程度。


在M01認真回文前, 翻一下自己想回文的那個人之前發的文章, 再來決定自己要不要花時間回文.
如果自己也是打發時間那就當我沒說~

這是我真心的勸告....
與失敗為伍者,天天靠盃都是別人的錯。 與成功為伍者,天天跟失敗切磋直到不再出錯。
我覺得你重點錯了....


fedora wrote:
比方說一支手機,外殼、主機板、電池、各式零件,可以先在各個工廠做好,然後拿去生產線組裝。如此才有利於大量生產。

藉由工法的創新,原本無法平行化的工作,也能變成可以平行化。


你舉的例子是製造零件這階段平行化
但組裝這階段可不是平行的
例如你不會先把外殼裝好才裝主機板


fedora wrote:
人腦和電腦機器的差別:

人會疲倦、會出錯,會偷懶。


我說的不是這意思
人多會打結 甚至配得工作量極低 反而人與人之間會造成效率降低

今天把人換成機械臂
那你的想法會變如何?


fedora wrote:
事實上超級電腦前 500大,超過 2/3 以上都是叢集式的

叢集式:由大量的「一般平價電腦」並聯組成一個分散式運算系統


不用說 2/3
全部都是
因為這世界上的處理器沒有快到有一個能打全部
叢集式是必要的 這是增加效率的方法


還有 哪裡有 "一般平價電腦"
你列的例子沒有一個是市面上買的到的


fedora wrote:
像壓縮軟體(WinRAR、7zip 之類),就算只壓一個檔案,多核心 CPU 也可跑全速。估計它應該是先行計算要把檔案拆分成幾份,然後每份都同時壓縮,來達到平行處理加速。

這又是另外的問題
7zip 裡面有字組大小、字典大小
你切的越細 壓縮比越小
只有"決策"無法平行

處理資料是可以平行

有些決策可以轉成資料來處理

EX: 深藍VS 西洋棋棋王

有些決策不可以轉成資料來處理

EX: Online game 兩人PK

-------------------------------

單核極限不可能超過90G Hz (沒記錯的話...)
enm wrote:
答案可能大出你意外的...(恕刪)


戰地風雲4的代碼就是基於multi-core PCs去編寫的。

PS:這不是我說的,是DICE employee HonK_sWeMoB說的...

PS4/X1都是AMD Eight-Core APU Based主機。
所以多核Parallel是遊戲廠商努力的目標,而不是辦不到的
nvfans wrote:
戰地風雲4的代碼就是基於multi-core PCs去編寫的。

PS:這不是我說的,是DICE employee HonK_sWeMoB說的...

PS4/X1都是AMD Eight-Core APU Based主機。
所以多核Parallel是遊戲廠商努力的目標,而不是辦不到的。


玩家本人是否可以多核處理?

玩家本人的時間是否可以多核處理?

那玩家遊玩遊戲的過程是否也可以平行處理?

所以玩家前一秒在大街上作戰, 下一秒就在房間, 後一秒又去海上?
還是同時切割成三個畫面顯示三個地方?

決勝時刻4 現代戰爭裡面就有 SAS 跟美軍陸戰隊兩邊的劇情正在同時上演

應該也要進行平行處理讓玩家同時操作
而不是切割成好幾個小塊讓玩家分開遊玩?

這叫跳Tone.





yinhell wrote:
只有"決策"無法平行

處理資料是可以平行

有些決策可以轉成資料來處理

EX: 深藍VS 西洋棋棋王

有些決策不可以轉成資料來處理

EX: Online game 兩人PK




有些決策可以轉成資料來處理是因為有些決策只存在二分法或有限的選擇.

你舉的例子即是其一, 因為西洋棋步走法是有限的, 它的活動空間也是有限的.



但還有很多事情並不是只有單純的二分法或只有有限的選擇.

如果是這麼簡單, 為什麼電腦還會走輸棋王?

電腦可以從第一步就分支預測到最後一步了吧?



這就是平行化最後還是要走一圈回來面對的問題.

事情如果能這麼簡單, 人工智慧AI早就滿天下了...


lovesharepc wrote:
你舉的例子是製造零件這階段平行化
但組裝這階段可不是平行的
例如你不會先把外殼裝好才裝主機板....(恕刪)


這是當然

然而平行化主要處理耗時間的部份,組裝那是快速的

例如:高架橋的RC橋面,每一塊在工廠預鑄可能需要 1個月時間,吊去現場組裝只須1~2天。

又例如:手機中的各部位零件,工廠製造要幾小時~1天,生產線組裝僅須 10分鐘不到。

最佳化資料處理:
先把耗時間的部份平行化解決掉,無法平行化的部份就可以比較快。


包括前面有網友舉的 3D 遊戲例子,3D模型可以先在記憶體中計算繪出成型,備用。

人物的座標,那個就簡單的 x,y,z 座標數據

人物行為,姿勢1(站立)姿勢2(蹲下)姿勢3(衝刺跑步),姿勢A(開槍)姿勢B(重新上彈)姿勢C(揮刀),將其表格化,對應特定 3D 模型。

3D 模型(由三角形構成)才是耗計算的部份,可以在記憶體中先計算好備用。

座標、行為,一小段數據而已,比如:X,Y,Z,2,C = 解決。考慮到網路傳輸速度,數據封包根本不可能太大。


早期的線上遊戲,場景都是一區一區的,如果人物切換了區域,就要讀地圖,就會出現讀取條,需要等待的情況。

後來的線上遊戲,一個區域變很大,人物在上面走,幾乎不需要讀取地圖,無縫銜接。

那是怎麼辦到的?


把人物的視野想像成是一個立方體,這個立方體中必須有場景,而整個世界地圖可以由很多個立方體所構成。

就像一個九宮格,人物視野場景處在中央格的位置,而人物會移動,移動位置是可以預測的,人物無論怎麼移動,也就是從九宮格的中央格子位置,移動到鄰近的 8格。

所以軟體可以先把鄰近 8格的場景,預先算繪出來,放在記憶體中備用,這個叫做「預先載入」,如此便能達成:地圖無縫銜接。

那這和平行化又有什麼關係?

如前所述,以九宮格為位置參考,地圖場景預先載入,需要先算出鄰近8格立方體場景的模型,如果一次只造一格的場景,那會來不及,等8格都算好了,人物早就移動超過了。

必須8格一起下去平行運算,才來得及。這8格中誰先算好,誰後算好,都不重要,因為只是預先載入的,人物根本還沒在那裡。


以上舉例的只是一種遊戲平行化的思路、手法。其餘還有很多手法。

電腦 01 數碼世界,由於和現實世界不一樣,其邏輯和現實並不可相提並論。


有一部叫做《駭客任務》的電影,故事描述未來人類活在電腦創造的虛擬世界中。






虛擬世界是由 01 數據所構成的。

主角在虛擬世界中和人對打,他的身手敏捷與否,和他肌肉發不發達有關嗎?虛擬世界中需要呼吸嗎,為何主角打的喘噓噓。

這個就是說:0與1 的數碼世界,和現實世界是無關的。在那個虛擬世界中,如果用現實世界的邏輯思路,那思考就會受到侷限,程式效率就會受到侷限。


lovesharepc wrote:
不用說 2/3
全部都是
因為這世界上的處理器沒有快到有一個能打全部
叢集式是必要的 這是增加效率的方法

還有 哪裡有 "一般平價電腦"
你列的例子沒有一個是市面上買的到的....(恕刪)


那些 CPU 和 顯卡/運算卡 什麼的,國外購物網站都有賣

比如 Xeon E5、Opteron 6000系列 、NVIDIA Tesla K20X運算加速卡、雙路/4路 主機板....等等的。

對岸掏寶就有賣。美國很多購物網站也有賣。

台灣市面確實比較難買,台灣市場小。

fedora wrote:
我不是指 JVM 會...(恕刪)

Java的Thread只是切換工作而已
跟平行運算沒直接關係

enm wrote:
答案可能大出你意外的非常簡單到不能再簡單.

多數的遊戲都無法完全平行運算.

例如決勝時刻, 極速快感, 英雄連隊, 到戰地風雲... 太多了.
(恕刪)


很好,你說到重點了

時間軸前後的事物不能平行運算,因為有先後順序

就這樣看來,不能平行運算的東西似乎還蠻多的

但這些東西是不是占用相當大量的運算資源呢?? 換言之,這些東西是不是重點?

從你所舉的例子(遊戲)來看,很遺憾看起來是沒有

因為看ps4和xbox one就知道了

xbox one用的是

基於 X86-64架構AMD "Jaguar" 8 核心 1.75G

來源: wiki

看到了沒? 8個核心,頻率呢? 1.75G而己

玩起遊戲呢? 嚇嚇叫

再者平常組電腦,大家也只會說,i5比i3強,一個四核一個雙核

可是說到i5的型號,01版大部分都推最低頻率,為什麼?

因為跑起遊戲來,i5之間的差異很小,i5跟i3卻差異很大

你所寫的的確,時間軸前後不能平行運算

但這些如果跟本不是重點呢?

可能普通的小核心就能把這些事搞定了

大型程式,才需要大量平行運算

而這的確是今後的重點

小程式用什麼跑都一樣順,有差嗎?
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 8)

今日熱門文章 網友點擊推薦!