偵錯 GPU 程式碼
您可以偵錯在圖形處理單元 (GPU) (GPU) 執行的 C++ 程式碼。GPU 在 Visual Studio 的偵錯支援包括競爭執行偵測,啟動處理序和附加至和整合到偵錯視窗中。
支援的平台
偵錯在 Windows 7、 Windows 8、 Windows Server 2008 R2和 Windows Server 2012支援。對於軟體模擬器的偵錯,需要 Windows 8或 Windows Server 2012 。如需在硬體的偵錯,您必須安裝圖形卡的驅動程式。並非所有的硬體廠商實作所有偵錯工具功能。為限制參閱廠商文件。
注意事項 |
---|
若要支援在 Visual Studio 的 GPU 偵錯的獨立硬體廠商 (IHV) 必須建立實作介面 VSD3DDebug 和以自己的驅動程式的 DLL。 |
配置的 GPU 偵錯
偵錯工具在兩個 CPU 程式碼和 GPU 程式碼可能不會在相同應用程式執行。根據預設,偵錯工具在 CPU 程式碼中斷。若要偵錯 GPU 程式碼,請使用這兩個步驟之一:
在 [標準] 工具列的 [偵錯型別] 清單中,選取 [只有 GPU]。
在 [方案總管] 中,在專案的捷徑功能表上,選擇 [屬性]。在 [屬性頁] 對話方塊中,選取 [偵錯]],然後在 [偵錯工具類型] 清單中選取 [只有 GPU] 。
啟動和附加至應用程式
您可以使用 Visual Studio 偵錯命令啟動和停止 GPU 偵錯。如需詳細資訊,請參閱啟動、中斷、巡覽和停止 Visual Studio 偵錯工具。只有在該處理序執行 GPU 程式碼,您也可以附加 GPU 偵錯工具附加至執行中處理序,不過,。如需詳細資訊,請參閱HOW TO:附加至執行中處理序。
執行目前 Tile 至游標和執行至游標處
當您在 GPU 上偵錯時,您會執行的兩個選項至游標位置。兩個選項的命令可以在程式碼編輯器的捷徑功能表。
[執行至游標處。] 命令執行應用程式,直到到達游標位置然後中斷。這並不表示目前執行緒執行至游標處;相反地,表示到達游標指向的第一個執行緒觸發中斷。如需詳細資訊,請參閱[NIB] 12/13 如何:執行至游標位置。
[執行目前 Tile 至游標處] 命令執行應用程式,直到所有在目前磚達到執行緒游標然後中斷。
偵錯視窗
使用某些偵錯視窗,您可以檢查,旗標和凍結 GPU 執行緒。如需詳細資訊,請參閱:
資料同步處理的例外狀況。
偵錯工具可能會識別幾個資料同步處理的情況。當偵測到情況,偵錯工具進入中斷模式。您有兩個選擇 [中斷] 或 [繼續]。使用 [例外狀況。] 對話方塊,您可以設定它會中斷為的偵錯工具是否偵測這些情況也情況。如需詳細資訊,請參閱例外狀況處理 (偵錯)。您也可以使用 [選項] 對話方塊中寫入的偵錯工具應該忽略例外狀況,如果資料不會變更資料的值。如需詳細資訊,請參閱選項對話方塊、偵錯、一般。
疑難排解
指定快速鍵
中斷點在 GPU 程式碼只會叫用,如果程式碼可以在 accelerator::direct3d_ref (REF) 快速執行。如果您不指定快速鍵在程式碼中,快速鍵 REF 自動選取為專案屬性的 [偵錯快速鍵類型] 。如果您的程式碼明確選取一個快速鍵,則 REF 快速鍵不會使用在偵錯期間,而且中斷點不會被叫用,除非您的 GPU 硬體有偵錯支援。您可以撰寫自己的程式碼復原此在偵錯期間,,讓它使用 REF 快速鍵。如需詳細資訊,請參閱專案屬性和 使用 accelerator 和 accelerator_view 物件 和 C++ 偵錯組態的專案設定。
條件式中斷點
條件式中斷點在 GPU 程式碼支援,不過,並非所有運算式裝置的頁面中評估運算式。當運算式在裝置上無法評估,它在偵錯工具中評估。偵錯工具比裝置可能緩慢執行。
錯誤:與選取的偵錯快速鍵類型的組態問題。
這個錯誤發生,就會在專案設定和電腦的組態之間不一致您偵錯。如需詳細資訊,請參閱C++ 偵錯組態的專案設定。
錯誤:選取的偵錯快速鍵類型的偵錯驅動程式在目標電腦上未安裝。
如果您在遠端電腦上偵錯時,就會發生這個錯誤。偵錯工具無法判斷要等到執行階段驅動程式是否安裝在遠端電腦上。驅動程式可從圖形卡的製造商取得。
錯誤:必須在遠端站台上停用逾時偵測和復原 (TDR)。
C++ AMP 計算可能會超過視窗逾時偵測和繼續處理序的預設時間間隔 (TDR) 設定。當發生這種情況時,計算被取消,且資料遺失。如需詳細資訊,請參閱 在 C++ AMP 的處理 TDRs。