2012-03-06 87 views
3

OpenCL1.1中有沒有懶惰的策略來處理數據傳輸?我知道CUDA有這種策略,因此您可以分配比設備上更多的內存。OpenCL1.1上的懶惰策略

+1

您能舉一個用法示例嗎?我無法想象爲什麼會這樣做。 – LucasB 2012-03-08 23:23:58

+0

例如,您有主機內存中鏈接的結構列表,但沒有按順序排列,因爲在計算過程中它已被更新。那麼您應該將部分列表發送給GPU,但是所需的信息可能已經上傳或未上傳。因此,稍後您可以決定獲取更多的列表。懶惰策略讓您有機會根據需要上傳數據。 – Damoon 2012-03-14 09:41:06

回答

4

我對OpenCL並不熟悉,但發現相關的NVIDIA forum discussion

還以爲我對CUDA的情況下,任何人提及回覆遇到後...

我不認爲有在本地CUDA的方式比物理設備上可用的分配更多的內存。事實上,即使在較大的卡上,也不能分配一個大的連續陣列,因爲卡具有單獨的存儲體,例如,回到C1060的日子裏,我記得在3GB卡上達到了1.5GB左右的限制。您能否提供一些關於CUDA允許如此大量分配的含義的細節?

如果您使用ArrayFire(或Jacket),他們有virtual memory的基本思想是:如果你有很多是比總量更可在卡上少分配的,那麼只保留最重要出來的設備上而其他作品則保存在主機上直到需要。