首頁>Club>
本人在軟體方面是外行。懂一點等離子體和particle in cell模擬。目標是做大規模並行的等離子體數值模擬。
14
回覆列表
  • 1 # feelingtheworld

    假設題主的前提是軟體不做修改或並行編譯最佳化的話,單核程式放在多核上跑,能不能提升效能?這個要看你的軟體是怎麼寫的。

    如果你的程式中只有一個工作執行緒,那麼多核沒有幫助,效能還是由多核中的單核效能決定的。如果你的程式有多個工作執行緒,那麼作業系統會將不同的執行緒排程到不同的核上執行,能提升一定的併發度。但是通常情況下多個執行緒之間還有一些同步處理,這樣不可避免要用鎖,那麼執行緒並行執行時間就由最慢的那個執行緒決定。

    所以,想要充分發揮多核的效能,還是有些事情要做的。一個是並行編譯最佳化,intel提供了並行編譯最佳化軟體,可以把類似for迴圈這樣的語句並行化執行。但這個最佳化幅度是優先的。

    更好的方式是程式碼做最佳化,把大的計算任務切分成各自獨立的計算任務,然後用多執行緒來並行處理。這樣能提升單個系統上的執行效能。

    但是,按照題主的需求,多核還不一定能滿足要求,需要多主機才行。題主提到的巨型計算機通常都是多主機組成的。當然也有大型機、小型機這種超高效能的單系統,但這種系統成本是高昂的,而題主的需求更適合用多臺伺服器來做分散式並行處理。這種情況下就要編寫分散式並行執行的程式碼。可以基於一些成熟的分散式併發框架來開發,例如hadoop。hadoop主要做了兩件事:一個是高速分散式檔案系統用於超大資料集的快速訪問。一個是mapreduce,簡單來說就是把一件事分解成很多件事並行處理,然後再彙總結果。

  • 中秋節和大豐收的關聯?
  • 怎樣才能考研英語的成績?