Errore "argomento di configurazione non valido" per la chiamata del kernel CUDA?


Answers

Solo per aggiungere alle risposte precedenti, puoi trovare anche i max thread consentiti nel tuo codice, in modo che possa essere eseguito su altri dispositivi senza codificare il numero di thread che utilizzerai:

struct cudaDeviceProp properties;
cudaGetDeviceProperties(&properties, device);
cout<<"using "<<properties.multiProcessorCount<<" multiprocessors"<<endl;
cout<<"max threads per processor: "<<properties.maxThreadsPerMultiProcessor<<endl;
Question

Ecco il mio codice:

int threadNum = BLOCKDIM/8;
dim3 dimBlock(threadNum,threadNum);
int blocks1 = nWidth/threadNum + (nWidth%threadNum == 0 ? 0 : 1);
int blocks2 = nHeight/threadNum + (nHeight%threadNum == 0 ? 0 : 1);
dim3 dimGrid;
dimGrid.x = blocks1;
dimGrid.y = blocks2;

//  dim3 numThreads2(BLOCKDIM);
//  dim3 numBlocks2(numPixels/BLOCKDIM + (numPixels%BLOCKDIM == 0 ? 0 : 1) );
perform_scaling<<<dimGrid,dimBlock>>>(imageDevice,imageDevice_new,min,max,nWidth, nHeight);
cudaError_t err = cudaGetLastError();
cudasafe(err,"Kernel2");

Questa è l'esecuzione del mio secondo kernel ed è completamente indipendente in termini di utilizzo dei dati. BLOCKDIM è 512, nWidth and nHeight sono anch'essi 512 e cudasafe stampa semplicemente il corrispondente messaggio di stringa del codice di errore. Questa sezione del codice fornisce un errore di configurazione subito dopo la chiamata del kernel.

Cosa potrebbe dare questo errore, qualche idea?





Tags