toplogo
Logg Inn
innsikt - 計算機網絡 - # GPU發起的OpenSHMEM通信

英特爾(R) SHMEM: 使用SYCL的GPU發起的OpenSHMEM


Grunnleggende konsepter
本文提出了Intel SHMEM,一個支持在SYCL環境中使用OpenSHMEM通信API的C++軟件庫。Intel SHMEM實現了分區全局地址空間(PGAS)編程模型,並包括了當前OpenSHMEM標準中的大部分主機發起的操作。它還包括了可直接從GPU內核調用的新的設備發起的操作。
Sammendrag

本文介紹了Intel SHMEM的設計和實現。Intel SHMEM旨在為Aurora超級計算機系統和其他緊密耦合的GPU系統提供低延遲和高吞吐量的通信。

Intel SHMEM的核心功能包括:

  1. 支持OpenSHMEM 1.5標準兼容的主機和設備API,包括點對點遠程內存訪問(RMA)、原子內存操作(AMO)、信號、內存排序和同步操作。
  2. 支持與OpenSHMEM 1.5 teams API一致的集體操作。
  3. 支持SYCL工作組和子組級別的RMA、信號、集體、內存排序和同步操作的設備API擴展。
  4. 提供一組完整的C++函數模板,取代了當前OpenSHMEM規範中的C11通用例程。

Intel SHMEM的實現利用了Aurora系統的Xe-Link網絡,在主機和設備之間進行高效的通信。它還提供了一個主機代理線程,用於支持跨節點的GPU發起的操作。此外,Intel SHMEM還包括了一些針對GPU的擴展API,以更好地利用GPU的並行計算能力。

本文還提供了Intel SHMEM在RMA和集體操作微基準測試中的性能評估結果,展示了其在延遲和吞吐量方面的優勢。

edit_icon

Tilpass sammendrag

edit_icon

Omskriv med AI

edit_icon

Generer sitater

translate_icon

Oversett kilde

visual_icon

Generer tankekart

visit_icon

Besøk kilde

Statistikk
在小到中等消息大小(最多4KB)的情況下,Intel SHMEM的性能優於L0基準測試ze_peer,因為GPU上的Intel SHMEM代碼可以直接執行加載或存儲到目標PE,從而避免了GPU複製引擎的啟動延遲。 對於大於4KB的消息大小,基於複製引擎的傳輸表現更好。 對於1MB以上的消息大小,Intel SHMEM的性能與L0相當。 對於工作組級別的Put操作,隨著工作項數量的增加,性能可以得到提高,因為可以利用更多的資源。 對於集體操作fcollect_work_group,對於小到中等數量的元素(約1K以下),內核發起的直接存儲操作優於主機驅動的複製引擎傳輸。對於更大的元素數量,選擇反向卸載以使用複製引擎傳輸更好。
Sitater

Viktige innsikter hentet fra

by Alex Brooks,... klokken arxiv.org 10-01-2024

https://arxiv.org/pdf/2409.20476.pdf
Intel(R) SHMEM: GPU-initiated OpenSHMEM using SYCL

Dypere Spørsmål

如何進一步擴展Intel SHMEM以支持不同供應商的GPU,實現跨供應商的GPU執行?

要進一步擴展Intel SHMEM以支持不同供應商的GPU,實現跨供應商的GPU執行,可以考慮以下幾個策略: 標準化API接口:首先,Intel SHMEM應該遵循一套標準化的API接口,這樣可以確保不同供應商的GPU都能夠兼容。這包括對OpenSHMEM標準的全面支持,並在此基礎上進行擴展,以便能夠適應不同GPU架構的特性。 利用SYCL的跨平台特性:由於SYCL本身是一個跨平台的編程模型,Intel SHMEM可以進一步利用SYCL的特性來支持其他供應商的GPU。這意味著在設計時要考慮到不同GPU的內存管理和計算模型,並提供相應的適配層。 開發通用的後端驅動:可以考慮開發一個通用的後端驅動,該驅動能夠根據不同的GPU供應商自動選擇最佳的執行路徑。這樣,開發者在使用Intel SHMEM時,無需關心底層硬件的差異,從而簡化了開發流程。 社區合作與開源:鼓勵社區合作,開放源碼,讓其他供應商的開發者能夠參與到Intel SHMEM的開發中來。這樣可以集思廣益,促進不同供應商之間的協作,從而加速跨供應商支持的實現。

除了RMA和集體操作,Intel SHMEM還可以如何支持其他OpenSHMEM功能,如原子操作和同步操作?

除了RMA(遠程內存訪問)和集體操作,Intel SHMEM還可以通過以下方式支持其他OpenSHMEM功能,如原子操作和同步操作: 原子操作的擴展:Intel SHMEM可以實現對各種數據類型的原子操作支持,包括整數、浮點數和自定義數據類型。這可以通過利用GPU的硬件原子操作指令來實現,從而提高性能和效率。 同步操作的優化:在同步操作方面,Intel SHMEM可以設計高效的同步原語,例如使用輕量級的鎖或條件變量來實現多線程之間的協調。這些同步原語可以在GPU內部進行優化,以減少延遲和提高吞吐量。 支持多種內存模型:Intel SHMEM可以支持多種內存模型,包括一致性內存模型和非一致性內存模型,這樣可以根據不同的應用需求選擇合適的內存訪問策略,從而提高性能。 集成其他庫的功能:可以考慮與其他高性能計算庫(如MPI或CUDA)進行集成,從而利用這些庫中已有的原子操作和同步機制,進一步擴展Intel SHMEM的功能。

除了GPU發起的通信,Intel SHMEM是否還可以支持其他異構加速器,如FPGA和神經網絡處理器?

是的,Intel SHMEM可以擴展以支持其他異構加速器,如FPGA(現場可編程門陣列)和神經網絡處理器。具體可以通過以下方式實現: 擴展API以支持FPGA和神經網絡處理器:Intel SHMEM可以設計新的API接口,專門針對FPGA和神經網絡處理器的特性,這樣可以使得這些加速器能夠利用Intel SHMEM的通信功能。 利用異構計算框架:可以考慮將Intel SHMEM與異構計算框架(如OpenCL或oneAPI)結合,這樣可以在不同的加速器之間實現高效的數據傳輸和計算協同。 支持多種內存類型:Intel SHMEM應該能夠支持不同類型的內存,包括FPGA的片上內存和神經網絡處理器的專用內存,這樣可以確保數據在不同加速器之間的高效傳輸。 開發針對特定加速器的優化策略:根據FPGA和神經網絡處理器的特性,開發針對性的優化策略,以提高在這些加速器上的性能。例如,對於FPGA,可以利用其並行處理能力來實現高效的數據流處理。 通過這些措施,Intel SHMEM可以實現對多種異構加速器的支持,從而擴大其在高性能計算領域的應用範圍。
0
star