Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vector 在向量数组的支持下写入CUDA曲面_Vector_Cuda_Surface - Fatal编程技术网

Vector 在向量数组的支持下写入CUDA曲面

Vector 在向量数组的支持下写入CUDA曲面,vector,cuda,surface,Vector,Cuda,Surface,我试图通过曲面写入二维CUDA阵列。 数组具有通道格式{32,32,0,0,cudaChannelFormatKindFloat},或者更简单地说,保存向量2s 我正试图在整型坐标(x,y)指示的位置向曲面写入矢量2。以下措施效果良好: // write the float2 vector d to outSurf surf2Dwrite(d.x, outSurf, x * sizeof(float2), y); surf2Dwrite(d.y, outSurf, x * sizeof(floa

我试图通过
曲面
写入二维CUDA阵列。 数组具有通道格式
{32,32,0,0,cudaChannelFormatKindFloat}
,或者更简单地说,保存
向量2
s

我正试图在整型坐标
(x,y)
指示的位置向曲面写入
矢量2
。以下措施效果良好:

// write the float2 vector d to outSurf
surf2Dwrite(d.x, outSurf, x * sizeof(float2), y);
surf2Dwrite(d.y, outSurf, x * sizeof(float2) + sizeof(float), y);
然而,如果我这样做

surf2Dwrite(d, outSurf, x * sizeof(float2), y);

仅写入向量的
x
分量。这种稍显不直观的行为的原因是什么?

我发现很难相信这些surf2Dwrite调用中的任何一个都会做你认为他们会做的事情。要编写
float2
,我将使用以下方法:

surf2Dwrite<float2>(d, outSurf, x, y);
surf2Dwrite(d,outSurf,x,y);

x和y参数是要写入的曲面上的坐标,模板参数告诉调用要访问的类型的大小。

这就是问题所在。尽管我想知道为什么编译器不能从参数中推导出Type=vector2。CUDA C编程指南(4.0)的第3.2.10.2.2节说,曲面使用字节寻址作为x坐标,因此仍然需要将
x
乘以
sizeof(float2)