gpt4 book ai didi

c - 如何在cuda中输入字符串数组进行快速排序

转载 作者:行者123 更新时间:2023-11-30 15:52:49 25 4
gpt4 key购买 nike

我试图运行此代码来快速排序而不使用递归,它在我输入字符数组时运行,但是当我尝试输入字符串时,它在输出中返回符号而不是字符串。

因此,如果有人知道我在这段代码中犯了什么错误,我将不胜感激。因为我的计划是读取文件txt并将信息表单文件存储在一个数组中,然后将这个数组输入到快速排序中。

此代码是在 CUDA 中实现的。

void quick_p(char c[][30], int count)
{
int partitions[1024];
int newpartitions[1024];

partitions[0]=0;
partitions[1]=count-1;
int threads=1;

char *dev_c;
cudaMalloc((void**)&dev_c, count * sizeof( char));

int *dev_p;
int *dev_pn;
cudaMalloc((void**)&dev_p , 1024 * sizeof(int));
cudaMalloc((void**)&dev_pn, 1024 * sizeof(int));

cudaMemcpy(dev_c, c, count * sizeof( char), cudaMemcpyHostToDevice);

while(true)
{
cudaMemcpy(dev_p, partitions , sizeof(partitions), cudaMemcpyHostToDevice);
cudaMemcpy(dev_pn, newpartitions , sizeof(newpartitions), cudaMemcpyHostToDevice);

Split<<<1,threads>>>(&dev_c,dev_p,dev_pn,threads);

// get result back and loop again
cudaMemcpy(newpartitions,dev_pn, sizeof(partitions), cudaMemcpyDeviceToHost);

int tmp=0;
for(int i=0;i<threads*2;i++)
{
int idx=i*2;
if (newpartitions[idx]<newpartitions[idx+1] && newpartitions[idx+1]-newpartitions[idx]>=1)
{
partitions[tmp]=newpartitions[idx];
partitions[tmp+1]=newpartitions[idx+1];
tmp+=2;
}
}
threads=tmp/2;

if (threads==0)
break;
} // end main loop

cudaMemcpy(c,dev_c, count* sizeof(unsigned char), cudaMemcpyDeviceToHost);

cudaFree(dev_c);
cudaFree(dev_p);
cudaFree(dev_pn);
}

最佳答案

好吧,我尝试了下面的定义样式而不是“intpartitions[1024];”。//test 有 10 个元素。(需要将 10 更改为 1024)然后将所有值设置为 0。

unsigned int *test;
test=(unsigned int*) malloc(10*sizeof(unsigned int));
test=new unsigned int[10];
for(int w=0;w<10;w++)
test[w]=0;

关于c - 如何在cuda中输入字符串数组进行快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14109957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com