Я обнаружил странное поведение CUDA.После того, как я получил segfault в своем ядре, я пытался освободить ранее выделенную память, и это не удалось.CUDA делает это автоматически?Я имею в виду, освобождает ли CUDA память после segfault во время выполнения ядра?
Вот код для воспроизведения моей ситуации.Я проверял это на CUDA 4.0, 4.0rc2 и 3.2
#include <cassert>
__global__ void segfault(){
int* null = NULL;
*null = 0;
}
int main() {
int* i;
assert (cudaSuccess == cudaHostAlloc(&i, sizeof(int)*100, cudaHostAllocMapped));
segfault<<<1,100>>>();
assert (cudaErrorLaunchFailure == cudaThreadSynchronize());
assert (cudaErrorLaunchFailure == cudaGetLastError());
assert (cudaSuccess == cudaGetLastError());
assert (cudaSuccess == cudaFreeHost(i));
return 0;
}