Caching CUDA:费米上的纹理缓存与一级缓存分开吗?

Caching CUDA:费米上的纹理缓存与一级缓存分开吗?,caching,cuda,textures,Caching,Cuda,Textures,重写代码以便通过纹理缓存加载数据(假设我不需要过滤和其他纹理单元选项)有意义吗?还是相同?通过一级缓存和纹理单元加载一些数据怎么样?我有一个可以使用这种策略的代码,但它有意义吗 为了清楚起见,我的意思是,“费米上的纹理缓存是一个独立于一级缓存硬件的硬件吗”-换句话说,我能巧妙地为我的代码获得一级+纹理缓存总量吗?它是独立的。纹理加载不会经过L1。对于非纹理应用程序(即,您不使用插值和钳制等功能),纹理的主要好处是,它允许您有选择地添加大量全局内存,这些内存可以潜在地缓存(假设局部性和重用),而不

重写代码以便通过纹理缓存加载数据(假设我不需要过滤和其他纹理单元选项)有意义吗?还是相同?通过一级缓存和纹理单元加载一些数据怎么样?我有一个可以使用这种策略的代码,但它有意义吗


为了清楚起见,我的意思是,“费米上的纹理缓存是一个独立于一级缓存硬件的硬件吗”-换句话说,我能巧妙地为我的代码获得一级+纹理缓存总量吗?

它是独立的。纹理加载不会经过L1。对于非纹理应用程序(即,您不使用插值和钳制等功能),纹理的主要好处是,它允许您有选择地添加大量全局内存,这些内存可以潜在地缓存(假设局部性和重用),而不会中断L1中的工作。对于小数据集,纹理不会提供比L1更好的性能。对于大型数据集,其中存在一些局部性和重用,但来自纹理缓存覆盖的区域的负载可能会对L1造成冲击(根据缓存配置,在费米上可能小到每SM 16KB),纹理缓存可以为应用程序整体带来好处。用户经常会体验到,使用纹理的速度不如缓存在L1中的速度快,但要比未缓存的加载速度快得多,或者说比分散的加载速度快得多。这在很大程度上取决于访问模式和所涉及数据的大小。纹理缓存的大小约为每SM 8KB。您可以缓存更大的区域,但高级别的重用和局部性肯定会提高纹理缓存的性能。还要注意,纹理内存是只读的。你可能对此感兴趣