понедельник, 11 января 2010 г.

CUDA, Windows 7, TDR

Была задача, которую нужно было решить с использованием CUDA дабы достичь ускорения.

Ок, пишем реализацию, запускаем на более-менее серьезном массиве данных и получаем "Display driver stopped responding and has recovered".

Все дело в Timeout Detection and Recovery (TDR) - ядро не должно исполняться более 2 сек - это известная проблема (NVIDIA CUDA Windows XP and Vista Release Notes Version 2.3, Known Issues).

Одно из решений (возможно не самое лучшее, но работающее) - создать в HKLM\System\CurrentControlSet\Control\GraphicsDrivers ключ TdrLevel типа DWORD со значением 0 (TdrLevelOff). Следует обратить внимание на то, что этот ключ реестра документирован только в целях тестирования, более подробно тут.