CUDA纹理内存可以用于32字节元素吗?

时间:2011-08-31 00:54:32

标签: caching textures cuda

我想知道纹理内存是否可用于32字节结构?

有些朋友告诉我,最大的元素是uint4,这是16个字节。

你可以给我一些建议吗?

2 个答案:

答案 0 :(得分:4)

参见CUDA C Programming Guide

的第3.2.10.1.1节
  

DataType指定获取纹理时返回的数据类型; Type仅限于基本整数和单精度浮点类型以及B.3.1节中定义的任何1,2和4分量向量类型;

换句话说: no ,你不能将它用于32个字节,因为定义的最大矢量类型是16个字节。另请注意,您不能使用任意结构,纹理仅适用于有限的一组类型。

答案 1 :(得分:1)

在最新版本的CUDA C Programming guide中,第3.2.11.1节说:

  

texel的类型,仅限于基本整数和单精度浮点类型以及char,short,int,long中定义的任何1,2和4分量矢量类型, longlong,float,double,它们派生自基本整数和单精度浮点类型。

然后链接到B.3.1节,它明确地描述了long4这样的结构,它在我的平台(x86_64)中是4 * 8字节,所以如果你愿意执行不安全的转换,也许你可以使用它从你的结构到这些结构。但是,你为什么要这样做?

更新:刚刚意识到问题已经超过两年了,对我感到羞耻。