2012-10-01 69 views
9

我有一個應用程序,我想在多個進程之間共享一個GPU。也就是說,這些進程中的每一個都會創建自己的CUDA或OpenCL上下文,並以相同的GPU爲目標。根據Fermi白皮書[1],應用級上下文切換時間小於25微秒,但啓動會在GPU上啓動時有效地進行序列化 - 所以費米在此方面效果不佳。根據開普勒白皮書[2],有一種叫做Hyper-Q的技術,允許來自多個CUDA流,MPI進程或進程內的線程的多達32個同時連接。來自多個進程的並行GPU內核執行

我的問題:有沒有人在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

+2

在回答你提出的第一個問題時,nvidia在博客上發佈了一些hyper-Q結果[here](http://blogs.nvidia.com/2012/08/unleash-legacy-mpi-codes-with -keplers-超q /)。 –

+0

有趣,感謝您的鏈接。那篇博文也暗示K10 GPU沒有Hyper-Q,而K20會。 –

+0

這是正確的。你會注意到你在標題中發佈了引用「GK110」的開普勒白皮書鏈接。 K20上的GPU是GK110。 K10上的GPU是GK104(其中兩個)。 –

回答

7

響應於該第一個問題,NVIDIA已發表在博客here一些超-Q的結果。該博客指出,移植CP2K的開發人員能夠更快獲得加速結果,因爲hyper-Q允許他們按原樣使用應用程序的MPI結構,並在單個GPU上運行多個等級,並獲得這種方式更高效的GPU利用率。正如評論中所述,這個(超Q)功能目前僅在K20處理器上可用,因爲它依賴於GK110 GPU。

+0

感謝羅伯特,這對第一個問題很有幫助,我想我必須繼續尋找其他人。 –

-2

我已經從Fermi體系結構運行同步內核,它的工作原理非常奇妙,事實上,通常是從硬件獲得高佔用率的唯一方法。我使用OpenCL,並且需要從單獨的cpu線程運行單獨的命令隊列,以便執行此操作。 Hyper-Q是從另一個內核中派發新數據並行內核的能力。這隻在開普勒。