2011-09-28 6 views
0

Je programme avec cuda en C. Je suis une erreur de segmentation avec les lignes de code ci-dessous:erreur de segmentation cuda

int width = 0; 
int height = 0; 

// load input image 
unsigned char * image_input = loadFile(&width, &height, "test.bmp"); 

// allocate memory for output 
unsigned char * image_output = (unsigned char *) malloc(width*height*sizeof(unsigned char)); 

// set the size of the input and out array 2D 
int size = width*height*sizeof(int); 

// Allocate space on the GPU for input and output 
char* GPU_input = 0; 
char* GPU_output = 0; 

cudaMalloc(&GPU_input, size);  
cudaMalloc(&GPU_output, size); 

// Copy the input data to the GPU (host to device) 
cudaMemcpy(GPU_input, image_input, size, cudaMemcpyHostToDevice); //segmentation fault here 

Toute idée?

Merci d'avance.

Répondre

4
  • La taille de sizeof (int) * H * W. (en octets)
  • Image_input est H * W. (en octets)

Vous adressez l'image_input au-delà de sa taille.

+0

Salut Wildplasser, alors que dois-je changer? Je ne suis pas clair. Merci! – olidev

+0

Je ne sais pas ce que vous avez l'intention de faire. Vous avez deux types de tableaux: l'un composé de caractères, l'autre d'ints. Je ne sais pas ce que votre CUDA-thingy attend. (mais je soupçonne ints) – wildplasser

+0

oui, c'était une erreur. Je l'ai changé à la taille de (char). résolu le problème. Merci! – olidev