나는 기능 후이어떻게 cuda 커널 기능을 동기화 할 수 있습니까?
a<<<BLK_SIZE,THR_SIZE>>>(params,...);
b<<<BLK_SIZE,THR_SIZE>>>(params,...);
같은 두 개의 CUDA 커널 기능을 가지고 나는이 완료 될 때까지 기다린 후 기능 B를 시작하려면, 시작했다. 그래서,이 같은 A와 B 사이에 cudaThreadSynchronize()를 삽입
a<<<BLK_SIZE,THR_SIZE>>>(params,...);
err=cudaThreadSynchronize();
if(err != cudaSuccess)
printf("cudaThreadSynchronize error: %s\n", cudaGetErrorString(err));
b<<<BLK_SIZE,THR_SIZE>>>(params,...);
하지만 cudaThreadSynchronize()가 오류 코드를 반환합니다 the launch timed out and was terminated cuda error
내가 그것을 어떻게 해결할 수 있습니까?
간단한 코드 설명 :
mmap(sequence file);
mmap(reference file);
cudaMemcpy(seq_cuda, sequence);
cudaMemcpy(ref_cuda,reference);
kernel<<<>>>(params); //find short sequence in reference
cudaThreadSynchronize();
kernel<<<>>>(params);
cudaMemcpy(result, result_cuda);
report result
및 커널 함수에
가 포함 된 루프에 대한 큰이 몇 가지 경우 - 다른 비교의 수를 줄이기 위해 알고리즘과 일치하는 패턴.
Nvidia의 CUDA 포럼 (예 : [출시 시간이 초과되어 종료되었습니다] (http://forums.nvidia.com/index.php?showtopic=189042))에서 사람들은 너무 오래 걸리는 커널을 가리키고 있습니다 비디오 디스플레이에도 사용되고있는 GPU에서 실행됩니다. 해결책은 커널을 단축하거나 다른 GPU (예 : 통합 그래픽)를 사용하여 디스플레이를 구동하는 것입니다. –
사용중인 운영 체제는 무엇입니까? – talonmies
우분투를 사용하고 있습니다. 10.04 – enc