need help with gpu code
Afficher commentaires plus anciens
Im trying to use mutex in my code with no luck. Matlab says that kernel reaches timeout.
kernel:
__global__ void getGrid( int* mask,
int* mutex ) {
unsigned int idx = blockIdx.x * blockDim.x + threadIdx.x;
while( idx < 100 ){
while( atomicCAS( mutex, 0, 1 ) != 0 );
mask[ idx ] = idx;
atomicExch( mutex, 0 );
//*mutex = 0;
//while( atomicCAS( mutex, idx, idx + 1 ) != idx );
idx += blockDim.x * gridDim.x;
}
}
script:
mutex = parallel.gpu.GPUArray.zeros('int32');
kern0 = parallel.gpu.CUDAKernel('testkern.ptx', 'testkern.cu');
kern0.ThreadBlockSize = [256 1 1];
kern0.GridSize = [7*20 1];
mask = parallel.gpu.GPUArray.zeros(int32(256*7*20),int32(1),'int32');
tic
[mask mutex] = feval(kern0, mask, mutex);
toc
Commented atomicCAS works properly, but first one don't. Any mistakes or.. ?
3 commentaires
Walter Roberson
le 4 Fév 2012
Are you running the card in "service mode", or is it shared for graphics? Service mode is available on Telsa, but not GT / GTX (I do not know about Quadro.)
m4 Chrennikov
le 4 Fév 2012
Konrad Malkowski
le 15 Fév 2012
Does this work outside of MATLAB?
Réponses (0)
Catégories
En savoir plus sur Get Started with GPU Coder dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!