Re: [問題] 程式在多核心架構下執行
※ 引述《freesamael (燒賣)》之銘言:
: ※ 引述《bookmarket (bookmarket)》之銘言:
: : 請問一下,現在應用程式或者系統程式怎麼跑在多核心架構下呢
: : 譬如說,現在有A、B兩個cpu,
: : 現在有兩個程式要執行分別是game和一個應用程式如word
: : 那麼這兩個程式是怎麼執行呢
: : 是由A cpu執行game,b cpu跑word嗎
: : 還是說另一種情況
: : game的程式中,有某一段程式碼(code area S)可以獨立出來執行
: : 那這樣game就分成兩邊跑
: : A cpu跑word,而B cpu跑 code area S嗎
: : 還是說上述說的情況都不是呢?
: : 麻煩各位指點一下
: : 謝謝
: 這是由作業系統的排程器決定的。不同作業系統的設計目標不同,所以排程器的設計
: 也會有差別,可能是以公平性為優先,也可能以回應時間為優先做設計。實際執行的
: 情況和當時的執行緒數量、執行緒優先權都有關係。
: 我手邊這本作業系統的書上說 Windows 2000 的多處理器排程方式是有 N 個處理器
: 的時候,擁有最高等級優先權的 N-1 個執行緒會使用 N-1 個處理器,剩下那些相對
: 低優先權的執行緒共享 1 個處理器。
: 對程式設計師而言,要有效利用多處理器/多核心處理器的方式就是將程式寫成 Multi-
: threading/Multiprocessing。在 Unix/Linux 上標準的作法就是透過 pthread(Multi-
: threading) 或是 fork(multiprocessing)。不過 fork 比較消耗資源,因為它會複製
: 整隻程式,相對於 pthread 付出代價大很多。
: 最近這幾年還有一個看起來滿有前景的 OpenMP API 可以用來做 parallel programming。
: OpenMP 因為能使用在 Unix/Linux 也能用在 WindowsNT,而且使用上比較簡單,因此
: 漸漸受到歡迎。Intel C/C++ Compiler 已經支援 OpenMP 很長一段時間,VC++ 2005
: 也支援 OpenMP 2.0,GCC 則是從 4.2.1 開始支援 OpenMP 2.5。
不是用了OpenMP 就代表你就可以增加效能, 多核CPU 就使用比較多.
能不能使用OpenMP 還是以問題為主, 另外當然是你對問題的拆解及資料結構的
拆解, 不然你要是整天Lock 來Lock 去, 也就是白搭了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.157.179
推
09/07 02:28, , 1F
09/07 02:28, 1F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章