войти зарегистрироваться

C++Ускоряем OpenMP в Visual C++ 2010 из песочницы

Одним из популярных и дешёвых средств реализации многопоточных вычислений на языке C++ является OpenMP.

Достоинства технологии очевидны: простота; малые, и легко отключаемые изменения в коде; поддержка от авторов самых популярных компиляторов:
  • Visual C++
  • GCC 4.2
  • Intel C++ Compiler
Проверка боем проходит успешно, и вот распараллеленный код проникает в самые укромные уголки проекта, бьёт все рекорды производительности, выдавая шикарную статистику, подтверждающую успешность релиза.

Проходит пара лет, вы успешно мигрируете на Visual Studio 2010,… и обнаруживаете себя сидящим в луже. Если вчера обработка большого массива данных на машинах с многоядерными процессорами проходила за считанные секунды, то сегодня наличие любого фонового приложения, занимающего собственными вычислениями одно или несколько ядер, практически вешает приложение.

Почему так происходит, и как с этим бороться?

nVidia CUDAОбзор CUDA отладчика «NVIDIA Parallel Nsight 2.0» из песочницы

imageОтладка параллельного кода – процесс утомительный и умозатратный. Ошибки распараллеливания проблематично отловить из-за недетерминированности поведения параллельных приложений. Более того, если ошибка обнаружена, ее часто сложно воспроизвести снова. Бывает, что после изменения кода, сложно удостовериться, что ошибка устранена, а не замаскирована. Чаще всего, ошибки в параллельной программе являются гейзенбагами. Порой испытываешь острую потребность в максимально удобных и функциональных инструментах отладки параллельных программ.

Высокая производительностьMatlab кластер своими руками из песочницы

Вступление


Рано или поздно пользователь пакета Matlab/Simulink сталкивается с проблемой недостаточной производительности компьютера, на котором работает. Столкнулся и я.

Первое, что пришло на ум — это модернизация железа. Работаю я на стареньком ноутбуке, и поэтому начал подумывать о стационарном ПК. Но большого прироста производительности это не сулило, да и вообще это метод геймера но не инженера.

Подробности под катом >>

.NETРаспараллеливание задач. Случай «идеальной параллельности». Часть 2

Предлагаемые решения в .NET 4


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

Для распараллеливания «идеальных» циклов предоставляются следующие варианты:
  • класс System.Threading.Tasks.Parallel с методами For (), ForEach ()
  • Parallel LINQ с методом расширения AsParallel ().


Блог компании IntelIntel Ct beta — что, зачем, как

2 недели назад помогал клиенту начать пользоваться бетой Intel Ct. Заодно, как водится, и сам немножко разобрался, и теперь хочу поделиться.

Недавно появилась возможность скачать бету Ct, зарегистрировавшись на сайте. Пока только для Windows, но через некоторое время должна появиться бета и для Linux.

Блог компании IntelПараллельные заметки №3 — базовые конструкции OpenMP

Начнем знакомство непосредственно с использованием технологии OpenMP и рассмотрим в этой заметке некоторые базовые конструкции.

Блог компании IntelПараллельные заметки №2 – инструментарий для OpenMP

image
Прежде чем приступить к изучению методики распараллеливания программ с помощью технологии OpenMP рассмотрим инструментарий, который нам потребуется. А потребуется нам в первую очередь Visual Studio 2005/2008 и Intel® Parallel Studio.

PythonПараллельный Питон, начало

Disclaimer


Родилась у товарища географическая потребность перенести кусочек карты из одного участка Земли в другой. Он это по привычке сделал на дельфях, мне же захотелось попробовать в действии питон, в коем я спецом не являюсь.

Практика


Собственно перевести алгоритм оказалось делом совсем несложным, но вот скорость его работы оставляла желать лучшего.
Первым делом в ход пошел Psyco, ускорив обработку в 6 раз.

Получить лучший результат без изменения алгоритма уже не представлялось возможным, поэтому в ход пошел метод грубой силы — распараллеливание задач.

MicrosoftСегодня начнется PDC — главная конференция для разработчиков от Microsoft

image  Хочу напомнить, что сегодня в Лос-Анджелесе стартует главное мероприятие Microsoft для разработчиков, которое проходит раз в несколько лет — PDC 2008.
  На этой конференции будет анонсированы все новинки, которые Microsoft предложит разработчикам всего мира на протяжении ближайших лет. Это место, где будет рассказано обо всех планах, технологиях и платформах.
  Самое главное — мы все сможем посмотреть это в онлайне на сайте www.microsoftpdc.com. На сайте уже сейчас можно найти описание тем киноутов (пленарных докладов):
  • 27 октября, 18.30 (МСК) — Cloud Computing (среди докладчиков — Chief Software Architect Рэй Оззи)
  • 28 октября, 18.30 (МСК) — Следующее поколение пользовательских интерфейсов (среди докладчиков — Скотт Гатри и старший по Windows Стивен Синофски)
  • 29 октября — Исследовательские проекты
  • 30 октября — Параллельные вычисления
  Как вы понимаете, это самое общее описание, все секреты раскроются уже на самом PDC :)
  Также не забудьте про доклады — их будет очень много и они будут очень технологичными.
  В общем, ждем, смотрим и наслаждаемся настоящим шоу для разработчиков!

.NETПроизводительность C#

Ради интереса хочу показать сообществу график, который демонстрирует производительность C# для матричных операций, по сравнению с C++, C++ с OpenMP, а также Parallel Extensions. По оси X — размер матриц. По оси Y — время выполнения операции умножения в секундах (шкала логарифмическая).



Что уважаемое сообщество думает на эту тему? Имеет ли смысл разрабатывать performance-critical приложения на .NET? Или стоит вкладывать больше энергии в изучение Intel-евских тулов? (Intel TBB, MKL, IPP)? Или просто использовать OpenMP?

P.S.: Картинка снята из моего блога. Полный очерк (на английском) тут.