2013-10-04 60 views
0

我有一個內核,我使用一些共享內存。我將一個自動機複製到共享內存中,執行一些模式匹配,獲得一些結果並退出。是否有可能「延長」共享內存的使用壽命?

退出此內核後,我調用相同的內核並將同一自動機複製到共享內存,但現在將在模式匹配上測試的數據是其他數據。

我想知道如果我可以讓這個數據(自動機)在共享內存中,所以我的程序會更快,只是在第一次複製自動機共享內存。

我在想如果存在任何可以從設備調用的同步函數告訴主機內核已經完成,所以我可以從頭開始再次執行內核而不清除共享內存。

有什麼想法?謝謝。

回答

3

我不認爲這是可能的。共享內存數據在邏輯上與特定線程塊相關聯,並與特定流式多處理器物理關聯,但線程塊與物理上不與特定流式多處理器關聯。

+0

您是否知道是否存在可以使主機與內核同步的任何同步功能? – Blufter

+0

@Blufter'cudaDeviceSynchronize()'。請記住,'cudaMemcpy'會阻止主機,從而在主機和設備之間產生同步。 – JackOLantern

+0

感謝您的建議。 – Blufter

3

甚至不可能爲整個特定內核的執行保留共享內存。共享內存是特定於線程塊的,並且無法預測特定塊何時開始並結束其執行。當然,您可以在內核執行之間將數據保存在全局內存中,這對於此應用程序來說可能很好。畢竟,你將不得不從全局內存加載新的數據。

相關問題