По случаю выхода ATI Stream SDK 2.01, описанное в предыдущей статье несколько устарело. Теперь все иначе, по меньшей мере под Windows.
OpenCL.DLL устанавливается и драйверами NVidia (поверх имеющегося) и ATI SDK (только если в системе такого нет? если в системе есть более старый?) . При этом тот вариант, который ставят драйвера NVidia 196.xx - хороший, позволяющий работать и с NVidia и с ATI картами без каких-то избыточных телодвижений, а вот ATI-шный в двухкарточном варианте у меня вызывал непонятные проблемы.
Другими словами, надежнее после установки ATI SDK установить свежие драйвера NVidia еще раз.
Поддержка OpenCL ICD наконец то заработала, поэтому находятся следующие устройства:
- Если к обоим картам подключены мониторы, а в пути (PATH) находится atiocl.dll (atiocl64.dll на 64-битной системе), то будут найдены оба GPU (+CPU-устройство, обеспечиваемое драйверами ATI).
- Если от NVidia отключить монитор, то устройство пропадает из списка найденных (трюк с запуском PhysX на такой карте не работает, собственно такой настройки нет).
- Если отключить монитор от ATI-карты, то Platform остается в списке устройств, однако судя по скорости расчета - он происходит на CPU.
Кроме того, интеграция с OpenGL полностью работает только если карта NVidia сделана primary display (скажем, в примере oclNbody отрисовка параметров работает во всех случаях, а отрисовка результатов расчетов - только на primary display).
Все остальное, что я сумел проверить - работает как ожидается: вычисления запускаются на нужном устройстве и все вообще соответствует ожиданиям, вроде бы получается считать и на двух устройствах сразу.