Параллельные алгоритмы направлены на ускорение работы приложения за счет распределения задач на разные потоки. Такой подход действительно дает существенное преимущество перед линейным выполнением задач. Но в некоторых случая можно реально ускорить параллельный код!
Читать полностью »
Метка «параллельное программирование» - 2
Active Object Pattern: Повышаем производительность многопоточной системы
2012-10-21 в 4:54, admin, рубрики: c++, параллельное программирование, паттерны проектирования, Программирование, метки: параллельное программирование, паттерны проектирования, ПрограммированиеДемонстрация сбоев программы при отсутствии барьеров памяти
2012-10-20 в 20:35, admin, рубрики: c++, c++11, lock-free, mobile development, многопоточность, параллельное программирование, метки: c++11, lock-free, АРМ, многопоточность, параллельное программированиеДжефф Прешинг (Jeff Preshing) опубликовал отличную демонстрацию, как нормальный код C++ возвращает непредсказуемый результат на процессорах со слабо упорядоченной обработкой очереди запросов (Weakly-Ordered CPU), то есть на всех многоядерных ARM-процессорах. Например, на iPhone или каком-нибудь современном Android-устройстве.
Простая программа C++ с двумя потоками 20.000.000 раз прибавляет единичку к значению, защищённому мьютексом, — и каждый раз на выходе получается разный результат, который меньше 20.000.000!
Как говорится, наш враг — CPU.
Читать полностью »
Игра «Жизнь». Опять. На этот раз в 3D
2012-10-14 в 17:03, admin, рубрики: c++, OpenGL, Алгоритмы, жизнь, клеточный автомат, параллельное программирование, метки: c++, OpenGL, жизнь, клеточный автомат, параллельное программированиеЗа последнюю неделю Хабр пополнился сразу несколькими статьями об игре «Жизнь». Что ж, тогда и я поделюсь своими наработками по этой теме.
Предисловие
Минувшим летом мне довелось побывать на летней школе по параллельному программированию, проводимой НГУ. В рамках школы каждый студент должен был подготовить какой-либо проект по одной из тематик, озвученных на лекциях. Меня заинтересовали клеточные автоматы. У меня первая ассоциация при фразе «клеточный автомат» это именно «Жизнь».
Я понимал, что никому не будет интересно наблюдать за черными клеточками, живущими на экране. Да и слишком просто это для такого проекта. Нужно было придумать что-то принципиально новое. Я решил расширить диапазон своих мыслей и выйти за пределы двухмерного пространства. В прямом смысле. Я подумал, а почему бы не сделать эту игру трехмерной? Ведь это гораздо интереснее!
Читать полностью »
Метод геометрического параллелелизма и еще немного про MPI
2012-09-18 в 18:59, admin, рубрики: mpi, параллельное программирование, Песочница, метки: mpi, параллельное программирование Здравствуйте, сегодня я хочу рассказать про метод геометрического параллелелизма для решения двумерного уравнения теплопроводности. Для наглядности, некоторые фрагменты будут реализованы при помощи MPI на языке C. Я постараюсь не повторяться с этой и этой статьями, и рассказать что-нибудь новенькое.
Читать полностью »
Считаем Пи параллельно. Часть 1
2012-09-04 в 11:45, admin, рубрики: параллельное программирование, Программирование, метки: параллельное программирование
В этой серии постов мы попробуем решить одну простую задачу с помощью более-менее актуальных технологий параллельного программирования (Нативные потоки, OpenMP, TBB, MPI, CUDA, OpenCL, OpenACC, Chapel может быть еще что-нить экзотическое. Как бы сравнительно и в hands-on ключе.
Читать полностью »
Написание многопоточных программ на PHP
2012-07-29 в 21:23, admin, рубрики: fork, php, высокая производительность, параллельное программирование, метки: fork, PHP, параллельное программированиеПараллельные программы на PHP
В PHP есть ровно один «нормальный» способ писать приложения, которые используют несколько ядер/процессоров — это fork(). О прикладном использовании системного вызова fork() в языке PHP и расширения pcntl я и расскажу. В качестве примера мы напишем достаточно быструю параллельную реализацию grep (со скоростью работы, аналогичной find . -type f -print0 | xargs -0 -P $NUM_PROCS grep $EXPR
).
Читать полностью »
Бесплатного супа больше не будет
2012-06-07 в 14:38, admin, рубрики: высокая производительность, параллельное программирование, параллельные вычисления, Программирование, Процессоры, метки: высокая производительность, параллельное программирование, параллельные вычисления, Программирование, процессорыФундаментальный поворт к параллелизму в программировании
Автор: Херб Саттер
Перевод: Александр Качанов
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
(By Herb Sutter)
Ссылка на оригинал статьи: www.gotw.ca/publications/concurrency-ddj.htm
Примечание переводчика: В данной статье дается обзор современных тенденций развития процессоров, а также, что именно эти тенденции значат для нас — программистов. Автор считает, что тенденции эти имеют фундаментальное значение, и что каждому современному программисту придется кое в чем переучиваться, чтобы не отстать от жизни.
Данная статья достаточно старая. Ей уже 7 лет, если считать с момента ее первой публикации в начале 2005 года. Помните об этом, когда будете читать перевод, так как многие вещи, которые для вас уже стали привычными, для автора статьи в 2005 году были в новинку и только-только появлялись.
Acceler8 2011 — Accelerate 2012 — и так далее
2012-05-02 в 13:33, admin, рубрики: Блог компании Intel, конкурс, ненормальное программирование, параллельное программирование, Программирование, Спортивное программирование, метки: конкурс, параллельное программирование, Программирование
Вы участвовали в конкурсе параллельного программирования Acceler8 2011? Тогда этот пост — про вас.
Вы участвуете в проходящем сейчас конкурсе Аccelerate-2012? Тогда этот пост — для вас.
Вы принимали участие или только планируете участвовать в любом конкурсе спортивного программирования? А может, собираетесь начать свой первый самостоятельный проект? Тогда Вас, Штирлиц, я попрошу остаться с нами.
Этот пост — «разбор полетов» прошлогоднего конкурса Intel — Acceler8 2011, выполненный одним из членов жюри. Он прокомментировал ключевые конкурсные моменты, а также дал банальные и очевидные, но до сих пор актуальные советы по участию в подобных соревнованиях и по ведению проектов.
Итак, Читать полностью »
«Конкурс параллельного программирования Accelerate 2012» или «6 ультрабуков и 10 SSD хватит всем!»
2012-04-19 в 5:46, admin, рубрики: intel, Блог компании Intel, конкурс, ненормальное программирование, параллельное программирование, Спортивное программирование, ультрабук, метки: intel, конкурс, параллельное программирование, ультрабук
Всем привет!
Последняя неделя на Хабре ознаменовалась серией хакерских постов — взламывали как VoIP, так и онлайн-пробки.
Предлагаю продолжить неделю более созидательно — решить задачу мирового масштаба по генетике по параллельному программированию.
Сделать за месяц надо всего ничего: найти в двух строках, состоящих из нуклеотидов символов A, T, G и C, максимально длинную общую подстроку.
Призы по сравнению с предыдущим разом подросли и окрепли — сегодня на кону 6 ультрабуков Asus Zenbook UX31E и 10 SSD-дисков суммарной емкостью 800 гигов.
Заманчиво? Читать полностью »