2013-01-18 77 views

回答

1

試圖將渲染命令並行排隊到GPU沒有任何好處。渲染在GPU上已經並行發生,並行地發送命令只會在驅動程序中產生很多開銷,必須檢查命令流中的同步點並可能需要重新排序。

另外多線程OpenGL操作很難得到正確的結果。

+0

同意,我想說的是試圖允許多個CPU線程同時訪問PCIe總線到顯卡最有可能不會比單個線程更好,因爲只有一個線程將真正成爲能夠一次訪問該IO總線。 – trumpetlicks

+0

@trumpetlicks:對PCIe來說並不是那麼糟糕,因爲PCIe在具有特定數據包長度的所謂「事務」中執行所有操作(實際上有一整套長度,但實際上它們很短)。多個線程可以交錯處理這些事務。所以這主要是一個帶寬問題。但是在任何寫得很好的OpenGL程序中,無論如何都要首先將幾何圖形上傳到GPU RAM,然後使用單個命令觸發整個渲染批處理。 – datenwolf

+0

完全同意打包(並讓GPU執行幾何結構的並行處理等),但是PCIe總線的帶寬(+開銷)比即使是1個核心要慢得多(RAM比PCIe快得多並且它仍然可以在單個線程停頓到內存的時候停止運行),擁有多個內核(或HT中的線程)嘗試訪問該總線會在大多數時間內使大多數線程處於阻塞狀態。收集所有數據發送到GPU並嘗試以更少但更大的數據包發送(因此開銷更少)要好得多。 – trumpetlicks

0

試圖讓多個CPU線程同時訪問PCIe總線到圖形卡最有可能不會比單個線程更好,因爲只有一個線程將真正能夠一次訪問該IO總線。