CUDA: конкурс разработчиков

Совершенно случайно узнал, но не могу пройти мимо не анонсировав.

NVidia (совместно с iXBT, как я понял) проводит конкурс программ для CUDA, как положено с призами.

Конкурс проводится среди разработчиков из России и СНГ, а значит шансы выиграть достаточно высоки (ибо потенциальных участников мало).

Увы, но научные программы на конкурс не допускаются, поэтому расчетчики, желающие выиграть ноутбук или Quadro 3700, должны срочно заняться чем-то полезным.

Вообще говоря, до крайнего срока подачи работ еще 2.5 месяца, этого срока вполне достаточно, чтобы освоиться с инструментарием и перенести на GPU что-то полезное, от обработки изображений до подбора паролей.

Comments

А на фига козе баян ... CUDA трудовому народу?

- client-only solution
- видеокарта занимаюшая 1-2$ рынка
- not scalable (жестко ограничены объемом видео-памяти)

http://bioinformatics.cribi.unipd.it/cuda/

two GeForce 8800 GTX .., running on a 3 GHz Intel Pentium IV processor ..,
our implementation performs from 2 to 30 times faster

А как насчет сравнения с dual Core2Quad с 8GB RAM? :-)

Я не понимаю, почему 1-2 $(наверное все-таки %) рынка? CUDA работает на всех Geforce 8xxx/9xxx, это что-нибудь в районе трети рынка новых машин (и 2/3 от машин с отдельной видеокартой). Т.е. уже можно.

Что касается перформанса, то умножение матриц на 8800GTX - 100Gflops на их библиотеке, народ вытаскивает до, если не путаю, 170. 2xWoodcrest 5140 (и то же самое C2Q) у меня давали 48 гигафлопсов на single precision.

А дальше все от задачи. Есть класс задач, который ложится на CUDA очень хорошо и там выигрыши в десятки раз. Есть те, которые плохо - там в разы или менее. Причем, то что ляжет на C2Q (возможно параллельное исполнение без блокировок) - ляжет и на Geforce

Не забывай еще, что отдавая что-то считаться на видеокарту - ты разгружаешь CPU и его можно занять чем-то полезным.

да, я имел ввиду % установленных 8800'х моделей.

http://arstechnica.com/news.ars/post/20070730-nvidia-continues-to-take-g...

Nvidia занимает треть рынка.
Очень большая часть рынка - лаптопы и дешевые модели.

<q>А дальше все от задачи.</q>

Во-от. Год назад я бы попросил фотошопный фильтр для удаления шумов.
NeatImage работал секунд 20. Четырех-пятикратное ускорение было бы кстати.
Но сейчас на С2Q он работает 4 секунды.
Собственно, вопрос - какие задачи принесут радость простым пользователям?
Разумеется, скучающий научный работник стойке с дюжиной блейдов предпочет
десктоп SLI-8800-gtx, у которого есть восхитительные применения помимо
транспонирования матриц и прочей протирки оптических осей. :-)

Блин, вроде отвечал еще вчера, а ответа не вижу.

У меня на лаптопе - 8600M, у нее примерно такая же скорость, как у основного CPU, может чуть больше.

Ну и в твоем примере с шумопонижением - эта задача прекрасно параллелится, на GPU будет большой выигрыш, а значит на выбор
- или можно будет перерисовывать картинку прямо в (почти) реалтайме по движению движков настройки, а это принципиально новое качество
- или в те же 4 секунды сделать существенно более навернутый алгоритм.

Скажем, с демозаикой есть подвижки (пока и медленные), вроде бы получается ее делать очень быстро на GPU, а значит у демозаики могут появиться параметры настройки. Как пример.

Кстати, почти оффтопик: я тут почитал всё, что нашёл по демозаику и был очень разочарован... Всё открытое -- простое как три копейки. Буквально, обработка квадратиками 5x5...
А вот если строить хотя бы полиномиальную поверхность на 65x65, Скажем?
Долго? Ну да чёрт с ним, что долго -- на ночь зарядил и работает. Только демозаик...

А ничего лучше AHD/EAHD в реальной жизни не используется, насколько я знаю.

Рассказали тут историю, что видели сервер, где видеокарта была превращена в криптоакселератор...

Да, сейчас много такого софта, там вполне приличный перформанс получается. В районе 8 гигабит/сек (включая I/O) для AES, например.

Там вроде наоборот разворот SSL ускоряли -- самое дорогое для HTTPS.

А можно поподробнее про ssl акселерацию на GPU. Интересует данная тема.
Не подскажете где на такую штуку посмотреть можно ?

А чего тут рассказывать - народ работает (как хорошо видно по поиску в гугле), а вот публичных опенсорсных реализаций я бы не ждал, спрос нишевый и денежный.

EAHD -- ? AHD-то понятно что.
Дык вот и не понятно -- почему.
Вон, сколько мучились с панорамами, а потом появился smartblend...
А в демозаики как-то всё очень простенькое.

О! Предпросмотр ломает "in reply to"

Если ты иксбит не читаешь:

http://www.ixbt.com/news/hard/index.shtml?10/57/17

От задачи зависит, конечно, но на sgemm у меня 8800gtx примерно в 2.5 раза быстрее, чем 8-ядерный core2quad на 3 гигагерцах. Т.е. "20 ядер"

То что они напихали - ну пусть 8 моих карт (примерно так и есть). Ну значит 160 ядер. Ну с поправкой на частоту - 200 ядер.

Но они говорят о 600-х ядрах, а такой speedup мне кажется нереальным. Еще вдвое - ну, может быть, но втрое - уже нет.

Алексей, а вот такой забавный вопрос ... вы говорите, что мол отдал на расчёт GPU, а CPU при этом не занят.

А как можно решить с кудой задачу прекращения работы кернела, если кернел работает слишком долго ?

То есть, если примитивно: запустили кернел, ждём 3 секунды, если он не закончил считать - прекратили его работу.

Такое вообще возможно ? Из programming guide от нвидии складывается ощущение, что кернел можно только запустить и ждать в cudaSynchThreads() хоть до посинения ...

Спасибо.

На сегодня все просто - если за 5 секунд кернел не отработал, то получает по рогам.

а cudaStreamDestroy не является решением ?

Не совсем так.
Через 5 секунд отрубается кернел, работащий на девайсе, который одновременно используется по прямому назначению - как видеокарточка.

Если монитор к куда-девайсу не подключен и не активирован в виндах, то кроде как 5 секунд не есть предел.

Кроме того - мне надо отрубать кернел скажем через секунду, а не через 5 ... отсюда и вопрос.

cudsStreamDestroy - не знаю, честно говоря, поскольку запускал кернел без стрима. Опять же, в доке написано очень просто - функция убивает стрим. Что это значит - до конца не понятно.

Алексей, если интересно :-)
Проверил - cudaStreamDestroy решением не является. Вызов cudaStreamDestroy ждёт, пока стрим завершит работу, но не прерывает эту работу.

Я, если честно, уже слегка обалдел от такого положения вещей :-) Для меня критично отрубать кернел извне - но пока складывается ощущение, что этого вообще никак не сделать ...

Если стрим недосчитал, то его убить не очень жалко. непонятно что будет с ресурсами, которые на карте

Именно.
Если я в цикле последовательно зупущу 1000 кернелов, но 30% из них отбракую и уничтожу до окончания их работы (а это будет фактически означать, что кернел будет работать десятки минут)... что будет на карточке происходить - неясно.

Вам там нвидиевец ответил, что нет способа на сегодня.

Мда. для всяких алгортимов, которые сходятся с разной скоростью (от данных) может быть неудобно, придется итерации и/или клоки считать внутри.

Так и поступаю - считаю итерации.