我正在尝试将struct数组复制到device.I正在使用一个GPU atm,我有一个cuPrintf函数的问题,我用它来调试我的代码.
我的结构定义如下:
struct Node
{
char Key[25];
char ConsAlterKey[25];
char MasterKey[3];
int VowelDeletion;
char Data[6];
char MasterData[6];
int Children[35];
int ChildCount;
};
Run Code Online (Sandbox Code Playgroud)
为了测试目的,我填充struct数组,如下所示:
void FillArray(Node *NodeArray)
{
for(int i=0;i<TotalNodeCount;i++)
{
strcpy(NodeArray[i].Key,"Key");
strcpy(NodeArray[i].ConsAlterKey,"ConsAlterKey");
strcpy(NodeArray[i].MasterKey,"Mk");
NodeArray[i].VowelDeletion=0;
strcpy(NodeArray[i].Data,"Data");
strcpy(NodeArray[i].MasterData,"Mdata");
NodeArray[i].ChildCount=5;
for(int j =0;j<NodeArray[i].ChildCount;j++)
{
NodeArray[i].Children[j]=i+j;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的主要功能如下:
int main()
{
Node *NodeArray;
Node *GpuTree;
int tokenCount=0;
int *tokenCountGPU;
NodeArray =(Node *)malloc(sizeof(Node)*(TotalNodeCount));
FillArray(NodeArray);
printf("Filling test : %s\n", NodeArray[13].Key);
gpuAssert(cudaMalloc( (void**)&GpuTree, sizeof(Node)*(TotalNodeCount)));
gpuAssert(cudaMemcpy(GpuTree, NodeArray,sizeof(Node)*(TotalNodeCount), cudaMemcpyHostToDevice));
//test value
tokenCount=35;
gpuAssert( cudaMalloc((void **)&tokenCountGPU, sizeof(int)) …
Run Code Online (Sandbox Code Playgroud)