need help with gpu code
조회 수: 1 (최근 30일)
이전 댓글 표시
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
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 GPU Computing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!