簡體   English   中英

在不使用互操作性的情況下並行運行CUDA和OpenGL

[英]Running CUDA and OpenGL in parallel without using interoperability

我正在使用nVidia Tesla C2050 GPU構建實時信號處理和顯示系統。 該設計使信號處理部分可以作為單獨的程序運行,並使用CUDA進行所有計算。 同時,如果需要,我可以啟動一個單獨的顯示程序,該程序使用OpenGL顯示處理后的信號。由於設計是將這些過程作為獨立的進程運行,所以我沒有任何CUDA-OpenGL互操作性,這兩個程序通過UNIX流套接字。

信號處理程序大部分時間都使用GPU來處理CUDA。我每隔50毫秒刷新一次OpenGL中的幀,而CUDA程序每次運行約運行700毫秒,而兩個連續運行通常間隔30-40毫秒。 當我一次運行一個程序(即僅運行CUDA或OpenGL部件)時,一切運行正常。 但是,當我一起啟動程序時,顯示內容也不應該是預期的,而CUDA部分會產生正確的輸出。 我已經檢查了套接字的實現,並且我對套接字可以正常工作充滿信心。

我的問題是,因為我只有一個GPU,並且沒有CUDA-OpenGL互操作性,並且兩個進程都定期使用GPU,所以CUDA內核和OpenGL內核之間的上下文切換是否可能相互干擾。 我是否應該將設計更改為只有一個程序才能運行具有CUDA-OpenGL互操作性的零件。

計算能力5.0及以下的設備無法同時運行圖形和計算。 Tesla C2050不支持任何形式的搶占,因此在CUDA內核執行GPU時,不能將其用於渲染OpenGL命令。 CUDA-OpenGL互操作無法解決此問題。

如果您只有一個GPU,那么最好的選擇是將CUDA內核分解為較短的啟動時間,以便GPU可以在圖形計算之間進行切換。 在上述情況下,CUDA內核執行的時間不應超過50毫秒-GLRenderTime。

使用第二個GPU進行圖形渲染將是更好的選擇。

暫無
暫無

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

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