Способы параллелизации

Alexander Komarov (Intel) (5 пост(а)) 26.10.2007 03:02

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

Win threads, PThreads

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

OpenMP

Если вам повезло с задачей (или просто вы пишите курсовую по методом мат. вычислений), то это идеальный способ посчитать все быстро на вашем домашнем Quad Core Extreme Edition CPU :) Если серьезно, я относился к OpenMP всегда очень скептически, но все чаще начинаю использовать ее для прототипов в самых неожиданных задачах.

Boost Threads

Единственный потенциально 100% портируемый С++ вариант. Больше преимуществ на первый взгляд не заметно.

Ace Threads

Я бы не стал включать в список, но некоторые мои клиенты его успешно используют...

Intel TBB

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

Ct

Даже линка нет, настолько секретная. Но Гугл вам в помощь. Может оказаться очень полезной года через 2, а может и нет...

MPI.

Несмотря на то, что MPI используется обычно для HPC задач в кластерах, в последнее время есть тенденция использовать message passing параллелизацию и в многоядерных решениях, в том числе, например, создавая кластера из виртуальных машин.

(pre-MPI)

Экзотические. Я имею в виду не C/C++/Fortran, а Erlang, параллельный Хаскель, и тому подобные. Могут быть страшно эффективны, но как найти команду программистов, с ними справляющихся?

Transactional memory.

Жутко модная вещь, многие считают, что за ней - будущее. Мое личное мнение (просто сугубое ИМХО), 80% коллег со мной не согласятся: Будущее очень отдаленное, и то вряд ли.

Кстати, это мой последний пост, к сожалению. Всем удачи, мой личный блог - вот, я уезжаю в Новую Зеландию работать в стартапе.

Категории: Многоядерность, Разработка софта

Комментарии (0) Комментарии в RSS-потоке

Для данной записи нет комментариев.


А что думаете вы?

Имя (обязательное поле)

Электронная почта (обязательное поле; не будет отображено на данной странице)

Ваш URL-адрес (дополнительный)

Комментарии (обязательное поле)