在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用高級編程技術加速HPC (1/2)

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-10-22 18:47 ? 次閱讀

在之前 博客帖子 我談到了使用任務并行編程模型來提高多核計算節點的性能和系統利用率的機會。 任務分配所面臨的主要挑戰是不同計算線程之間的負載不平衡,以及叉連接并行模型有效利用并發執行的局限性。 結果表明,在來自不同供應商的多個處理器中,使用任務分配共享內存代碼具有更好的縮放和性能。 性能改進在10%到20%之間,執行時間降低了35。 這些優化導致更快的模擬周轉時間,加速了全球高性能計算(HPC)用戶的科學進步。

該研究的重點是共享內存并行執行在一個節點的計算使用 OpenMP。 開放MP是HPC中共享內存并行和加速器卸載的第一并行編程模型。 然而,大型超級計算機不是單一的共享內存系統,而是一組計算節點,每個節點都有自己的內存,通過高帶寬、低延遲網絡連接。 消息傳遞是這種分布式內存系統的首選編程范例。 消息傳遞接口 MPI是HPC分布式內存系統的主要并行編程模型。

大多數科學和工程應用都使用純MPI策略并行化,其中來自參與計算節點的每個計算線程都工作在總域問題的子域中。 在MPI的上下文中,每個計算線程被稱為MPI進程或秩。 將一個大域劃分為分布在不同等級之間的較小子域的技術稱為域分解。 通常,這種分區需要在域空間中作為鄰居的行列之間交換子域邊界數據。 在這種情況下,相鄰的等級通過使用MPI接口發送和接收邊界數據來交換消息。 然而,純MPI策略不是利用節點內并行性的最佳選擇。 應用程序對負載不平衡變得更加敏感,因此重疊應用程序階段和線程變得復雜。 它們使用不必要的顯式消息進行通信,而不是使用共享內存空間。

之間最近的協作工作 巴塞羅那超級計算中心 and Arm Research 報告的經驗,任務的自適應網格細化代碼從 美國Exascale計算項目在開放MP和MPI級別。 本文發表了實現共享內存和分布式內存庫的互操作性的性能結果和收獲“ 面向自適應網格細化應用的數據流并行化 ”他說 IEEECluster 2020會議。 本文詳細介紹了任務分配方法,該方法利用自動全疊負載平衡和通信計算重疊來實現更好的縮放、更高的系統利用率、效率和性能。

MPI開放MP

在深入研究先進的編程技術之前,除了純MPI方法外,我們還需要介紹科學代碼中使用的基本編程策略。 最常見的替代方案是混合并行編程。 將MPI和Open MP結合起來,使大規模的科學代碼并行化,為開發兩個世界的最佳代碼提供了一個機會,同時減輕了它們的弱點。 混合MPI Open MP應用程序創建一組MPI級別,然后每個級別都可以執行一組OpenMP線程。

通常,科學應用具有迭代算法。 迭代通常在模擬中執行一個時間步驟,其特征是對數據進行操作的計算部分,以及一個通信部分,其中等級交換下一次迭代的更新數據。 通常,在混合MPI開放MP代碼中,計算部分具有所有MPI級別中的所有OpenMP線程,通信部分具有MPI級別傳遞消息。 通信部分通常由主線程串行執行(下圖中用藍色顯示)。 這種簡單的方法通常在混合編程的上下文中被命名為fork-join。

MPI具有完全并行和固有的局部性優勢。 MPI應用程序中的所有級別從初始化到執行結束獨立運行。 它們在數據的私有分區或副本上工作,從而防止不必要的共享數據問題。 另一方面,Open MP本質上是串行的,并且只在并行部分上打開并行性,這些并行部分處理共享數據。 它還可能受到遠程緩存效果和一致性工件的影響,例如錯誤共享。 開放處理共享數據的MP具有避免數據復制以進行消息傳遞的優點,因為所有線程都可以訪問數據的單個副本。 將這兩種方法結合起來,允許包含MPI級別,以利用合并消息傳遞模型在分布式內存系統中進行通信,每個級別運行OpenMP輕量級線程,利用共享數據,減少了總體數據復制需求。

程序員肯定可以按照類似的方案使用Open MP編程。 它們可以自始至終具有完整的并發執行,并在仍然訪問共享數據的同時跨線程分發工作。 然而,不幸的是,采用自下而上的方法與Open MP并行是一種常見的做法:并行單個循環并將串行部分保持在中間。 這就規定了所規定的比例限制 Amdahl的法律.

混合應用程序中等級的常見配置是每個計算節點一個等級,或每個非Uniform內存訪問(NUMA)節點一個等級。 在MPI級別中打開MP線程,通過共享內存空間中的共享數據結構隱式通信,而不是交換MPI消息。 利用每個NUMA節點的一個秩通常會提高數據的局部性,因為給定秩中的線程訪問相同的NUMA節點的內存。 從不同的NUMA節點訪問內存會在線程之間帶來顯著的內存延遲差異,從而導致不平衡的場景。

MPI和Open MP之間的互操作性

這種混合模型提供了這兩種模型的優點,但在表中留下了機會。 異步傳輸(例如,MPI_Isend/MPI_Irecv)等特性通過允許一些通信和計算重疊來提供混合模型的一些好處。 然而,具有全局同步的fork-join模型(如圖1中綠色所示)限制了計算-通信重疊的數量,并允許在不同級別的不同迭代中執行的重疊。 為了脫離fork-join模型,并允許開發更高級別的并行性,以及任務分配提供的異步計算和通信,MPI和OpenMP庫需要一起工作。

這種互操作性今天不存在。 兩個庫相互獨立工作,兩者之間的編排由程序員負責。 在當前的MPI和OpenMP標準中,在并發任務中執行MPI通信操作(例如,并行交換子域邊界的任務)是兩者 危險的 and 不稱職的.

一方面,從并發任務中調用阻塞MPI函數是不安全的。 注意,阻塞MPI操作會阻塞MPI庫內的當前線程,直到操作完成。 圖2說明了這個問題。 我們假設一個混合應用程序具有兩個MPI等級:一個實例化多個并發任務以發送不同的數據塊,另一個實例化相同數量的并發任務以接收數據。 我們還假設它們調用常見的阻塞MPI_Send和MPI_Recv方法來發送和接收每個塊,并且每個塊數據消息都被標記為其塊標識符。

如果通信任務的數量大于可以運行任務的OpenMP線程的數量,則程序可能掛起,在這種情況下,OpenMP線程的數量是每個級別兩個(每個核心一個。 這是因為通信任務是并發的,所以OpenMP調度程序可以根據調度策略和執行情況自由地決定它們的執行順序。 由于不能保證兩個級別的執行順序相同,運行中的任務可能試圖交換一組不同的塊。 這將阻塞MPI庫中兩個級別的Open MP線程,從而引發死鎖情況。 請注意,當OpenMP線程在MPI庫中阻塞時,OpenMP線程調度程序無法知道線程已被阻塞,因此無法在該核心上調度另一個OpenMP線程。 因此,核心不能同時執行其他“準備”通信任務。

圖2:缺乏MPI開放的MP可操作性可能導致MPI調用任務的死鎖

另一方面,從任務中發布MPI操作通常是低效的。 通信任務需要人工數據依賴,以定義所有級別的相同執行順序,并防止以前的死鎖情況。 非阻塞MPI操作(例如,MPI_Irecv)的執行,它啟動操作并返回一個MPI請求,以檢查其稍后的完成情況,很難管理內部任務。 用戶將負責手動檢查MPI請求,在大多數情況下導致算法效率低下。

任務-軟件MPI(TAMPI)庫

The 任務-軟件MPI(TAMPI)庫 目的是克服所有這些限制,允許安全和高效地執行阻塞和非阻塞MPI操作,從任務內部,在開放MP和 OmpSs-2 任務型模特。 在調用阻塞MPI函數的任務(例如,MPI_Recv)的情況下,庫暫停任務,直到操作完成,允許其他“就緒”任務同時在該核心上執行。 該庫還為所有非阻塞MPI函數(例如TAMPI_Irecv)定義了TAMPI變體)。 這些函數是非阻塞和異步的,將調用任務的完成綁定到它們所表示的相應的非阻塞操作的最終確定(例如,MPI_Irecv)。 該函數立即返回,以便即使MPI操作尚未完成,任務也可以完成其執行。 當任務執行完成時,任務被認為是完成的,所有掛起的MPI操作都完成了。

圖3:HPC軟件堆棧與MPI和開放MP互操作性通過TAMPI。

我們在下面的代碼中展示了如何使用TAMPI支持進行非阻塞操作的示例。 程序同時接收并使用任務并行處理多個整數。 第一個任務是接收機,它調用TAMPI_Irecv函數開始接收操作。 這使得任務完成取決于接收操作的最終完成。 注意,它聲明了對用于接收數據的緩沖區的輸出依賴(即數據將寫入緩沖區)。 當操作仍在進行時,TAMPI函數可能會立即返回,因此緩沖區不能在那里被消耗。 相反,我們可以在下面的后續任務中使用它,該任務將緩沖區作為輸入依賴項。 這樣,當MPI操作最終完成時,TAMPI庫將透明地完成接收任務并滿足消費者任務的輸入依賴。 這將最終運行以消耗接收到的數據。 這樣,TAMPI庫允許開發人員與多個任務并行執行高效和安全的通信。

int recvdata[N]; MPI_Status status[N]; for (int i = 0; i < N; ++i) { #pragma omp task out(recvdata[i]) out(status[i]) { int tag = i; TAMPI_Irecv(&recvdata[i], 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &status[i]); // non-blocking and asynchronous // recvdata cannot be accessed yet } #pragma omp task in(recvdata[i]) in(status[i]) { check_status(&status[i]); consume_data(&recvdata[i]); } } #pragma omp taskwait

通過利用OpenMP或OmpSS-2等任務分配模型和TAMPI庫,我們可以對大多數應用程序進行有效的任務化,包括計算和通信部分。 這導致計算和通信的有效重疊,這是任務分配模型固有的。 然后,開發人員可以集中精力公開他們的應用程序的并行性,而不是擔心低級方面,例如任務發布的MPI操作的處理,這些操作隱藏在TAMPI中。 這種策略還可以通過任務化高級函數來實現自上而下的并行化策略,而不是在叉接方法中看到的低效的自下而上策略。

運用我們的方法

到目前為止,我們已經探討了MPI和OpenMP之間缺乏互操作性所帶來的問題,以及它如何阻礙MPI級別的任務分配。 我們還討論了提供在TAMPI中實現的這種互操作性的建議。 在里面 這個博客的第二部分我們研究了如何將所提出的方法應用于自適應網格細化應用。 由此產生的代碼使用任務跨MPI和開放MP與重要的加速高達12288核心。

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3638

    瀏覽量

    94000
  • HPC
    HPC
    +關注

    關注

    0

    文章

    324

    瀏覽量

    23862
收藏 人收藏

    評論

    相關推薦

    HPC云計算的技術架構

    HPC云計算結合了HPC的強大計算能力和云計算的彈性、可擴展性,為用戶提供了按需獲取高性能計算資源的便利。下面,AI部落小編帶您了解HPC云計算的技術架構。
    的頭像 發表于 02-05 14:51 ?62次閱讀

    云計算HPC軟件關鍵技術

    云計算HPC軟件關鍵技術涉及系統架構、處理器技術、操作系統、計算加速、網絡技術以及軟件優化等多個方面。下面,AI部落小編帶您探討云計算
    的頭像 發表于 12-18 11:23 ?182次閱讀

    云計算和HPC的關系

    盡管云計算和HPC在架構、應用場景和成本效益等方面存在顯著差異,但云計算和HPC之間并非孤立存在,而是相互補充、協同發展的關系。下面,AI部落小編帶您探討云計算和HPC的關系。
    的頭像 發表于 12-14 10:35 ?177次閱讀

    ADC的FMC接口協議支持VITA 57.1 FMC1 HPC CONNECTOR嗎?

    ADC芯片評估板的FMC接口協議支持VITA 57.1 FMC1 HPC CONNECTOR嗎?
    發表于 12-13 14:03

    IBM與AMD攜手部署MI300X加速器,強化AI與HPC能力

    舉措預計將于2025年上半年正式推出。 此次合作的核心目標是提升通用人工智能(AI)模型的性能與能效,并為企業客戶提供高性能計算(HPC)應用的強大支持。AMD的Instinct MI300X加速器憑借其
    的頭像 發表于 11-21 11:07 ?306次閱讀

    維諦技術(Vertiv):未來HPC,你想象不到的酷炫變革!

    隨著AI技術的迅猛發展,高性能計算(HPC)也迎來了新的變革浪潮。在2024全球超級計算機Green500排行榜上,位列前三的超算都采用了“超智融合”的技術理念。超級大腦+AI,科技新CP引領科研
    的頭像 發表于 10-30 11:12 ?319次閱讀
    維諦<b class='flag-5'>技術</b>(Vertiv):未來<b class='flag-5'>HPC</b>,你想象不到的酷炫變革!

    云計算hpc的主要功能是什么

    云計算HPC(High-Performance Computing)是指利用云計算技術來實現高性能計算的一種解決方案。云計算HPC將高性能計算能力以云服務的形式提供給用戶。
    的頭像 發表于 10-22 10:20 ?258次閱讀

    HPC云計算前景

    高性能計算(HPC)與云計算的結合,正逐步成為推動科技創新和產業升級的重要引擎。隨著數據規模的不斷擴大和計算需求的日益復雜,HPC云計算展現出了巨大的潛力和價值。
    的頭像 發表于 10-16 10:17 ?280次閱讀

    云計算hpc是什么意思

    云計算HPC(High-Performance Computing)是指利用云計算技術來實現高性能計算的一種解決方案。
    的頭像 發表于 10-15 10:01 ?391次閱讀

    工業機器人的四種編程(示教編程、離線編程、自增強現實編程編程)剖析!

    和工作量,提高編程效率,實現編程的自適應性,從而提高生產效率,是機器人編程技術發展的終極追求。本文將就機器人編程技術的發展作一介紹,希望能給讀者帶來一些啟發。對工業
    的頭像 發表于 08-30 12:14 ?3182次閱讀
    工業機器人的四種<b class='flag-5'>編程</b>(示教<b class='flag-5'>編程</b>、離線<b class='flag-5'>編程</b>、自增強現實<b class='flag-5'>編程</b>主<b class='flag-5'>編程</b>)剖析!

    在多FPGA集群上實現高級并行編程

    今天我們看的這篇論文介紹了在多FPGA集群上實現高級并行編程的研究,其主要目標是為非FPGA專家提供一個成熟且易于使用的環境,以便在多個并行運行的設備上擴展高性能計算(HPC)應用。
    的頭像 發表于 07-24 14:54 ?1407次閱讀

    助力科學發展,NVIDIA AI加速HPC研究

    科學家和研究人員正在利用 NVIDIA 技術將生成式 AI 應用于代碼生成、天氣預報、遺傳學和材料科學領域的 HPC 工作。
    的頭像 發表于 05-14 09:17 ?464次閱讀
    助力科學發展,NVIDIA AI<b class='flag-5'>加速</b><b class='flag-5'>HPC</b>研究

    DE1-SOC進行硬件加速2D N-Body重力模擬器設計

    該項目的目標是創建一個DE1-SOC進行硬件加速2D N-Body重力模擬器。
    的頭像 發表于 04-09 11:08 ?644次閱讀
    <b class='flag-5'>用</b>DE<b class='flag-5'>1</b>-SOC進行硬件<b class='flag-5'>加速</b>的<b class='flag-5'>2</b>D N-Body重力模擬器設計

    碩博電子推出一款基于CoDeSys3.5編程技術的高性能主控制器

    碩博電子自主研發的移動控制器SPC-SFMC-X2214A,采用了CoDeSys3.5編程技術,為分布式應用場合提供了理想的主控制器解決方案。
    的頭像 發表于 03-01 11:34 ?1286次閱讀

    什么是HPC高性能計算

    高性能計算(HighPerformanceComputing,簡稱HPC),是指利用集群、網格、超算等計算機技術,通過合理地組織計算機資源以及運用適合的算法和程序,提高計算效率和處理能力,實現對大量
    的頭像 發表于 02-19 13:27 ?949次閱讀
    什么是<b class='flag-5'>HPC</b>高性能計算
    主站蜘蛛池模板: 香蕉视频在线观看黄 | 日本一本一道久久香蕉免费 | 99热热热 | 免费一级欧美片在线观免看 | 久久精品视频99精品视频150 | 久久夜色tv网站免费影院 | 天天色天天拍 | 国产馆精品推荐在线观看 | 国产精品一级毛片不收费 | 天天爽天天 | 99午夜| 三级成人影院 | 六月丁香婷婷天天在线 | 天天操天天操天天射 | 狠狠燥 | 伊人久久大香线蕉综合爱婷婷 | 2021天天躁狠狠燥 | 永久在线免费 | a男人的天堂久久a毛片 | 人与牲动交xxxxbbb | 一级特级aaaa毛片免费观看 | 老师叫我揉她内裤越快越好 | 天天插天天插天天插 | 手机看片福利日韩 | 日本中文在线三级在线播放 | 成人男女啪啪免费观看网站 | 久久免费视频99 | 国产专区青青草原亚洲 | 美女免费黄 | 天天摸天天摸天天躁 | aaaaa级毛片免费视频 | 无限国产资源 | 丁香婷婷基地 | 国产美女视频黄a视频免费全过程 | 羞羞答答xxdd影院欧美 | 国产一级特黄在线视频 | 在线成人免费观看国产精品 | 国模娜娜扒开嫩木耳 | 欧美成人免费草草影院 | 视频在线h | 成人综合网站 |