纹理内存(texture)能绑定double类型的一维数组吗?

xuleicsu 2013-04-01 04:06:21
比如:
texture<double, 1>texref;

如果这么定义的话,调用tex1Dfetch(texref, index);

nvcc就会报错:no instance of overloaded function "tex1Dfetch" matches the argument list (texture<double, 1, cudaReadModeElementType>, int)


如何才能使用纹理绑定double类型数据?谢谢
...全文
334 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuleicsu 2013-04-03
  • 打赏
  • 举报
回复
还是我自己来吧 定义为tex<int2, 1>texref; 取数据:int2 v = tex1Dfetch(texref, index); int2 转换为double : double val = __hiloint2double(v.y, v.x); 搞定
linxxx3 2013-04-01
  • 打赏
  • 举报
回复
texture明确可以用的三种数据类型是signed,unsigned,float,看低层次API的文档,比如cudaCreateChannelDesc,创建纹理格式用例里面,也没有超过32位的用法。有高人在欢迎赐教~ 一定要用,看能不能把连续两个32bit合起来当做double来用,存取的时候都转一下。比如这个: typedef union { int x[2]; double f; } MY_DOUBLE; 纹理就定义成int,你自己知道两个int是double就行

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧