3
我意識到可以在內核中使用「cuPrintf」,但「cudaPrintfDisplay」只能用於CPU代碼。在我看來,「cuPrintf」只能在從內核返回後刷新到stdout。我的問題是:我們可以在內核運行期間得到打印輸出嗎?我們可以在內核運行期間得到打印輸出嗎?
我意識到可以在內核中使用「cuPrintf」,但「cudaPrintfDisplay」只能用於CPU代碼。在我看來,「cuPrintf」只能在從內核返回後刷新到stdout。我的問題是:我們可以在內核運行期間得到打印輸出嗎?我們可以在內核運行期間得到打印輸出嗎?
正如您已經注意到的,cuPrintf()
(和printf()
計算能力> = 2.0),只需在內核運行時將字符串添加到緩衝區,並在內核結束後打印出緩衝區。
我不認爲有一種方法可以從內核獲得實時printf。但是,爲了減少延遲,您可以每次使用更少的線程運行內核。由於__device__ printf()
只是一個診斷或調試工具,因此性能的任何損失都無關緊要。
也許最好的事情是在CUDA調試器中運行代碼並以這種方式獲得即時反饋。
sm_20上的printf通常需要在輸出準備就緒之前進行設備同步,因此「按時」打印輸出當前是不可能的。 – harrism