2015-09-06 16 views
0

在我看來,一個opencl命令隊列不會將命令調度到多個硬件隊列。因此,亂序命令隊列中的命令仍然是一個一個地執行,而不是按照它們排隊的順序執行?對AMD GPU有用的亂序命令隊列?

所以如果我想利用多個硬件隊列,我所能做的就是創建多個opencl命令隊列?

+0

我在hd7870上試過了,它在兩個實例(每個gpu)上的性能超過了它們自己的隊列的獨立上下文,而不是具有多個ooo cq的單個上下文。因此,具有多個ooo cqs的單個上下文會更好,例如同時3或4個cqs。 (與明確的會議點同步)。但他們在Nvidia上表示更好。 –

+0

很久以前,我做了很多測試。即使GPU使用率達到100%,實際性能也不會因不同的環境而有所改善。我想只是他們做測量的方式,他們將上下文切換的時間計爲有效的百分比。具有單個上下文的速度與多個上下文一樣快,即使在第一種情況下使用率未達到100%。 – DarkZeros

回答

1

OOO(無序)隊列可用於滿足用戶事件相關性的需求。在這種類型的應用程序中擁有單個隊列可能會導致阻塞的隊列等待永遠不會到來的用戶事件。並且爲每個作業創建一個隊列也是不理想的。

如果你想要並行性int執行,OOO不是你所需要的。但多個隊列。

一種常見的方法是使用IO的隊列和運行內核的隊列。 但是,您也可以在多線程處理方案中使用每個線程的隊列。每個線程的IO將重疊其他線程的執行。

注意:nVIDIA支持並行執行單個隊列中的作業,但這不符合標準。