Конкурс «Объясни на пальцах v2.0» - победители

Теги:

Конкурс  «Объясни на пальцах v2.0»

Краткая информация о конкурсе

Конкурсы серии «Объясни на пальцах» объединены одной идеей: на простых примерах объяснить сложные термины из определенных областей программирования. Для каждого из конкурсов мы подбираем несколько терминов, а участники присылают нам их толкования.

Для опытных программистов «Объясни на пальцах» - это хорошая возможность немного расслабиться и продемонстрировать свое чувство юмора. Для начинающих – стимул еще раз перечитать учебники и тематические статьи в Интернете. Судьи выбирают победителей по критериям «корректность» и «творческий подход», а это значит, что «объяснения» должны быть технически точными, хорошо запоминающимися и веселыми. Авторы лучших объяснений получают скромные, но приятные призы от команды Intel® Developer Zone.

В конкурсе «Объясни на пальцах v2.0» мы предложили раскрыть несколько базовых терминов, описывающих фундаментальные понятия технологий параллельного программирования. Вот их список:

  • Data decomposition & Functional decomposition
  • SIMD & MIMD
  • Multitasking & Multithreading
  • Busy waiting thread & Sleeping thread
  • Thread Pool
  • Context Switching

Победители

За три с небольшим недели (с 1 по 24-е июля 2009) 78 участников оставили в нашем форуме более 300 «объяснений». Судейская коллегия тщательно изучила все присланные варианты, оценила их, подсчитала голоса участников сообщества, и выбрала победителей:

  • Первое место: Григорий Петров, г. Москва a.k.a. eyeofhell

К Григорию отправляется наш главный приз - Нетбук Lenovo IdeaPad S10. Вот такой:

главный приз - нетбук Lenovo s10

  • Второе место: Павел Довгалюк a.k.a. dovgaluk
  • Третье место: radiometer (имя уточняется)

Павел и radiometer получают утешительные призы: подарочные карты VISA номиналом в 3000 рублей и USB 4G модемы.

Многие участники конкурса продемонстрировали здоровое чувство юмора и неплохое понимание предметной области. Стараясь выбрать лучших из лучших, судьи потратили два лишних дня на оценки и составление итогового рейтинга. Мы приносим прощения за задержку с объявлением итогов, и хотим отметить тех, кто был буквально в одном шаге от призовой тройки. Не расстраивайтесь! Следите за анонсами на страницах Intel® DZ и в специальном «конкурсном» блоге. В следующий раз вам обязательно повезет!

Итак, десятка самых креативных параллельных программистов:

Лучшие «объяснения»

Полный список конкурсных «объяснений» можно найти в нашем форуме. На данной странице мы приведем некоторые работы от десятки лучших участников:

Data decomposition & Functional decomposition by Ferlon

Все мы учились в школе, поэтому должны помнить. В младших классах каждый учитель ведёт занятия сразу по всем предметам, но у детей только из своего класса - это data decomposition. А в старших классах каждый учитель преподаёт только свой предмет, но зато сразу в нескольких классах - это functional decomposition.

SIMD & MIMD by radiometer

Пельменная таксономия. Когда хочется домашних пельменей, то чтобы их налепить приходится работать в режиме SIMD – есть куча лепешек, которые надо по-одному слепить в пельмень. Это крайне неэффективно. Поэтому, так как данные (пельмени) однотипные, можно пользоваться бытовой пельменницей, которая одним движением способна слепить сразу несколько пельменей (SIMD).
Хотя и тут есть недостаток – пропускная способность шины не велика: надо накатать тесто на пельменницу и разложить мясо – в общем обеспечить исполнительное устройство данными, а оно в это время простаивает. Поэтому лучше всего прибегнуть к MIMD-архитектуре – позвать друзей и лепить пельмени вместе. При этом «исполнительные устройства» работают асинхронно и независимо, но пользуются «разделяемой памятью», т.е. столом, где лежать пельмени, и плашками, куда складываются готовые «данные».

Multitasking & Multithreading by eyeofhell

Однажды, когда многомудрый гуру спокойно пил чай и медитировал над парадигмой евроремонта, к нему прибежал запыхавшийся прораб.
- Не успеваю! - воскликнул он, с мольбой глядя на учителя.
- Что, опять два десятка рабочих набрал, а работают одновременно только двое? - с улыбкой спросил учитель.
- Опять.
- А ты помнишь, чем отличается многозадачность от многопоточности?, - с еще более широкой улыбкой поинтересовался учитель.
- Ну… э… они все одновременно делать должны. Но ведь не делают!
- Не используй волшебное слово «все», юный подаван, - посерьезнел учитель. - Оккама на тебя нет. Есть задачи - их надо выполнять. Например, сейчас тебе надо выложить кафелем пол торгового центра и покрасить его стены, так?
- Так..., - прораб даже потерял дар речи от проницательности учителя. О нервно сжимаемом в руках куске кафеля он уже давно забыл и свято верил в то, что учитель обладает не только большой мудростью, но и даром телепатии.
- Это твои задач. Их две. И небось, у тебя как обычно Джамшут кладет плитку, Равшид красит стены и еще восемнадцать человек перекуривают?
- Да, - грустно согласился ученик.
- Это потому, что многозадачность - это одновременное выполнение задач. Но если ты хочешь чтобы задачи выполнялись не только одновременно но и быстро - дели каждую из них на части и тоже выполняй эти части одновременно. Это и будет многопоточность - пусть девять человек одновременно с Джамшутом кладут плитку, а еще девять одновременно с Равшидом красят стены. И будет тебе, - учитель ненадолго задумался, - и многозадачность, и многопоточность, и race conditions.

Busy waiting thread & Sleeping thread by marinka

Если твоя сестра заняла такой важный совместно используемый ресурс как ванная и не выходит оттуда уже полтора часа, то у тебя есть два варианта:

1. каждые три минуты стучать в дверь, взывая к ее спящей совести (активно ожидающий поток)
2. расслабиться и подождать, пока сестра выйдет сама (пассивно ожидающий поток).

PS: Если вы думаете, что данный пример не подходит, потому что стук в дверь ванной может как-то ускорить ее освобождение, то вы просто не знаете сестер ;)

Thread Pool by unnamed_ages

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

Context Switching by rus-and

Остап Бендер ведет сеанс одновременной игры, переходя от одного шахматного стола к другому - меняет контекст.
При этом информация о контекстах при переключении сохраняется - как говорится, "У меня все ходы записаны!".

И, конечно же, отдельного упоминания стоят две «комплексные» работы по мотивам кино- и литературной классики. Это объяснения Александра Галкина по мотивам рассказов А. Конандойля и видеоролик, подготовленный dovgaluk:

И еще раз спасибо всем-всем, кто принял участие в конкурсе! Ваши замечания и предложения, как обычно, приветствуются у нас в форуме. То, чего нельзя говорить на форуме, можно написать мне лично – Dmitry.Oganezov в домене Intel.com.

Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.

Комментарии

Аватар пользователя narsereg

Ну и когда же будут результаты? )

Аватар пользователя tt-78

Сегодня уже 5-ое августа, 22:12.

Аватар пользователя Dmitry Oganezov (Intel)

http://software.intel.com/ru-ru/blogs/2009/08/05/v20-2/