2011-09-24 61 views
4

我想知道,是否可以同時在多個GPU上運行多窗口OpenGL應用程序?更具體地說,我們假設我已經創建了一個應用程序,它具有兩個窗口,每個窗口在彼此之間共享GL環境。現在如果我將其中一個窗口從顯示器1(在GPU 1上運行)移動到顯示器2(在GPU 2上運行),這實際上可行嗎?單獨分享上下文會有訣竅嗎?OpenGL和多GPUs - 一般可能性

我的第一個猜測是否定的。如果這真的不那麼簡單,有沒有辦法做到這一點?我還可以想象,這取決於兩個GPU是否由同一個驅動程序控制(或者更糟的是,讓機器具有ATI以及nVidia卡,兩者都支持不同的GL版本)。

我很感謝在這個話題上的任何見解,純粹是信息性的,因爲我在快速的谷歌搜索之後找不到任何東西。有誰知道可能性?

編輯:順便說一句,不幸的是,我現在沒有可用的多個GPU的機器,所以我會測試一下。

回答

6

簡答:是的。

Long答案: Windows/Mac OS X:窗口總是由一個GPU更新,並且可能將像素複製到另一個GPU。

Linux:如果Xinerama處於關閉狀態,則無法在屏幕(GPU)之間移動窗口。如果Xinerama處於打開狀態,iirc至少會將nVidia驅動程序同時向兩個GPU發送GL命令,以便您可以移動它們。

有一些方法可以通過編程來控制GPU選擇和GPU-GPU拷貝。更多信息here

+1

感謝您的回答!常見問題回答了我的許多問題。而我關於上下文共享的想法實際上似乎是錯誤的。根據FAQ,上下文無法在多條管道上共享,因此在其他GPU上不可用。 – PuerNoctis

+1

你是對的,除了OS X.如果你在OS X上,我強烈推薦上一次WWDC的Multi-GPU對話。 – eile