Weird behaviour when out of memory exception occurs


First of all, I’m working with the driver API.

For my image processing procedureI need an array of cuda-arrays. Therefore I create an array on my
host and store the pointers/handles to the cuda-array in this array on the host. The array is created
as a 2D array with about 1400x128 elements (float). On my graphics card a Tesla C2050 I can store about
3000 arrays until I’m running out of memory. For that reason I created a buffer-like mechanism that catches
the out-of-memory exception and then I release a predefined percentage of cuda-arrays.

The problem now is, that if the out-of-memory exception occurs no method from the driver API is working
correctly anymore, I cannot determine the amount of free memory by using cuMemGetInfo nor is is possible
to free the cuda-array by using cuArrayDestroy. There is always an out of memory exception.

Since I don’t know another method to determine the amount of memory an alloc of a cuda-array will take,
this is the only method the shows me when the memory on the cuda device is full.

Interestingly it works on all other cards: C1070 and C2075.

System: Windows/ x64
CUDA Version: 4.0