10.11_分层纹理
10.11 分层纹理
分层纹理在图形学里以纹理数组著称,它可以将一维或二维纹理以数组的形式组织,并通过整型索引值访问。针对二维或三维纹理使用分层纹理的主要优势在于其允许更大范围的分片,但使用分层纹理并不具有性能优势。
分层纹理在内存中的布局与二维和三维纹理不同,若使用针对分层纹理优化的布局,对二维或三维纹理的操作将造成性能影响。因此,当调用CUDA malloc3DArray()创建CUDA数组时,最后一个标志参数必须指定CUDAArrayLayered,或调用cuArray3DCreate()时,最后一个标志参数指定为CUDA_ARRAY3D LayersERED。SDK中的simpleLayeredTexture样例展示了如何使用分层纹理。
10.11.1 一维分层纹理
一维分层纹理的大小限制可以通过调用cuDeviceGetAttribute()结合参数CU_DEVICE_ATTRIBUTE_MAXIMUM-textURE1D-layerED_WIDTH以及CU_DEVICE_ATTRIBUTE_MAXIMUM-textURE1D-layerED_layers进行查询,或者调用CUDAGetDeviceProperties()检查CUDADeviceProp.maxTexture1DLayered的值。
10.11.2 二维分层纹理
二维分层纹理的大小限制可以通过调用cuDeviceGetAttribute()结合参数CU_DEVICE_ATTRIBUTE_MAXIMUM-textURE2DLayerED_WIDTH、CU_DEVICE_ATTRIBUTE_MAXIMUM-textURE2D LayerED_HEIGHT以及CU_DEVICE_ATTRIBUTE_MAXIMUM-textURE2D LayerED_LAYERS进行查询,或者调用CUDAGetDeviceProperties()检查CUDADeviceProp.maxTexture2DLayered的值。分层纹理大小限制可以通过调用CUDAGetDeviceProperties()检查CUDADeviceProp.maxTexture2DLayered的值查询。