Уже занятая тема, но из того, что я прочитал здесь, следующее помогло мне понять, как она работает внутри:
def bar(a=[]):
print id(a)
a = a + [1]
print id(a)
return a
>>> bar()
4484370232
4484524224
[1]
>>> bar()
4484370232
4484524152
[1]
>>> bar()
4484370232 # Never change, this is 'class property' of the function
4484523720 # Always a new object
[1]
>>> id(bar.func_defaults[0])
4484370232
Ресурс, который исчерпан, - это время. На всех текущих платформах CUDA драйвер дисплея включает сторожевой таймер, который будет убивать любое ядро, для выполнения которого требуется более нескольких секунд.
На используемых вами платформах WDDM Windows существуют три возможных решения / рабочие задачи: