Мой недавний пост про OpenMP 4.0 натолкнул меня на мысль, что было бы неплохо написать и про Intel® Cilk™ Plus, потому что модель программирования весьма интересная и уж точно заслуживает отдельного внимания. Ну и раз её часть стала фактически новым стандартом OpenMP, то, вероятно, были на то веские причины.
Читать полностью »
Рубрика «параллельное программирование» - 30
Поговорим про Intel® Clik™ Plus
2013-12-11 в 5:45, admin, рубрики: Блог компании Intel, параллельное программирование, Программирование, метки: параллельное программированиеОбработка событий в реальном масштабе времени с помощью SynapseGrid
2013-12-05 в 13:19, admin, рубрики: scala, Блог компании Праймтолк, параллельное программирование, реактивное программирование, функциональное программирование, метки: scala, параллельное программирование, реактивное программирование, функциональное программированиеЗанимались мы как-то обработкой аудио на Java с помощью сложных алгоритмов. Каждый кусочек аудио должен был пройти длинную цепочку обработки (20-50 алгоритмов разной степени сложности). Потоки аудио поступали параллельно, алгоритмы работали параллельно, и завершались в разные моменты. Некоторые алгоритмы нуждались в разной степени буферизации. Из кусочков аудио извлекалась информация повышающегося уровня абстракции, то есть начиная с какого-то уровня уже шло не аудио, а извлечённая информация об этом аудио.
Всё хозяйство должно было работать в рамках одного экземпляра приложения, но при этом должно было быть несколько вложенных почти независимых очень похожих контейнеров для клиентского кода (типа Bean'ов).
С самого начала мы не ставили задачу всеобщей унификации, и решали в каждой части системы по своему. Где-то использовали потоки для длительных задач, где-то создавали цепочки вызовов, где-то — модель подписки. Так как система была довольно большой, то практически все известные способы декомпозиции и обработки были задействованы в той или иной степени. Потом мы обнаруживали общность и реализовывали похожие решения в разных частях системы. А потом изобрели первую версию того, что сейчас мы называем система контактов или SynapseGrid.
Читать полностью »
Оптимизация приложений под Android x86: проверенные способы
2013-12-05 в 7:28, admin, рубрики: atom, sse, Блог компании Intel, параллельное программирование, Разработка под android, метки: atom, sse
Любое приложение для Android, даже написанное только на скриптовых языках (таких как Java или HTML5), в конечном счёте использует базисные компоненты среды исполнения, которые должны быть оптимизированы. Хорошими примерами для иллюстрации оптимизационных подходов и потребностей являются приложения, использующие технологии мультимедиа и дополненной реальности, описанные ниже. Для платформы Android (смартфоны и планшеты) Intel использует различные виды процессоров Atom, имеющих SSSE3 уровень векторизации и обычно 2 ядра с гипертредингом – считайте это намеком :) Для тех, кто намек понял, под катом – история оптимизации и распараллеливания одного конкретного приложения израильской компании iOnRoad — iOnRoad.
Читать полностью »
Ждали, ждали и дождались! OpenMP 4.0
2013-12-04 в 8:22, admin, рубрики: openmp, Блог компании Intel, Компиляторы, параллельное программирование, метки: openmp, параллельное программирование![Ждали, ждали и дождались! OpenMP 4.0 Ждали, ждали и дождались! OpenMP 4.0](https://www.pvsm.ru/images/jdali-jdali-i-dojdalis-OpenMP-4-0.png)
Каждая новая спецификация OpenMP вводит очень полезные и необходимые дополнения к уже существующему функционалу. Например, в версии 3.0 были добавлены так ожидаемые задачи (tasks), позволившие решать ещё больший спектр задач по распараллеливанию приложений. В 3.1 целый ряд улучшений по работе с задачами и редукциями.
Но по сравнению с тем, что нам теперь даёт стандарт 4.0, предыдущие нововведения кажутся какими-то мелкими. Последняя версия расширила типы поддерживаемого параллелизма, чего раньше никогда не замечалось.
Читать полностью »
Microsoft Robotics. Параллельная обработка данных
2013-12-02 в 14:28, admin, рубрики: .net, microsoft, microsoft robotics developer studio, параллельное программирование, параллельные вычисления, метки: .net, c++, DEV3, microsoft robotics developer studio, параллельные вычисления Один из продуктов Microsoft — Microsoft Robotics включает библиотеку Concurrent and Coordination Runtime. Библиотека очень нужна роботам для организации параллельных вычислений при обработке звука и изображений (да и не только их). В посте я расскажу как с помощью данной библиотеки создать параллельный алгоритм умножения матрицы A (m × n элементов) на вектор B (1 × n элементов) по следующей формуле: . Алгоритм вычисления вектора C (m × 1 элементов) легко распараллеливается, так как значение i-го элемента вектора не зависит от значений других его элементов. Перед запуском примера из исходников рекомендуется установить Microsoft Robotics.
Читать полностью »
Профилировка производительности OpenMP приложений
2013-12-02 в 5:24, admin, рубрики: VTune Amplifier XE, Блог компании Intel, высокая производительность, параллельное программирование, метки: VTune Amplifier XE
OpenMP – пожалуй, самая распространённая модель параллельного программирования на потоках, на системах с общей памятью. Ценят её за высокоуровневые параллельные конструкции (в сравнении с программированием системных потоков) и поддержку разными производителями компиляторов. Но этот пост не про сам стандарт OpenMP, про него есть много материалов в сети.
Распараллеливают вычисления на OpenMP ради производительности, о чём, собственно, и статья. Точнее, об измерении производительности с помощью Intel VTune Amplifier XE. А именно, как получить информацию о:
- Получении профиля всего OpenMP приложения
- Профиле отдельных параллельных регионов OpenMP (время CPU, горячие функции и т.д.)
- Балансе работы внутри отдельного параллельного региона OpenMP
- Балансе параллельного/последовательного кода
- Уровне гранулярности параллельных задач
- Объектах синхронизации, времени ожидания и передачах управления между потоками
Как мы ускорили поиск на hh.ru
2013-11-28 в 9:22, admin, рубрики: java, lucene, Блог компании HeadHunter, параллельное программирование, поиск, Поисковые машины и технологии, метки: java, lucene, поиск
Некоторое время назад наш поиск стал работать быстрее. Особенно это заметно на сложных для движка запросах, в которых используется минимум фильтров и высокочастотные слова, что требует построить фасеты по результатам и отсортировать максимальные объёмы документов. Но и запросы средней сложности, где в выдаче немного документов, стали обрабатываться заметно быстрее. Почему возникла необходимость что-то ускорять и как мы это делали?
Читать полностью »
Resumable функции
2013-11-27 в 9:51, admin, рубрики: c++, C++14, c++17, Visual Studio, параллельное программирование, переводыНа прошлой неделе в мире С++ произошло интересное событие. Компания Microsoft объявила о выходе обновления к компилятору С++ в Visual Studio 2013. Само по себе обновление компилятора отдельно от Visual Studio или её сервис-пака — уже нетривиальное для Microsoft событие. Но ещё интереснее то, что вошло в это обновление. Полный список можно почитать по ссылке выше, а я остановлюсь только на одном моменте — resumable функции. Для полного понимания ситуации: Microsoft изрядно протроллила и комитет по стандартизации С++ и разработчиков gccclang, выпустив (тут надо внимательно) реализацию экспериментальной и не утверждённой ещё возможности будущего стандарта C++17, основанной на экспериментальных и не утверждённых ещё возможностях будущего стандарта C++14, которые в свою очередь являются исправлениями не сильно ещё вошедших в повседневное программирование возможностей С++11.
Достаточно гиковский ход, не находите?
А ниже будет перевод статьи с meetingcpp.com, рассказывающей о том, что это за фича и как её использовать.
Читать полностью »
Конференция PACT (Parallel Architectures and Compilation Techniques) 2013. Отчет о посещении
2013-11-01 в 5:12, admin, рубрики: Conference, Блог компании Intel, параллельное программирование, параллельные вычисления, разработка, метки: conference, параллельные вычисленияС 7 по 11 сентября в Эдинбурге, Шотландия проходила 22-я международная конференция по параллельным архитектурам и методам компиляции (PACT). Конференция состояла из двух частей: Workshops/Tutorials и основной части. Мне удалось посетить основную часть, о которой хотелось бы рассказать.
Конференция PACT является одной из крупных и значимых в своей области. Список тем конференции весьма обширен:
- Параллельные архитектуры и вычислительные модели
- Инструментарий (компиляторы и прочее) для параллельных компьютерных систем
- Архитектуры: многоядерные, многопоточные, суперскалярные и VLIW
- Языки и алгоритмы для параллельного программирования
- И прочее, прочее, прочее, что связано с параллелизмом в software и в hardware
Squeak: Моделирование систем массового обслуживания
2013-10-23 в 10:22, admin, рубрики: ооп, параллельное программирование, Программирование, Пуассон, метки: Пуассон На Хабре крайне мало информации о таком языке программирования как Squeak. Я попытаюсь рассказать о нем в контексте моделирования систем массового обслуживания. Покажу как написать простой класс, расскажу его структуру и использую его в программе, которая будет обслуживать заявки посредством нескольких каналов.
Пару слов о Squeak
Squeak это открытая, кросс-платформенная реализация языка программирования Smalltalk-80 c динамической типизацией и сборщиком мусора. Интерфейс довольно специфический, но вполне удобный для отладки и анализа. Squeak полностью отвечает концепции ООП. Все состоит из объектов, даже конструкции if-then-else, for, while реализованы с их помощью. Весь синтаксис сводится к посылке объекту сообщения в виде:
<объект> <сообщение>
Любой метод всегда возвращает объект и ему можно направить новое сообщение.
Squeak часто используется для моделирования процессов, но может использоваться и как средство для создания мультимедийных приложений и разнообразных образовательных платформ.
Читать полностью »