2017-08-25 142 views
0

我有興趣獲得併發cuda內核的內存性能計數器。我試圖使用幾個nvprof選項,如--metrics all--print-gpu-trace。輸出似乎表明內核不再是併發的。每個內核的併發性能指標與單獨運行每個內核的指標幾乎完全相同。我認爲這些併發內核按順序運行。我怎麼能得到併發內核的內存性能指標計數器,例如L2緩存?配置文件併發CUDA內核

+0

見[這裏](https://devtalk.nvidia.com/default/topic/1015752/visual-profiler/profiling-deadloop-replay-kernel-with-nvprof-on-deep-neural-network/ post/5205577 /#5205577)「*當您嘗試使用nvprof分析度量標準或事件時,應用程序中的所有併發內核都將被序列化*」因此,它目前是對'nvprof'的限制。 –

+0

@RobertCrovella謝謝羅伯特。有什麼辦法可以獲得併發內核的性能指標嗎? – palebluedot

+0

我不知道有什麼辦法。 –

回答

1

在內核同時執行的同時,不能執行每個內核的分析。但是,您可以嘗試以下解決方法:

  1. 只做跟蹤。如果您未指定--metrics--events,則nvprof將只執行跟蹤運行。在這種情況下,nvprof將同時運行內核,但只會獲得內核時序 - 而不是度量/事件數據。
  2. 如果您擁有NVIDIA Tesla GPU(與GeForce或Quadro相對),則可以使用CUPTI librarycuptiSetEventCollectionMode(CUPTI_EVENT_COLLECTION_MODE_CONTINUOUS) API對內核同時運行時所需的指標進行抽樣。但是,這將只允許您在該採樣間隔中獲取聚合度量標準/事件數據 - 這意味着您將無法將此數據關聯到單個內核。 CUPTI附帶一個名爲event_sampling的代碼示例,演示如何使用此API。
  3. 剖析你想要的度量/事件,並讓內核序列化。對於某些度量/事件,您可以簡單地總結這些值以估計併發執行期間的行爲。