重寫代碼是否有意義,以便它通過紋理緩存加載數據(假設我不需要過濾和其他紋理單元選項)還是相同?如何加載一些數據低谷緩存和槽紋理單元?我有一個代碼,我可以使用這種策略,但它有意義嗎?CUDA:FERMI上的紋理緩存是否與L1緩存分開?
要清楚,我的意思,「是從FERMI L1高速緩存硬件獨立的硬件紋理緩存」 - 換句話說,我可以巧妙地得到一個總的L1 +紋理緩存容量爲我的代碼?
重寫代碼是否有意義,以便它通過紋理緩存加載數據(假設我不需要過濾和其他紋理單元選項)還是相同?如何加載一些數據低谷緩存和槽紋理單元?我有一個代碼,我可以使用這種策略,但它有意義嗎?CUDA:FERMI上的紋理緩存是否與L1緩存分開?
要清楚,我的意思,「是從FERMI L1高速緩存硬件獨立的硬件紋理緩存」 - 換句話說,我可以巧妙地得到一個總的L1 +紋理緩存容量爲我的代碼?
它是分開的。紋理加載不通過L1。對於非紋理應用程序(即不使用插值和鉗位等功能),紋理的主要好處是它允許您有選擇地添加大量全局內存,這些內存可能會被緩存(假設爲位置和重用)而不會中斷L1中發生了什麼。對於小數據集,貼圖不會比L1提供更好的性能。對於大型數據集來說,有一些局部性和重用性,但是由紋理緩存覆蓋的區域的負載可能會導致L1(根據緩存配置,其可能小到每個SM上的16KB),但是,紋理緩存可以爲整體應用程序提供好處。用戶體驗到使用紋理的速度並不像通過L1緩存的速度那麼快,但比未緩存的負載或散亂的L1負載快很多。很多將取決於所涉及的數據的訪問模式和大小。紋理緩存的大小大約爲每個SM 8KB。你可以緩存一個更大的區域,但高度的重用和局部性肯定會提高紋理緩存的性能。另請注意,紋理內存是隻讀的。您可能對webinar感興趣。
正是我尋找的答案,謝謝。 –