Первая попытка: локальный запуск (epic fail)
Если работать локально, то все работает.... до первой остановки на breakpoint внутри kernel. Даже если все активные окна расположены на мониторе, подключенном к ATI, в момент остановки на точке остановки все зависает.
Судя по особенностям процесса установки в локальном режиме ("рабочая" карта должна стать PhysX-ускорителем), в любых других режимах и должно виснуть.
Вторая попытка: виртуальная машина
В то же время, при удаленной отладке ATI-шный монитор остается живым и активным, а значит зависания - не обязательное свойство.
Завожу второй Windows в виртуальной машине (VMWare), ставлю туда Visual Studio, ставлю туда Host-часть Nexus, настраиваю удаленную работу......все работает, включая и пошаговую отладку. Естественно, окно виртуальной машины располагаю на ATI-шном мониторе.
Я не уверен, что все работает "100-% устойчиво", но пару десятков сессий пошаговой отладки удалось провести без малейших проблем.
Получается, что у меня в первый раз не завелось по причине общей жизненной неустроенности каких-то проблем с установкой Nexus Monitor, тогда же у меня вообще почти ничего не завелось, ни синхронизация, ни secure access.
Мораль
Требование двух G92/G200 видеокарт является необязательным, вполне можно обойтись одной G92/G200 (для запуска CUDA) и одной какой-нибудь.
Аппаратные подробности
- Windows7/x64, Core i7, много дисков и памяти.
- Primary Display (в терминах Windows) - подключен к ATI HD5870, драйвера ATI последние (10.1)
- Второй монитор - подключен к GTX280, драйвера рекомендованные для Nexus (195.62)
- На самой машине пускаем Nexus Monitor
- В виртуальной машине (тоже Windows 7) пускаем Nexus Host, подключаемся к настоящей машине "по сети".
- Окно виртуальной машины на primary display, поэтому неотрисовки и т.п. на втором мониторе (при висении в отладчике) - не волнуют.
- Виртуальная машина - VMWare Workstation, 7.0.1, VMWare tools установлены (включая дисплейный адаптер)
- Из возможно важных настроек (но менять не пробовал) - сеть в VMware bridged.
И еще
Отсутствие conditional breakpoints очень сильно уменьшает полезность. Если мне нужен не пошаговый режим, а именно остановка в случае "А меньше 5, Б больше 8", то придется такой if() рисовать, перекомпилировать и в нем и останавливаться. Прям девятнадцатый век...