※ 引述《璉璉 <devil@tainan.com.tw.x>, 看板: Programming》之銘言:
: 目前一般程式在執行時,也是在同一核心執行,除非利用多緒自動分到不同 cpu
: 你的程式若沒有多緒,是要怎樣平行運算?再怎樣模擬,頂多 VM OS 自己跑多核,
: 你的程式還是在單核上運作。
:
1. 假設單緒程式碼, 存在著可以變成多緒可利用多核平行/併行處理的成份.
2. 再假設這個平行/併行特性於程式碼執行時, 仍然可以被檢測出來.
3. 進一步再假設這個檢測的算法可以不必再依靠額外的其他硬體裝置或者
存在有這種輔助的裝置就能及時或耗費不多的, 在進一步執行前就能偵
測出來.
舊的程式雖然沒寫成併行多緒的形式, 但平行/併行的特性若仍然可以被偵
測出來, 就存在著可以改善的機會.
: ==> 本文由 "Hi hi <saler.bbs@bbs.cis.nctu.edu.tw>"
: > 於 news:4iScdh%24yPU%40bbs.cis.nctu.edu.tw 發表
: > ==> 在 lkerr.bbs@ptt.cc (kerr) 的文章中提到:
: > > 不知道po在這個版上會不會不適合,由於有一些古老的程式, 沒有原始碼,
: > > 程式沒有對多核心作最佳化, 那有沒有方法在作業系統之上, 建立一個虛擬
: > > 單核環境, 實際上這個虛擬環境卻有效利用多核心的效能, 這樣就能不用更
: > > 改程式卻能大大提升程式的效能, 作業系統可以是windows 或 linux
: > > 不知有沒有這樣的解決方案, 感謝
目前應該是沒有明顯的這類工具可以拿來使用
: > 程式執行的效能,如果是依照作業系統模擬出來的環境來執行,
: > 應該效能不太會提升太多,主要是穩不穩定
: > 因為要提升效能 主要還是程式碼的演算法是否用對。
: > 儘管作業環境是由另一個多工環境所模擬支援,
: > 但是,若只是程式的執行檔執行,
: > 所模擬環境應該會讓程式以為是當初的那個環境
: > 我覺得該擔心的不是效能,而是模擬的環境是否穩定
:
改用多核是想要提高速理速度, 當然, 結果是一定要正確.
穩定或不穩定是指那個項目 ?
是指偶而會變得失控發飆, 有解變無解, 做不到要求嗎 ?
還是指會掉入 dead lock , 永遠跑不出來 ?
假如是擔心多緒併行一定會用到同步機制, 有同步機制就有 dead
lock 的可能性存在. 問題就變成是否有 dead-lock free 的單緒
變多緒轉換法存在 ? 這個確實是該事先思考的問題.
但是, 這是一個已知的可執行的循序程式碼, 會被拿出再用, 必然
是該程式是可被控制在能正確操作使用的範圍. 所以其中的一個正
確的, 跟相依性有關的可執行次序會是已知的, 參照這個正確的相
依性次序, dead lock 就可以被強制解開. 因此, dead lock free
的必要性可以減弱.
============================================================
多核已經是比單核多出了一些硬體部份, 但可能還有一些額外的硬體
機制需要增多或增強以確保 "及時"的偵測與分派/啟動工作 給多核.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.4.12