2013-09-29 50 views
1

讓我們說我有許多CUDA內核,我可以要求GPU執行。我不想修改內核代碼(包括eg陷阱)。是否有可能殺死正在運行的CUDA內核?

有沒有辦法殺死這樣的正在運行的內核?

我打算自動生成內核(遺傳編程)。這些內核可能會有需要很長時間才能完成的行爲。如果我能在內核運行時殺死內核,我可以維護一個定時器並在需要時終止。

+0

您是否需要檢查內核的輸出以確定它們是否應該被殺死?然後,使用常規模型更有意義,在該模型中創建短時間運行的內核並檢查其輸出以確定是否應重新啓動它們。 –

+0

在我的用例中,輸出不能被解釋爲採取行動。我需要一種機制來搶佔正在運行的內核。 –

+3

我認爲你幾乎肯定是在你設計的錯誤軌道上。如果你設法想出殺死正在運行的內核的方法,那將是一種破解 - 而不是CUDA設計的目標。您應該考慮如何修改設計,使其能夠在常規CUDA範例內工作。 –

回答

4

cudaDeviceReset()將會終止任何正在運行的內核。

它也將消除設備上的所有分配,因此如果您打算再次使用它們,您將需要重新分配任何數據區域。

相關問題