我正在嘗試做出一些關於如何處理我可用於與我正在爲TensorFlow移植的系統進行通信的資源的決定。我想了解BaseGPUDevice :: Init()after line 209.中的代碼。TensorFlow:爲什麼GPU設備只有一個設備上下文(並且真的*)?
代碼循環運行max_streams
個循環,並且每次都會創建一組用於跨設備通信的流,然後實例化將使用該組流的一個GPUDeviceContext
。
然後,在FillContextMap()
的主體中,調用複雜的函數來確定可用流之間的流的最優分配。將最佳流與返回的映射中創建的流的總數進行模數化,然後使用該映射將節點分配給函數的其餘部分中的設備上下文。
好吧,到目前爲止,這麼好。我們有一個系統,它看起來像使用了很多代碼來確保它很好地分配資源。但是引起我的是code to instantiate a device,它最終將max_streams
的值硬編碼爲1,這意味着行279之後的所有上下文映射代碼都不應該被調用。
我在查看不再適用的舊代碼,或GPU設備將具有多個上下文時未來日期的佔位符代碼,或者有沒有發現GPU設備可以創建多個背景?