Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
CUDA application.exe已停止工作;错误_Cuda_Nvidia - Fatal编程技术网

CUDA application.exe已停止工作;错误

CUDA application.exe已停止工作;错误,cuda,nvidia,Cuda,Nvidia,我是cuda的新手。上面的代码是我正在使用的cuda程序。执行for循环时,它显示lat.exe已停止工作。但是当我将for循环从5000减少到1000时,它工作得非常好。我如何使它与5000工作,因为这是我将工作的数字 int main() { int*a、*b、*c; int*d_a、*d_b、*d_c; a=(int*)malloc(SIZE*sizeof(int)); b=(int*)malloc(SIZE*sizeof(int)); c=(int*)malloc(SIZE*sizeof

我是cuda的新手。上面的代码是我正在使用的cuda程序。执行for循环时,它显示lat.exe已停止工作。但是当我将for循环从5000减少到1000时,它工作得非常好。我如何使它与5000工作,因为这是我将工作的数字

int main() {

int*a、*b、*c;
int*d_a、*d_b、*d_c;
a=(int*)malloc(SIZE*sizeof(int));
b=(int*)malloc(SIZE*sizeof(int));
c=(int*)malloc(SIZE*sizeof(int));
Cudamaloc(&d_a,尺寸*sizeof(int));
Cudamaloc(&d_b,尺寸*sizeof(int));
Cudamaloc(&d_c,尺寸*sizeof(int));
对于(int i=0;i(d_a、d_b、d_c、大小);
cudaMemcpy(c,d_c,SIZE*sizeof(int),cudaMemcpyDeviceToHost);
对于(int i=0;i<5000;i++)
printf(“c[%d]=%d\n”,i,c[i]);
免费(a);
免费(b);
免费(c);
库达弗里(杜阿);
库达弗里(杜布);
库达弗里(d_c);
返回0;


}

不能创建具有5000个线程的块。那是你的问题。这就是为什么您的代码使用size=1000而不使用size=5000。块最多有1024个线程(通常)。

不能创建包含5000个线程的块。那是你的问题。这就是为什么您的代码使用size=1000而不使用size=5000。块最多有1024个线程(通常)。

不能创建包含5000个线程的块。那是你的问题。这就是为什么您的代码使用size=1000而不使用size=5000。块最多有1024个线程(通常)。

不能创建包含5000个线程的块。那是你的问题。这就是为什么您的代码使用size=1000而不使用size=5000。块最多有1024个线程(通常)。

提供了分配d_b、d_c、d_a和c的代码,当然,
大小>=5000,不是吗?@user3018144已使用您请求的代码对其进行了编辑。@jackolanter。是的,你是对的,我错过了。他现在正在工作。谢谢你不能用5000个线程创建块?!提供分配d_b、d_c、d_a和c的代码,当然,
SIZE>=5000,不是吗?@user3018144已经用您请求的代码编辑了它。@jackolanten。是的,你是对的,我错过了。他现在正在工作。谢谢你不能用5000个线程创建块?!提供分配d_b、d_c、d_a和c的代码,当然,
SIZE>=5000,不是吗?@user3018144已经用您请求的代码编辑了它。@jackolanten。是的,你是对的,我错过了。他现在正在工作。谢谢你不能用5000个线程创建块?!提供分配d_b、d_c、d_a和c的代码,当然,
SIZE>=5000,不是吗?@user3018144已经用您请求的代码编辑了它。@jackolanten。是的,你是对的,我错过了。他现在正在工作。谢谢你不能用5000个线程创建块?!
int *a, *b, *c;
int *d_a, *d_b, *d_c;


a = (int *)malloc(SIZE*sizeof(int));
b = (int *)malloc(SIZE*sizeof(int));
c = (int *)malloc(SIZE*sizeof(int));

cudaMalloc( &d_a, SIZE*sizeof(int));
cudaMalloc( &d_b, SIZE*sizeof(int));
cudaMalloc( &d_c, SIZE*sizeof(int));


for( int i = 0; i < SIZE; i++ )
{
    a[i] =i;
    b[i] =i;
    c[i] =0;
}

cudaMemcpy( d_a, a, SIZE*sizeof(int), cudaMemcpyHostToDevice );
cudaMemcpy( d_b, b, SIZE*sizeof(int), cudaMemcpyHostToDevice );
cudaMemcpy( d_c, c, SIZE*sizeof(int), cudaMemcpyHostToDevice );


InitialAdd<<< 3 , SIZE >>>( d_a, d_b, d_c, SIZE);

cudaMemcpy( c, d_c, SIZE*sizeof(int), cudaMemcpyDeviceToHost );

for( int i = 0; i < 5000; i++)
    printf("c[%d] = %d\n", i, c[i]);

free(a);
free(b);
free(c);

cudaFree(d_a);
cudaFree(d_b);
cudaFree(d_c);

return 0;