精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

開發人員該如何對超級計算機進行編程?

責任編輯:editor006

作者:謝濤

2017-10-31 15:57:43

摘自:it168網站

在高性能計算領域,開發人員所需要的適應性尤為明顯,這里,開發人員通常需要對目標節點架構進行優化,以“擠出”最后一點可用的性能。未來,更多的核心包含將更廣泛的向量,以及更復雜的內存層次結構。

有些編程技術針對的是當前或者未來的超級計算機,雖然它們已經存在了很長時間,但現在很多開發人員并沒有對這些技術有一個清晰的概念和認識。

從上世紀六七十年代世界上首個超級計算機CDC6600被Seymour Cray研制出來起,超級計算機就成為了應用程序開發人員的另一目標,使開發人員不斷適應新的方法,和持續變化的硬件和軟件系統。在高性能計算領域,開發人員所需要的適應性尤為明顯,這里,開發人員通常需要對目標節點架構進行優化,以“擠出”最后一點可用的性能。

推薦:如何對一個超級計算機進行編程?

然后,20世紀90年代的“殺手微指令的襲擊”把一切都變成了一個小問題。隨著節點數量的增加,應用程序開發人員不得不考慮PVM(并行計算機),然后是MPI通訊協議,在他們的任務中,在沒有任何向量指令的情況下,將應用程序并行化到大量的節點上,這些節點包括商品的COTS (貨架產品)芯片。如下圖所示,從1995年到2010年,COTS芯片的時鐘周期減少了。應用程序開發人員不再需要關心節點架構。

推薦:如何對一個超級計算機進行編程?

隨著AVX256,AVX512,SVE和GPU的出現,在過去的5年里,矢量已經開始返回我們的視野。更近一點兒說,像英特爾的Knight ' s Landing(KNL)這樣的核心系統,以及附加的加速器,如Nvidia的GPU,都需要重新檢查應用程序,以從新的更強大的節點中獲得更好的性能。由于應用程序不可能總是由編譯器進行矢量化和/或并行化,因此應用程序開發人員必須做一些事情。

從編寫重要的內核到Nvidia GPU的CUDA等專業編程模型,到使用編譯器指令幫助編譯器將輸入的用戶級代碼轉換為處理器的低級矢量化代碼。然后還有一個問題,就是在節點/生成數千個線程上為GPU使用所有這些內核。因為在所有的節點上運行MPI是非常有效的,最初的多核系統的開發人員并不需要使用共享內存線程來并行化。然而,在Nvidia加速器上線程是絕對需要的。OpenACC和OpenMP 4.5是為GPU的線程化和矢量化解決方案開發的。

新體系結構中的另一個啟示是,內存層次結構變得越來越復雜,尤其是當應用程序具有很大的內存占用時。KNL,以及帶有GPU加速器的節點,有兩個級別的內存,這將引入新的挑戰,這些挑戰必須由開發人員員來解決。下圖顯示了KNL的內存層次結構和承載的GPU之間的差異。如果一個應用程序適合于高速存儲器,那么它將獲得優秀的內存性能。但是,如果應用程序需要更多的內存,那么必須將數據集以高效和及時的方式在兩者之間進行管理。

推薦:如何對一個超級計算機進行編程?

過去的四到五年對那些堅持提高生產力的開發人員來說是一種文化沖擊。他們現在面臨著有效利用這些新的強大節點的嚴峻挑戰。如果它們繼續使用全MPI代碼,并沒有對多層并行代碼執行必要的轉換(通過矢量化和線程化),那么它們的性能將只是節點數量和時鐘周期的一個函數。雖然節點上的核心數量正在緩慢上升,但這些核心的時鐘率正在下降,導致在沒有軟件優化的情況下,新硬件投資的回報率很低。

《混合/多核心MPP系統的編程》(Programming for Hybrid Multi / Manycore MPP Systems)一書中詳細討論了新節點的架構,以及開發人員可以使用的編程技術來提高性能。對于那些現在面臨著從節點的矢量能力來提高性能的巨大挑戰的開發人員來說,這將是非常有用的,同時也提高了GPU的核心或線程數量的增加。未來,更多的核心包含將更廣泛的向量,以及更復雜的內存層次結構。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 文昌市| 南平市| 博乐市| 上犹县| 察隅县| 互助| 轮台县| 交城县| 克拉玛依市| 晴隆县| 伽师县| 高淳县| 元谋县| 德清县| 江津市| 乳源| 汽车| 武乡县| 乌兰浩特市| 迁安市| 屏东市| 福清市| 敖汉旗| 锡林浩特市| 达州市| 贺州市| 醴陵市| 长丰县| 财经| 六盘水市| 青河县| 冕宁县| 苏尼特左旗| 屏边| 怀宁县| 柳林县| 晋城| 墨玉县| 额尔古纳市| 安岳县| 叙永县|