Pull to refresh
  • by relevance
  • by date
  • by rating

StreamIt — новый язык для параллельного программирования

Working with video *
Специалисты из Массачусетского технологического института разработали новый язык параллельного программирования StreamIt. Язык в первую очередь ориентирован на программирование потоковых приложений, таких как потоковое видео и аудио, системы мобильной связи, шифрование и дешифрование потоков информации в реальном времени. Подробная информация — на сайте проекта StreamIt.
Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 525
Comments 5

Какой должна быть будущая технология параллельного программирования

Lumber room
Увидел хабратопик «Программирование параллельных процессов — это слишком сложно?», и понял, что здесь есть хабралюди, которым это интересно. Не удержался выразить своё мнение по этому поводу.

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

Поэтому Intel и заинтересована в том, что бы производители программных продуктов писали многопоточные программы для десктопов.

Однако не всё так просто.
Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Views 563
Comments 81

Установка и начала использования библиотеки MPI

Lumber room
Иногда необходимо запустить приложение на нескольких машинах (или процессорах), чтобы улучшить производительность (т.е. уменьшить время выполнения). Можно создать компьютерную сеть для последующего запуска приложения распределённо по всем узлам. При разработке такого приложения необходимо организовать обмен сообщениями. Я знаю две реализации:
  • использование сокетов и работа с OS API напрямую,
  • использование MPI.
Первый вариант обладает большими возможностями, но библиотека MPI существенно проще и, в действительности, шире применяется в параллельных вычислениях. MPI представляет собой стандарт некоторого набора функций для обмена сообщениями между процессами одного приложения. Существует бесплатная реализация данной библиотеки MPICH2, которая будет использоваться в данной статье. Вы модете найти большое количество мануалов и руководств по функциям библиотеки. Сейчас я остановлюсь только на установке и проверке работоспособности.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Views 15K
Comments 7

Многоядрёное программирование в .Net и нити.

.NET *
Несколько дней назад написал пост про то, как количество нитей влияет на скорость вычислений. В комментариях, меня неоднократно обвинили в том, что при использовании нитей используется только одно ядро (или один процессор), а для просветленного многоядерного программирования надо использовать Parallel Extensions. Подобные утверждения меня, мягко сказать, удивили, потому решил разобраться более детально в вопросе.
тем, кто считает, что нити живут в пределах только одного ядра, читать дальше
Total votes 52: ↑30 and ↓22 +8
Views 1.3K
Comments 84

Шуточный конкурс для серьезных программистов — «Объясни на пальцах v2.0»

Intel corporate blog
«Заходя в ванную, Анжела забыла взять с собой халат. Обычно она может выйти в комнату и в неодетом виде, но, пока она была в ванной, в гости зашёл Антон, которому Анжела должна отдать флэшку, которая лежит у неё в сумочке. Сам Антон в сумочку лезть отказывается, и требует, чтобы флэшку отдала ему Анжела. Без флэшки он не уйдёт. Анжела не может выйти в комнату пока там Антон. Антон ждёт, пока ему отдадут флешку, Анжела ждёт ухода Антона, после которого она может выйти и отдать флешку.»

Что за бред, — подумали вы? А вот завсегдатаи тематического блога Системное программирование уже смекнули о чем речь. Тем, кто сталкивался с параллельным программированием, ситуация знакома до боли — это типичная взаимная блокировка (Deadlock).

В прошлом году мы в Intel Software Network устроили шуточный конкурс «Объясни на пальцах» – нужно было придумать смешное объяснение нескольких «специальных» терминов. Народ здорово оттянулся! Вот еще мне очень понравилось:

«Когда в хоккее судья контролирует, чтобы при очередной смене пятерок, не было превышения численного состава, то есть, в порыве спортивной удали, на лед не выпрыгнула вся команда во главе с тренером, массажистом и дядей Васей — точильщиком коньков»

Угадали термин? (ответ под хабракатом).

Так как в центральной части России установилась жаркая и почти сухая погода, мы решили ненадолго отвлечь вас от дебаггера и немного развлечься. Итак, «Объясни на пальцах v2.0» — новая пачка терминов для толкования и, конечно же, приз самому остроумному — нетбук Lenovo IdeaPad.
Читать дальше →
Total votes 40: ↑35 and ↓5 +30
Views 5K
Comments 72

Обновление в Библиотеке учебных курсов

IT-companies
Библиотека учебных курсов пополнилась новыми курсами и книгами:
  • Технология разработки программных систем
  • Основы разработки компьютерных игр в XNA Game Studio
  • Разработка веб-приложений на ASP.NET
  • Параллельное программирование для многоядерных процессоров
  • Командная разработка с использованием Visual Studio Team Foundation Server
  • Знакомство с Microsoft Visulal Studio Team System 2008
  • Гибкая методология разработки программного обеспечения
Под катом описания и ссылки.
Читать дальше →
Total votes 35: ↑24 and ↓11 +13
Views 1.1K
Comments 5

Параллельное программирование в черном ящике

Intel corporate blog
Около двух месяцев назад состоялся первый экспериментальный русскоязычный онлайн-семинар от Intel "Intel Parallel Studio workflow". На этом семинаре была сделана попытка показать, что существуют такие волшебные инструменты, которые помогут реализовать распараллеливание и оптимизацию кода на языке Си++, даже если вы не имеете полного представления о принципах работы программы. Я знаю, что подобный подход часто критикуется. И очередное напоминание, что показанные на вебинаре действия являются некорректными, сподвигло меня на этот пост.



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

В настоящее время сформировались и обсуждаются два подхода к проблеме распараллеливания программ. Сторонники первого хотят получить какие-то средства, которые позволят им при минимальной переделке программы осуществить ее распараллеливание. Это практики, которые хотят приспособить свои решения к возможностям многоядерных систем, появляющихся на столах обыкновенных пользователей. Вторые любят поговорить о различных теориях распараллеливания, о языках параллельного программирования и том, что необходимо четко понимать, как будет работать параллельный код. Ведь, по их мнению, иначе невозможно достичь его корректности и эффективности.

Лично я согласен с...
Total votes 33: ↑24 and ↓9 +15
Views 9.5K
Comments 47

1, 1, 2, 3, 5, 8 или как я поборол Фибоначчи-зависимость

Intel corporate blog
image
Числа Фибоначчи — элементы числовой последовательности 1, 1, 2, 3, 5, 8, 13, 21, 34,… в которой каждое последующее число равно сумме двух предыдущих чисел. Числа Фибоначчи мы можем заметить во многих объектах природы, в соотношении пропорций туловища или увидеть реализацию спирали Фибоначчи в раковине моллюска.

С недавнего времени мне не дают покоя эти самые числа Фибоначчи! С какими бы материалами по параллельному программированию я не знакомился, я всюду встречаю эти числа. Возникает ощущение, что все параллельное программирование связано исключительно с проблемой вычислений чисел Фибоначчи.

Вычисление чисел Фибоначчи приводится во множестве печатных и электронных статей. Даже Wikipedia-статья о Parallel computing содержит пример их вычисления.

Какой пример любят приводить разработчики Cilk? Конечно, вычисление чисел Фибоначчи. Числа Фибоначчи в проспекте Cilk "Parallelism for the Masses". Числа Фибоначчи в описании Cilkview. Про Фибонначи идет речь в "Cilk Reference Manual". Проще говоря, везде.

Читать дальше →
Total votes 29: ↑16 and ↓13 +3
Views 32K
Comments 15

Знакомство с уровнями распараллеливания

Intel corporate blog
image
Распараллелить решение задачи можно на нескольких уровнях. Между этими уровнями нет четкой границы и конкретную технологию распараллеливания, бывает сложно отнести к одному из них. Приведенное здесь деление условно и служит, чтобы продемонстрировать разнообразие подходов к задаче распараллеливания.
Читать дальше →
Total votes 63: ↑61 and ↓2 +59
Views 32K
Comments 26

Параллельные заметки №1 – технология OpenMP

Intel corporate blog
OpenMP В ближайшие несколько постов мы расскажем о практическом использовании многоядерных процессоров. Ведь все-таки что бы ни говорилось о многоядерности, в любом случае программы надо «обучать» эффективному использованию нескольких ядер. А в этом первом посте будет анонс и первая «вводная» заметка.
Читать дальше →
Total votes 37: ↑32 and ↓5 +27
Views 22K
Comments 15

Вечный вопрос измерения времени

Intel corporate blog
Казалось, закончились долгие обсуждения в форумах, как измерить время работы алгоритма, какие функции использовать, какую точность ожидать. Жаль, но опять придется вернуться к этому вопросу. На повестке дня, как лучше измерить скорость работы параллельного алгоритма.
Читать дальше →
Total votes 36: ↑31 and ↓5 +26
Views 16K
Comments 24

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

Intel corporate blog

Недавно уважаемые и достойные организации, такие как МГУ, РАН и Суперкомпьютерный консорциум университетов России выпустили книгу «Суперкомпьютерные технологии в науке, образовании и промышленности». Книга вышла под редакцией академика В.А. Садовничего, академика Г.И. Савина, чл.-корр. РАН Вл.В. Воеводина, то есть не менее достойных сэров. Книга посвящена тому, как используются те вещи, которые обычно считаются «космическими» на практике. Однако в настоящее время, суперкомпьютерные технологии перестают быть только научным направлением и начинают решать все больше практических вопросов, связанных с проектированием и производством. Я приведу несколько примеров применения суперкомпьютеров из этой книги.
Читать дальше →
Total votes 33: ↑26 and ↓7 +19
Views 11K
Comments 13

Побочные эффекты распараллеливания

Intel corporate blog
image
Сейчас я скажу о том, что все знают и о чем говорят уже несколько лет. Параллельное программирование неизбежно. Я знаю, что прозвучало это банально! Но я специально выделил это в отдельный маленький пост, в надежде кто-то задумается над этой простой фразой чуть дольше. Часто то, о чем мы регулярно слышим, теряет всякий для нас смысл и не приводит к размышлениям и выводам. Попробуем же сделать несколько этих выводов.
Читать дальше →
Total votes 57: ↑46 and ↓11 +35
Views 15K
Comments 85

Параллельные заметки N5 — продолжаем знакомиться с конструкциями OpenMP

Intel corporate blog
image
Предлагаю вашему вниманию очередную заметку посвященную знакомству с технологией параллельного программирования OpenMP. Рассмотрим директивы: atomic, reduction.

Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Views 43K
Comments 4

Нам это не нужно

Intel corporate blog
image
Этой тарахтелкой можно пугать беременных кошек, но какой прок от неё в бою? — генерал Китченер о первом танке, 1915.

Эта заметка получилась у меня странным образом. Изначально я сел, чтобы написать текст об особенностях использования юнит-тестов для ресурсоемких приложений. Хотелось написать, что вот-вот на наши столы взгромоздятся компьютеры с сотнями гигабайт оперативной памяти и сотнями процессорных ядер. А затем описать, как это может повлиять на разработку и тестирование приложений.

Но еще не приступив к сути, я почувствовал что со всех сторон стекаются комментарии «такая система мне не нужна», «программам не нужны такие ресурсы», «текущих ресурсов и так для всего хватает», «будущее за видеокартами».

Я сделал отступление, чтобы написать для чего это нужно. Потом развил отступление. А потом взял и написал пост, почему я считаю, зачем нужны и полезны гигабайты и много-много ядер.
Читать дальше →
Total votes 84: ↑67 and ↓17 +50
Views 16K
Comments 70

Самообман простоты

Intel corporate blog

В статье рассматривается проблема превышения сроков создания программ как результат самообмана: будто бы программирование — это просто, и даже еще проще. Создатели новых технологий в области разработки программного обеспечения уверяют, что их технология поможет решить огромное количество проблем и что теперь разработка программного обеспечения становится как никогда простым и быстрым процессом. Но практика неумолима. Вновь и вновь срываются сроки завершения очередного программного проекта.
Читать дальше →
Total votes 87: ↑76 and ↓11 +65
Views 24K
Comments 30

Eclipse, MPICH и PTP для администратора. Настраиваем связку для работы с кластером

Eclipse *
Если блог не подходящий, подскажите, куда можно перенести

Для программирования «под кластер» существует определённое множество технологий, в которое входят такие гранды, как коммерческая Visual Studio, в версии 2010 которой программистами Microsoft была проведена гигантская работа, и свободно-распространяемый Eclipse, о котором и пойдёт речь.

Так, для Eclipse команда разработчиков активно развивает связку PTP & PLDT, всю информацию о которой можно найти на сайте.
Примечания для интересующихся:
* Рассмотрена компиляция проекта на C. Проект на С++ настраивается аналогично. Для Java не тестировалось.
* Руководство для администратора.

Вкратце, до хабраката:
* Eclipse должен быть соответствующим образом собран с необходимыми плагинами (PTP & PLDT);
* должна быть собрана имплементация MPI (в данном случае MPICH, но можно использовать и OpenMPI);
* MPICH запустит своего демона на вычислительных узлах (включая головной)

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 2.3K
Comments 6