CUDA в массы!

Анонсирована NVidia CUDA 1.1 (beta).

Несмотря на некруглый номер версии, это революция:

  • CUDA-функциональность теперь будет в обычном драйвере;
  • Необходимые DLL-s из SDK можно редистрибутировать вместе с приложением;

По сути, это означает, что из тестовой системы оно стало боевой: в требованиях к программе можно писать просто NVidia 8x00 и минимальную версию (обычных!) драйверов и у любого пользователя оно будет работать.

Вообще, анонс довольно интересный и требует подробного комментирования. Существенная информация из анонса делится на две кучки, "сейчас и потом". Сейчас:

  • Асинхронное выполнение одновременно с копированием порции данных доступно только на "архитектуре 1.1 (g84/g86/g92)".... получается, что на своей G80 (8800GTX) я этого счастья лишен и это аппаратное ограничение.
  • Пересылку данных в карту можно делать асинхронно.
  • Поддержка 64-битных Windows, чего я ждал 11 месяцев :)
  • Непонятная мне "Graphics interoperability with CUDA across Multiple GPUs is enabled", это имеется в виду, карты в SLI-режиме ?

Потом:

  • поддержка double precision hardware, которого формально еще нет и хочется надеяться, что это не будет только Tesla;
  • Vista (сроки не объявлены, по идее, все ограничивается драйвером);
  • Mac OS X, обещают бету к январю (а у меня в макбуке-про 8600M :);
  • развитые средства отладки и профайлинга;
  • 3D-текстуры;
  • оптимизированная пересылка данных карта-карта (SLI-режим, мимо процессора?).

Мораль: нужно ждать объявления нового железа с double precision и надеяться, что в картах дешевле штуки баксов двойная точность тоже будет. Девелопить ведь как-то надо...

Да, бета-версию дают только тем, у кого есть логин на партнерский сайт.

Comments

<q>Непонятная мне "Graphics interoperability with CUDA across Multiple GPUs is enabled", это имеется в виду, карты в SLI-режиме ?</q>

Ага, плюс еще будущие тяжелые карты будут многочиповыми, как сейчас у AMD.

<q>оптимизированная пересылка данных карта-карта (SLI-режим, мимо процессора?).</q>

А сейчас они вообще SLI поддерживают? Потому что вообще-то дефолтовый SLI-режим - это как раз через мостик, а поддержку безмостовых конфигураций (через шину) они относительно недавно сделали.

У меня одна карта, поэтому попробовать не могу.

Несколько карт поддерживаются (явным выбором девайса), что там было в SLI - толком не знаю, как бы не зеркалирование ???

Выбор девайса это не то, в SLI должно работать параллельно наверное, как в OpenGL, то есть один буфер одна карта считает, второй буфер - вторая.

А сколько там памяти получается - сумма или зеркало ?

И если у меня один шейдер насчитал текстуру, которая вход для второго шейдера, то как результаты насчета дистрибутируются ?

Памяти как зеркало. Для графики все тупо дублируется, хотя КУДА может и умнее этим управлять в принципе. Вообще кроме frame alternate там и умные режимы были, когда кадр делился динамически в зависимости от тяжести расчетов, но я как-то слабо себе представляю это в применении для КУДы.

Дистрибутируется либо через мост, либо через шину.

Тут вот какая штука: синхронизация есть только внутри SP (блока из 8+1 процессоров), поэтому в любом случае нельзя рассчитывать почитать то, что другие SP написали в глобальную память без внешней синхронизации (т.е. с запуском нескольких kernels)
А раз синхронизация внешняя, то можно и память посинкать явно, через мостик или через PCI

Как раз с графикой интереснее, что происходит в SLI, когда у меня N+1-й кадр рассчитывается на основе N-го (который был в другой карте ?)

<q>Как раз с графикой интереснее, что происходит в SLI, когда у меня N+1-й кадр рассчитывается на основе N-го (который был в другой карте ?)</q>

Если в одно слово - ЖОПА.

И почему я не удивлен.....

асинхронная передача - сила, без неё туго.
SLI поддерживалась с 0.8, но виделись они как разные карты, сейчас, видимо, будeт казаться, что это одна карта.
"оптимизированная пересылка данных карта-карта (SLI-режим, мимо процессора?).". да, не ясно, что это за зверь. если кажется, что SLI это одна карта, то как бы и пересылок-то нет, только скрытые, во время вычислений, по необходимости. в SLI пересылка может идти через PCI-E, может через специальный "мостик" между картами, наверное, может и одновременно и там и там.
про double. думаю, что реально double не будет ещё очень долго. причины:
1) double ALU требует в 4 раза больше транзисторов, чем single
2) для графики не нужен
3) если и сделают, то поддерживать IEEE стандарт всё равно не будет, а значит, в реальных научных расчетах рисково применять
4) всегда можно обойтись программной эмуляцией double, 7-10 раз медленее single, но это примерно таже скорость, как и при кривой реализации double (Cell)

В презентации, показанной на SC07 три дня назад был роадмэп на 2007-й год.

double precision там нарисована в этом году.

http://www.gpgpu.org/sc2007/SC07_CUDA_2_Language_Buck.pdf ,последний слайд

Дабл нужен если и не для самой графики, то для околографики - всякие particle simulation и расчет физики. Для физики тоже сингла хватает, но в сложных кинематических системах надо аккуратно рассчитывать, а народ не любит аккуратно, народ любит брут форсом.

для игр никому не нужно рассчитывать точное физическое поведение частиц. там всё равно упрощенные модели. single хватит за глаза. тем более, точность арифметики ещё не даёт точность результата. всё дело в алгоритмах.

Кирилл же написал, что Single хватит только если мозг приложить. С чем я согласен.

Но мозг - большая редкость.

Собственно, жизнь нас рассудит в течение полутора месяцев. А если NV хочет навариться на рождестве, то в течение нескольких ближайших недель. Текущее состояние их линейки видеокарт - очень уж странное.

возможно поддержка double для галочки и появится, как в FS 9170, но нужна-то именно полноценная поддержка. обратите внимание, нигде не публикуются данные о производительности FS 9170 в double. скорее всего, она как у Cell, в 10 раз меньше single. готов ли кто-то считать в double такой ценой? эффективнее будет считать на CPU.

Слепой сказал "посмотрим".

Даже в 10 раз медленнее - оно может быть очень полезно в хозяйстве, при некоторых условиях: последние уточняющие итерации по приближенному решению. Экономия на пересылке всего добра на CPU.

Но буду честным - мне лично этот double нафиг не нужен. Мне скорее нужен
честный 32-битный int с нормальной производительностью

добрый день.

не знаю куда написать, но вопрос в следующем:
есть ли у кого-нить из читателей сего текста информация о том, занимается ли кто-нибудь в России разработкой с использованием технологий от NVidia (CUDA, Cg)?
поиск результатов не дал.
спрашиваю потому что сам работал с CUDA примерно год,
но дело было не на родине. сейчас живу в России (СПб), программист-дотнетовец, но хотелось бы продолжить с CUDA.

спрошу еще на форуме http://www.gpgpu.ru/
спасибо.

Я не могу давать более конкретных ответов (явки, пароли) без согласия упоминаемых.

Но - занимаются. Но - немного.

а вдруг я буду им полезен?