Hello, Im new to CUDA and I have quite serious problem.
I can’t get access to my device memory. Every time I try, cudaMalloc return value “cudaErrorStartupFailure”.
Can it be caused by software?
I work at Microsoft Visual Studio 2008 and CUDA 6.0.
Could You provide Your full code?
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#define N 1024
__global__ void addKernel(int *c, int *a)
{
int i = 1;
if (i<N)
{
c[i]=10;
for (int j=1; j<=i; j++)
{
c[i] = c[i]+a[j];
}
}
}
int main()
{
int *a1;
int *c1;
int i1=0;
int *d_a;
int *d_c;
a1 = (int *)calloc(N, sizeof(int));
c1 = (int *)calloc(N, sizeof(int));
cudaMalloc(&d_a, N*sizeof(int));
cudaMalloc(&d_c, N*sizeof(int));
for (i1=0; i1<N; i1++)
{
a1[i1]=10;
}
printf("%d %d %d %d %d %d %d %d %d %d %d\n", a1[0], a1[1], a1[3], a1[7], a1[15], a1[31], a1[63], a1[127], a1[255], a1[511], a1[1023]);
cudaMemcpy(d_a, a1, N*sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(d_c, c1, N*sizeof(int), cudaMemcpyHostToDevice);
addKernel <<< 1 , N >>> (d_c, d_a);
cudaMemcpy(c1, d_c, N*sizeof(int), cudaMemcpyDeviceToHost);
cudaMemcpy(a1, d_a, N*sizeof(int), cudaMemcpyDeviceToHost);
printf("%d %d %d %d %d %d %d %d %d %d %d\n", c1[0], c1[1], c1[3], c1[7], c1[15], c1[31], c1[63], c1[127], c1[255], c1[511], c1[1023]);
free (a1);
free (c1);
return 0;
}