簡體   English   中英

來自多個進程的並發GPU內核執行

[英]Concurrent GPU kernel execution from multiple processes

我有一個應用程序,我希望在多個進程之間共享一個GPU。 也就是說,這些進程中的每一個都會創建自己的CUDA或OpenCL上下文,目標是相同的GPU。 根據Fermi白皮書[1],應用程序級上下文切換小於25微秒,但是在GPU上啟動時啟動有效地序列化 - 因此Fermi不能很好地完成這項工作。 根據Kepler白皮書[2],有一種叫做Hyper-Q的東西允許來自多個CUDA流,MPI進程或進程內線程的多達32個同時連接。

我的問題:是否有人在Kepler GPU上嘗試過此操作並驗證其內核是否在從不同進程調度時同時運行? 這只是一個CUDA功能,還是可以在Nvidia GPU上與OpenCL一起使用? AMD的GPU是否支持類似的東西?

[1] http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf

[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf

在回答第一個問題,NVIDIA已經發布在博客上的一些超-Q結果在這里 該博客指出,移植CP2K的開發人員能夠更快地獲得加速結果,因為hyper-Q允許他們或多或少地使用應用程序的MPI結構並在單個GPU上運行多個級別,並獲得這種方式有效的GPU利用率更高。 正如評論中所提到的,這個(hyper-Q)功能目前僅適用於K20處理器,因為它依賴於GK110 GPU。

我從Fermi架構運行同步內核它運行得非常好,事實上,它通常是從硬件中獲得高占用率的唯一方法。 我使用OpenCL並且您需要從單獨的cpu線程運行單獨的命令隊列才能執行此操作。 Hyper-Q能夠從另一個內核中調度新數據並行內核。 這只是在開普勒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM