我有一个算法,我想运行使用一个可能长的双数组。由于数组的长度可能达数百万,我将它放在GPU上,因此我需要将数组从CPP文件导出到CU文件。然而,我现在只是在CPP中原型化它,因为它在任何情况下都不起作用。将指针设置为for循环中的双数组
在我的CPU原型中,当我尝试使用for循环设置双数组的成员时,出现错误。例如,包括cout的任何操作都会给出错误c2109:下标需要CPP文件中的数组或指针类型
或者如果从CU文件运行相同的代码,则error:expression必须具有指向对象类型的指针
const int size = 100000;
double inputMeshPts_PROXY[size][4];
inputMeshPts.get(inputMeshPts_PROXY);
int lengthPts = inputMeshPts.length();
if (useCUDA == 1)
{
double *inputMeshPts_CUDA = &inputMeshPts_PROXY[size][4];
myArray(lengthPts, inputMeshPts_CUDA);
}
MStatus abjBlendShape::myArray(int length_CUDA, float weight_CUDA, double *inputMeshPts_CUDA)
{
for (int i = 0; i < length_CUDA; i++)
{
for (int j = 0; j < 3; j++)
{
cout << inputMeshPts_CUDA[i][j] << endl;
// inputMeshPts_CUDA[i][j] += (sculptedMeshPts_PROXY[i][j] - inputMeshPts_CUDA[i][j]); // WHAT I WANT, EVENTUALLY
}
}
}
该数组从'&inputMeshPts_PROXY [0] [0]'开始。你有'&inputMeshPts_PROXY [size] [4]'是waaay的结尾,实际上非法甚至计算指针。 –