Как стать автором
Обновить
8.08
Рейтинг

Параллельное программирование *

Распараллеливаем вычисления

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Распределенная общая память (DSM — Distributed Shared Memory)

Высокая производительность *Децентрализованные сети Параллельное программирование *Исследования и прогнозы в IT Распределённые системы *

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

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Просмотры 2.5K
Комментарии 39

MPIRE — быстрая альтернатива multiprocessing

Блог компании SkillFactory Open source *Python *Программирование *Параллельное программирование *
Перевод
Tutorial

MPIRE комбинирует функции, подобные map из multiprocessing.Pool, с преимуществами копирования при записи общих объектов multiprocessing.Process. В пакете также есть простые в работе функции состояния рабочего процесса, информирования о нём и индикатора выполнения. Сокращённым переводом документации делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Всего голосов 22: ↑19 и ↓3 +16
Просмотры 2.3K
Комментарии 3

Под капотом Ruby. GVL

Ruby *Программирование *Системное программирование *C *Параллельное программирование *

Давным давно уже уже была написана статья о том что такое GVL (или GIL, кому как привычнее) и как он работает, однако с того времени некоторые вещи поменялись (к примеру, , а так же в Ruby 3.0 завезли Ractor'ы - новую абстракцию для реальной параллельной работы тредов. Мне стало интересно узнать что поменялось в планировщике ruby для реализации множества GVL. В этой статье я попытаюсь понять алгоритм, по которому GVL передается от одного треда к другому, как блокирующее IO позволяет продолжить работать другим тредам, а так же выяснить до сих пор ли операция добавления элемента в массив является атомарной операцией

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.3K
Комментарии 4

Проектировщики RISC-V из Yadro покажут школьникам как проектировать процессоры

Параллельное программирование *FPGA *Программирование микроконтроллеров *Процессоры Электроника для начинающих

Через неделю будет выставка ChipEXPO, на которой для начинающих будет школа проектирования железа с упражнениями на FPGA платах, а для более продвинутых - конференция Микроархитектура, верификация и физическое проектирование микросхем.

И на части для школьников, и на части для взрослых будут выступать проектировщики RISC-V процессора из Syntacore / Yadro Станислав Жельнио и Никита Поляков. Сегодня Коммерсант сравнил этот проект с полетом на Луну.

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

Далее мы расскажем про новые упражнения в школе этого года - распознавание и генерацию музыки с помощью FPGA и приведем забавные сведения из советской физматшкольной книжки 1963 года как Бах изменил гаммы.

В конце поста мы покажем, как эта деятельность поможет получить в будущем интересные и высокооплачиваемые работы в Apple, Intel, SpaceX, как и самом в модном в этом сезоне российском микроэлектронном проекте - Syntacore / Yadro (в конце поста скриншоты их объявлений).

Как же все установить до семинара?
Всего голосов 26: ↑25 и ↓1 +24
Просмотры 6K
Комментарии 50

Расширение языка программирования (C++/Planning C). Волшебные сканеры и компилирующие макросы

Программирование *C++ *Компиляторы *Параллельное программирование *

Здравствуйте, уважаемые читатели.

Обычно, когда речь заходит о создании какого-либо расширения для существующего языка программирования, в воображении неминуемо начинают рождаться разнообразные сложные решения, включающие поиск описания формальной грамматики исходного языка, ее модификации, а затем и применения какого-либо инструмента, позволяющего по данной грамматике либо построить новый компилятор, либо модифицировать существующий компилятор. Причем такие инструменты существуют (bison/flex, yacc/lex, вероятно и многие другие) и успешно используются, несмотря на их явную сложность и громоздкость.

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

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 5.5K
Комментарии 39

Тюним thread model: Как нам удалось получить котировки с десятка американских бирж за 3 микросекунды

Блог компании Itiviti, a Broadridge Business Высокая производительность *Анализ и проектирование систем *Параллельное программирование *Финансы в IT

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

Read more
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 6.4K
Комментарии 28

Spring WebFlux: Реактивное программирование веб-сервисов

Программирование *Java *Параллельное программирование *
Из песочницы

Модуль WebFlux появился в 5й версии фреймворка Spring. Этот микрофреймворк является альтернативой Spring MVC и отражает собой реактивный подход для написания веб-сервисов. В основе WebFlux лежит библиотека Project Reactor, позволяющая легко запрограммировать неблокирующие (асинхронные) потоки (streams), работающие с вводом/выводом данных.

Следует учесть, что WebFlux для работы требуется встроенный в Spring сервер Netty. Встроенные Tomcat и Jetty не подходят. Следующая диаграмма иллюстрирует особенности окружения, в котором работает WebFlux [1].

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 6.9K
Комментарии 11

Обзор программы Hydra 2021: введение в хардкор

Блог компании JUG Ru Group Параллельное программирование *Конференции Распределённые системы *


До конференции по распределённым системам Hydra осталось менее трёх недель, программа уже готова, и пришло время рассказать о ней Хабру. Под катом — описания всех докладов, а для начала скажем общее:


  • Конференция объединяет IT-индустрию и академический мир: среди спикеров есть и авторы научных статей, и те, у кого результаты этих статей используются в продакшне.
  • В этот раз, кроме докладов, в программе три продолжительных воркшопа. Так что будут не только рассуждения со слайдами, но и наглядная практическая работа.
  • В программе есть и про distributed, и про concurrency, но перевес в сторону распределённого. Зато все воркшопы актуальны для тех, кто ближе к параллельному программированию.
  • Конференция в целом англоязычная, на русском будет только один доклад.
  • Такая конференция неизбежно хардкорная, но несколько докладов будут в формате «введения» и не требуют предварительной подготовки. Впрочем, немногие готовы вникать в эти темы даже на поверхностном уровне. Так что это, скажем так, «введение в хардкор»!
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 2.7K
Комментарии 0

Как изменились условия работы IT-компании с приходом пандемии, и что изменилось в digital-маркетинге?

Параллельное программирование *
Из песочницы

Прошло больше года с начала глобальной пандемии, вызванной Covid-19, но жизнь так и не вернулась в прежнее русло. Изменения в рабочих процессах претерпели все без исключения сферы бизнеса. Даже IT, где, вопреки распространенному заблуждению, многие сотрудники посещали офис.

Что произошло в жизни IT компаний за это время, и как карантин повлиял на digital-маркетинг? Перемены не ограничились переходом на удаленную работу - они гораздо глубже и серьезнее.

Читать далее
Всего голосов 8: ↑4 и ↓4 0
Просмотры 2K
Комментарии 12

Введение в транзакционную память от Мориса Херлихи

Блог компании JUG Ru Group Программирование *Параллельное программирование *Конференции

Как при распараллеливании кода не мучиться из-за блокировок? На Хабре уже писали о транзакционной памяти, но когда о ней говорит Морис Херлихи, это особый случай. В 1993-м и Хабра никакого не было, и многоядерные процессоры ещё не заявили о себе — а Морис уже стал соавтором основополагающей работы о транзакционной памяти. Так что он главный в мире авторитет по этому вопросу, и если вам нужно введение в тему, логично слушать его.

В прошлом году на нашей конференции Hydra он выступил с докладом для широкой публики, в котором всё начинается с самых азов, а позже доходит до менее очевидных вещей. Сейчас мы ждём его на Hydra 2021 с новым докладом — а в ожидании этого решили сделать для Хабра текстовый перевод прошлогоднего выступления на русский (видеозапись тоже прилагаем). Далее повествование будет от лица спикера.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 4.2K
Комментарии 1

Тонкости реализации Singleton на Golang

PHP *Go *Параллельное программирование *Изучение языков Микросервисы *

Привет, друзья.

Меня зовут Alex Versus и сегодня с вами посмотрим шаблон Singleton, реализацию на языке Golang.

Какая суть?

Одиночка - относится к порождающим шаблонам. Гарантирует:

Читать далее
Всего голосов 13: ↑5 и ↓8 -3
Просмотры 4.7K
Комментарии 7

To spawn, or not to spawn?

Анализ и проектирование систем *Erlang/OTP *Параллельное программирование *Elixir/Phoenix *
Из песочницы
Перевод

Вот в чём вопрос! Что лучше - держать всё в одном процессе, или создавать отдельный процесс на каждый кусок состояния, которым нам нужно управлять? В этой статье я немного расскажу об использовании или неиспользовании процессов. Я также расскажу, как отделить сложную логику с отслеживанием состояния от таких проблем, как временное (темпоральное) поведение и межпроцессное взаимодействие.

Но перед тем, как начать, т. к. статья будет длинной, я хотел бы обозначить основные моменты:

Используйте функции и модули для разделения мыслительных сущностей.

Используйте процессы для разделения сущностей времени выполнения.

Не используйте процессы (даже агентов) для разделения сущностей мышления.

Конструкция "мыслительные сущности" здесь относится к идеям, которые есть в нашем разуме, таким как "заказ", "позиция в заказе", "продукт" и т. д. Если эти концепции слишком сложны, то стоит реализовать их в отдельных модулях и функциях для разделения различных сущностей и держать каждую часть нашего кода сфокусированной и целостной.

Использование для этого процессов (например агентов) - это ошибка, которую люди часто допускают. Такой подход существенно упускает функциональную составляющую Elixir и вместо этого пытается имитировать объекты процессами. Реализация, скорее всего, будет хуже, чем простой функциональный подход (или даже эквивалент на языке объектно-ориентированного программирования). Поэтому стоит обращаться к процессам, только когда есть ощутимые выгоды от этого. Организация кода не входит в число этих преимуществ, так что это не лучший повод для использования процессов.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 2.1K
Комментарии 0

Сколько стоит расписание

Open source *Алгоритмы *Lua *Параллельное программирование *

Основные данные вычислительных экспериментов по реорганизации ярусно-параллельной формы  (ЯПФ) информационных графов алгоритмов (ТГА) приведены в предыдущей публикации. Цель текущей публикации – показать окончательные результаты исследований разработки расписаний выполнения параллельных программ  в показателях вычислительной трудоёмкости собственно преобразования  и качества полученных расписаний. Данная работа является итогом вполне определённого цикла исследований в рассматриваемой области.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 3.1K
Комментарии 2

Fiber’ы — новая фича в PHP 8.1

Блог компании Mail.ru Group Разработка веб-сайтов *PHP *Программирование *Параллельное программирование *
Перевод

PHP пытается восполнить недостаток возможностей в своей кодовой базе, и Fiber’ы — одно из значимых нововведений. Они появились в PHP 8.1 в конце 2020 и привнесли в язык своего рода асинхронное программирование. Файберы представляют собой легковесные потоки исполнения (известные как сопрограммы, или корутины (coroutine)). Они исполняются параллельно, но обрабатываются исключительно самой runtime-средой, а передаются напрямую в процессор. Разные реализации сопрограмм есть во многих основных языках, но принцип один и тот же: позволить компьютеру одновременно выполнять две и больше задач и ждать, пока они все не завершатся.

PHP-реализация файберов — это не настоящие асинхронные вычисления, как можно подумать. Даже после появления новинки ядро языка осталось синхронным. Применение файберов можно сравнить с пересаживанием из одного автомобиля в другой.
Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Просмотры 9K
Комментарии 16

Распределённая конференция о распределённых системах: анонс Hydra 2021

Блог компании JUG Ru Group Программирование *Параллельное программирование *Конференции Распределённые системы *


Мы уже третий год проводим конференцию о параллельных и распределённых вычислениях. Hydra 2021 пройдёт в онлайне, и вот что интересно: онлайн-конференция ведь и сама является распределённой системой. У неё есть множество компонентов (это и люди, и оборудование), разбросанных по планете и действующих параллельно (у конференции сразу несколько треков).


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


Например, «избыточность» — это не только когда реплики данных пишутся в три дата-центра. Это ещё и когда у конференции есть одновременно спикеры, эксперты и ведущие. Такая схема с тремя ролями означает, что если связь с кем-то временно пропадёт, двое других заполнят паузу в эфире, не оставляя зрителей наедине с пустотой.


В общем, от «Гидры» можно ожидать неплохой отказоустойчивости (подробнее можно почитать здесь). А чего ещё ждать? Расписали под катом — и заодно приложили ссылку на доклады предыдущей Hydra.

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 1.7K
Комментарии 3

Часть 3. MPI — Как процессы общаются? Сообщения типа точка-точка

Параллельное программирование *Распределённые системы *
Tutorial

В этом цикле статей речь идет о параллельном программировании с использованием MPI.

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

Окунуться в процесс
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 4.1K
Комментарии 3

Обзор программы JPoint 2021: воркшопы, Spring, «игра вдолгую»

Блог компании JUG Ru Group Программирование *Java *Параллельное программирование *Конференции


Близится новый JPoint, и мы готовы подробно рассказать о его программе. В этом посте мы разделили доклады по тематическим блокам: можно и быстро понять «что вообще будет», и узнать конкретику. А во вступлении упомянем отдельные моменты:


  • Пришла весна, то есть самое время поговорить о Spring. О нём будет четыре доклада, в том числе большое двухчастное выступление Евгения Борисова. Для него мы даже продлили JPoint на пятый день — получился специальный «день Борисова» :)
  • Онлайн-формату подходят воркшопы. Поэтому в отдельных случаях можно будет не просто любоваться слайдами: спикер будет выполнять конкретные задачи на практике, объясняя всё происходящее и отвечая на вопросы зрителей.
  • Есть доклады не строго про Java, а про то, как успешно разрабатывать «на длинной дистанции» (чтобы всё радовало не только на стадии прототипа, а годы спустя): как делать проекты поддерживаемыми, не плодить «велосипеды», работать с легаси.
  • Ну и никуда не девается привычное. Знакомые темы: «что у Java внутри», тулинг/фреймворки, языковые фичи, JVM-языки. Спикеры, посвятившие теме годы жизни: от технического лида Project Loom Рона Пресслера до главного Spring-адвоката Джоша Лонга. Возможность как следует расспросить спикера после доклада. И уточки для «отладки методом утёнка»!
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 2.7K
Комментарии 0

Часть 2. MPI — Учимся следить за процессами

C++ *Параллельное программирование *
Tutorial

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

Познакомимся с MPI поближе
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 3.7K
Комментарии 5

Часть 1. MPI — Введение и первая программа

C++ *Алгоритмы *Параллельное программирование *
Из песочницы
Tutorial

В этом цикле статей речь пойдет о параллельном программировании. Довольно часто самые сложные алгоритмы требуют огромного количества вычислительных ресурсов в реальных задачах, когда программист пишет код в стандартном его понимании процедурного или Объектно Ориентированного Программирования(ООП), то для особо требовательных алгоритмических задач, которые работают с большим количеством данных и требуют минимизировать время выполнения задачи, необходимо производить оптимизацию.

В основном используют 2 типа оптимизации, либо их смесь: Векторизация и распараллеливание вычислений. Чем же они отличаются?

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

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

Далее вы узнаете, что такое параллелизация и как пользоваться MPI на практике.

Читать статью далее
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 5.6K
Комментарии 2

Визуализируйте многопоточные программы Python с open source инструментом – VizTracer

Блог компании SkillFactory Open source *Python *Параллельное программирование *
Перевод
Tutorial

Специально к старту нового потока курса Fullstack-разработчик на Python, представляем небольшой авторский обзор кроссплатформенного инструмента визуализации многопоточных программ – VizTracer. У VizTracer 57 форков и 841 звезд на Github. Настраиваемые события, отчёты в HTML, детальная информация о функциях с их исходным кодом, простота применения, отсутствие зависимостей и малый оверхед превращают VizTracer в мастхэв Python-разработчика.

Приятного чтения!
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 3.3K
Комментарии 0

Вклад авторов