我想知道是否可以編寫持久性GPU功能。我有我的疑惑,但我不確定調度程序是如何工作的。持久GPU功能/操作
我正在尋找處理未知數量的數據點(約5000萬)。數據以20塊左右的大塊形式出現。如果我可以將這20個點放入一個GPU「桶」中,並且讓這個「持續」操作在進入時進行處理,那將是一件好事。完成後,抓取結果。
當bucket爲空時,我可以讓GPU保持忙碌狀態。但我認爲部分空的水桶上的競賽條件將成爲一個問題。
我懷疑當這個持久操作正在運行時,我不能在GPU上運行任何其他操作。即讓其他未經專門治療的SM工作。
這是一種可行的(費米)GPU方法,還是一個壞主意?
你想做什麼有點含糊不清;當你說「過程」時,這個處理是否獨立於新到的數據?另外,你的時間要求是什麼?是什麼阻止你收集所有點並一次處理它們?在目前的形式中,我認爲這不會構成對GPU的良好使用,一次運行20個元素對於CPU來說通常會更好(儘管這又取決於你想要做什麼) – alrikai
所有5000萬個數據點彼此獨立。他們都經歷了相同的過程。它們都有助於獲得單一結果。在一個塊中發送全部5000萬個點不會導致加速。 Xfering採用20點的塊可以減少CPU的開銷。 – Doug
所以你可以獨立執行這個操作,但是你會得到一個標量結果?當您累積數據並將運行的部分結果存儲在全局內存中時,是否有任何東西阻止您執行多個內核調用?而我試圖通過20個元素來運行的一點是,它可以更有效地累積更大的東西(例如幾千個元素)並將它們一次發送到GPU。但不知道你的程序的具體細節,我不能提出具體的建議。 – alrikai