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

Конкурс з програмування в середовищі CUDA в Україні

Конкурс з програмування в середовищі CUDA в Україні

Корпорація NVIDIA спільно з українським партнером, компанією Юстар, оголошують про проведення конкурсу по паралельному програмуванню в середовищі CUDA.

Головна мета конкурсу — популяризація CUDA серед українських розробників програмного забезпечення, фахівців і вчених, що використовують паралельне програмування, а також студентів технічних ВУЗів.

Технологія NVIDIA CUDA ™ — це єдина середовище розробки на C, що дозволяє програмістам і розробникам писати програмне забезпечення для вирішення складних обчислювальних задач за менший час завдяки багатоядерної обчислювальної потужності графічних процесорів. У світі вже встановлені мільйони GPU з підтримкою CUDA, і тисячі програмістів вже безкоштовно користуються інструментами CUDA для прискорення додатків – від кодування відео та аудіо до пошуків нафти і газу, моделювання продуктів, медичних зображень та наукових досліджень.

Конкурс відбудеться в період з 15 лютого по 14 травня 2010.

Деталі конкурсу та умови участі на сторінці Конкурс CUDA

P.S. Можно поучаствовать, если придумать какую-нибудь нетривиальную тему:)

8 комментариев:

  1. Поиск больших простых чисел? ;) Ломать RSA? ;)
    Тривиально :(

    А! Во! Собрать
    http://uk.eternityii.com/
    Eternity II is the puzzle with the $2million prize up for grabs which launched world-wide on 28th July 2007.

    Правда там все грустно, даже для суперкомпьютера...

    ОтветитьУдалить
  2. Я бы не решился тратить время на решение конкретной задачи.
    1) Меня в последнее время интересуют вопросы расслабленных моделей памяти (JMM, records in RDBMS) как элементов некоторого "пространства" моделей памяти. И в этом контексте анализ - возможно ли применить методы Теории Категорий к элементам этого пространства.
    Т.е. я бы исследовал - меру качественных различий между, моделью памяти CUDA и, скажем, JMM (Реальный контекст - построение транслятора многопоточной программы Java<->CUDA).
    Или еще шире - охарактеризовать в максимально общих терминах класс систем "родственных"/"эквивалентных" по модели памяти к CUDA.
    2) Есть ощущение, что чем "расслабленнее" и "изолирование" модель памяти, тем более она способствует распараллеливанию программы на многоядерной (или распределенной) системе. Вопрос в попытке охарактеризовать степень расслабленности (рассогласованности) памяти в некоторых математических терминах. Наличие такого критерия могло бы подсказать, скажем, способствует ли наличие некоторой особенности языка к распараллеливанию.
    ---
    Ну это все пока на уровне ощущений.

    ОтветитьУдалить
  3. Пока собираю весь материал, который соответствует расслабленным, несогласованным, с распределенными состояниями систем.

    ОтветитьУдалить
  4. Ну возможно это тоже пригодится
    http://www.rsdn.ru/forum/cpp/3068646.flat.1.aspx
    и дальше по тексту.

    > Я бы не решился тратить время на решение конкретной задачи.
    Ну я так понимаю, что участие в конкурсе подразумевает именно решение конкретной задачи :) Т.е. если цель именно участие в конкурсе, а не что-нибудь другое.

    > Т.е. я бы исследовал - меру качественных различий между, моделью памяти CUDA и, скажем, JMM (Реальный контекст - построение транслятора многопоточной программы Java<->CUDA).
    За три месяца? Исследовать за три месяца (part-time) реально, наверное, а вот написать полноценный транслятор Java<->C, как-то не очень. И не совсем понятно, насколько это осмысленно, насколько я понимаю, графические процессоры расчитаны на ограниченный класс задач, и решать на них остальные примерно как колоть орехи микроскопом.

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

    > Есть ощущение, что чем "расслабленнее" и "изолирование" модель памяти, тем более она способствует распараллеливанию программы на многоядерной (или распределенной) системе.

    Расслабленная модель - это та, которая не дает гарантий, в каком порядке будет записана информация на самом деле? И где повторная запись в одну и ту-же ячейку может опередить предшествующую, даже на одном процессоре, что приведет к тому, что вместо второго значения там окажется первое?

    ОтветитьУдалить
  5. Вот, кстати, еще интересная ссылочка...
    http://hpc-russia.ru/book_ready.html

    ОтветитьУдалить
  6. "Расслабленная модель" - меня интересует скорее аспект допустимости несериализуемости действий(и "степени" этой несериализируемости - БД-шники ищут способы ее сравнивать(скажем Figure 2 тут - http://www.cs.umb.edu/~poneil/iso.pdf)) из различных потоков/транзакций. Так как за сериализируемость приходится платить плохой масштабируемостью (из-за необходимости синхронно согласовывать действия на нодах/потоках). Но БД-шники(на том уровне которго я достиг) 1)либо разделяют уровни сериализируемости исследуя реакции на "феномены"(dirty write, dirty read, phantoms, etc) 2)либо исследуют и сравнивают конкретные модели (блокировочники, версионники, оптимистичный ресолв в момент коммита, etc). Но я не нашел пока достаточно общей теории описывающей явление несериализируемости.

    Также интересно было бы исследовать свойство "изолированности" конкретных систем. Скажем система состоящая из двух пар актеров делающих пинг-понг сообщениями в паре с отсутствием всяческих глобальных переменных и шаред мемори очевидно идеально масштабируется с одного ядра на два или одного нода на два.
    Но интересно было бы иметь алгоритм, который бы 1)либо по двум реализациям какой-то системы говорил какая "изолированние"/"автономнее" и лучше масштабируется. 2) либо для данной системы позволяла найти "моменты" которые сдерживают масштабируемость. Моментом может быть не только "место"(скажем global sync counter) а "аспект" архитектуры (сам пока точно не понимаю что это может значить).

    Собственно просто сейчас столкнулся на новой работе(GridDynamics.com/Mirantis.ru) как раз с таким классом задач, скажем разнесение одного датасентра VoIP-сервера на несколько датацентров с поддержанием некоторой степени "согласованности" отдельных центров. Хитрость в том, что такие бла-бла-бла как CAP-теорема действительно помогают мыслить о том, чего можно достичь, но хотелось бы так же иметь инструмент сравнения различных архитектур для такой задачи.

    ОтветитьУдалить
  7. >"Ну я так понимаю, что участие в конкурсе подразумевает именно решение конкретной задачи :) Т.е. если цель именно участие в конкурсе, а не что-нибудь другое."
    --
    Скорее 1)"засветится" 2)представить на анализ исследование "ответственным мужам" свое исследование.
    Писать конкретный код для CUDA - не слишком большое счастье. Тут я реализую свою потребность в теоретических исследованиях, реализацию конкретных проектов я сейчас делаю на j2ee. Переходить с j2ee на cuda - поменять шило на мыло:).

    >"За три месяца? Исследовать за три месяца (part-time) реально, наверное, а вот написать полноценный транслятор Java<->C, как-то не очень."
    ---
    Я бы рассматривал это скорее как теоретическую работу. Поиск истин:). Конкретный транслятор - хм... как по мне лучше быть автором статьи цитируемой сотнями(тысячами, миллионами!) создателей трансляторов с одного многопоточного языка на другой.

    ОтветитьУдалить
  8. > Скорее 1)"засветится" 2)представить на анализ исследование "ответственным мужам" свое исследование.

    ИМХО, это можно сделать замечательно в любое время, независимо от конкурса.

    > Писать конкретный код для CUDA - не слишком большое счастье.

    Это точно. Берем С. Берем доку. Пишем :) Все равно все упирается в паралелизацию алгоритма.

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

    Ну миллионов создателей трансляторов - я думаю не наберется :)

    ОтветитьУдалить