По долгу работы мне приходится сталкиваться с проектированием и разработкой распределенных приложений. Такие приложения часто используют различные средства межпроцессного взаимодействия для организации взаимодействия компонентов. Особые сложности возникают в процессе реализации алгоритмов, обрабатывающих связанные данные распределенно. Для поддержки таких задач используются специализированные системы распределенной координации. Самым популярным и широко используемым продуктом является Apache Zookeeper.Читать полностью »
Рубрика «параллельное программирование» - 14
Обзор возможностей библиотеки Apache Curator для Apache Zookeeper
2017-08-02 в 6:30, admin, рубрики: curator, distributed computing, distributed lock manager, IPC, java, open source, scala, zookeeper, высокая производительность, параллельное программирование, распределённые вычисления, распределенные системыProxmox 5 и частичная запись в блочных устройствах эффективного хранения Ceph
2017-07-05 в 19:56, admin, рубрики: block device, BlueStore, Ceph Kraken, Ceph Luminous, crush, Erasure Coding, OSD, proxmox 5, RADOS, rbd, высокая производительность, параллельное программирование, Промышленное программирование, Разработка под Linux, системное программирование, метки: BlueStore, Ceph Kraken, Ceph Luminous, Erasure Coding, Proxmox 5, RADOS, RBDОфициальный выпуск Ceph Luminous от производителя мы ждём в ноябре 2017, однако Proxmox 5 уже позволяет использовать в промышленных решениях некую редакцию Ceph Luminous, которая, как и полагается, в качестве основного файлового хранилища по умолчанию предлагает BlueStore. Последнее полноценно поддерживает транзакции с операциями хранения объектов, что делает возможными большое число вкусностей. Одной из них является способность осуществления частичной перезаписи данных в блочных устройствах на основе пулов с удаляющим кодированием (Erasure Coding). Такие пулы, в частности, способны (при наличии достаточного числа физических дисков и серверов) приближать использование имеющегося сырого дискового пространства сколь угодно близко к 100%.
Et voilà!
Читать полностью »
[Питер] Встреча JUG.ru c легендой параллельного программирования Maurice Herlihy — Transactional Memory and Beyond
2017-06-28 в 21:36, admin, рубрики: concurrency, JUG, jug.ru, multithreading, Блог компании JUG.ru Group, высокая производительность, лекции, митапы, параллельное программирование, системное программирование
У нас праздник! В начале июля в Санкт-Петербурге пройдет SPTCC 2017, летняя школа по параллельному программированию. Одним из лекторов школы станет Морис Херлихи (Maurice Herlihy), легенда параллельного программирования, один из авторов знаменитого учебника «The Art of Multiprocessor Programming».
В четверг, 6 июля, в 19:00 в Университете ИТМО Морис выступит на встрече JUG.ru. На этот раз мы будем говорить не про Java. Тема встречи — транзакционная память.
О чем же нам расскажет Морис?
Транзакционная память
Новое поколение процессорных архитектур предоставляет нам аппаратную транзакционную память (Hardware Transactional Memory — HTM), механизм синхронизации для быстрых транзакций в оперативной памяти. В данном докладе будет показано, что HTM это не просто более быстрый путь для релизации старых-добрых monitor-ов и latch-ей. На самом деле, HTM обеспечивает фундаментальные позитивные изменения в том, как мы программируем многоядерные машины (и возможно даже базы данных), позволяя нам переосмыслить базовые примитивы синхронизации, такие, как lock-и, управление памятью, и многообразие многопоточных структур данных.
Читать полностью »
Материалы студенческой школы «Recent Advances in Algorithms»
2017-06-20 в 11:28, admin, рубрики: big data, streaming, Алгоритмы, Блог компании СПБАУ, математика, параллельное программирование, параллельные алгоритмы
В конце мая в Петербурге в ПОМИ РАН прошла международная студенческая школа «Recent Advances in Algorithms». Идея школы заключалась в том, чтобы ведущие учёные рассказали о последних достижениях в области алгоритмов. В результате у нас получился следующий список курсов.
Клиент-сервер шаг — за — шагом, от однопоточного до многопоточного (Client-Server step by step)
2017-06-11 в 9:15, admin, рубрики: eclipse, github, java, клиент-сервер, многопоточность на java, параллельное программирование, Программирование, чат javaЦель публикации показать начинающим Java программистам все этапы создания многопоточного сервера. Для полного понимания данной темы основная информация содержится в комментариях моего кода и в выводимых в консоли сообщениях для лучшего понимания что именно происходит и в какой именно последовательности.
В начале будет рассмотрено создание элементарного клиент-сервера, для усвоения базовых знаний, на основе которых будет строиться многопоточная архитектура.
Чип для умных камер ELISE — одно из самых высокотехнологичных изделий России 2017 года. Плата для разработчиков и камера
2017-05-31 в 7:11, admin, рубрики: dsp, gpu, imagination technologies, mips, mips interaptiv, mips M5150, MIPS P5600, PowerVR, Velcore2, виртуализация, высокая производительность, Компьютерное зрение, обработка изображений, параллельное программирование, программирование микроконтроллеров, Разработка под Linux, Элвис, элвис-неотек, метки: ЭЛВИС, элвис-неотекУ каждой российской микроэлектронной компании есть рассказ, почему она самая хорошая и передовая. По английски это называется «claim to fame» — «заявка на славу». Одни российские компании славятся оригинальной архитектурой CPU, другие — спроектированной в России системой на кристалле, третьи — спроектированными в России блоками, которые были лицензированы западными компаниями.
У российской компании ЭЛВИС (ELVEES), которая исторически специализировалась на космической электронике, DSP и хардверно-поддерживаемом распознавании образов, текущая «заявка на славу» выражена в совместном российско-британско-американско-тайваньском чипе для «умных камер» под названием ELISE. Инженеры в подмосковном Зеленограде спроектировали внутри этого чипа важные блоки для видео-обработки и GNSS, которые потом кросс-лицензировала британско-американская Imagination Technologies.
Блоки от элвисовцев интегрированы с тремя разнородными процессорными ядрами: двухядерным кластером суперскалярных ядер MIPS P5607 (Apache) с частотой 1.2 GHz, на котором работает Linux, процессором с аппаратно-поддерживаемой многопоточностью MIPS interAptiv (1 GHz) и небольшим вспомогательным процессором с аппаратно-поддерживаемой виртуализацией MIPS M5150 (Virtuoso).
На днях мне попали в руки два изделия с чипом ELISE — плата для разработчиков и трехмерная бинокулярная камера. Элвисовцы также дали мне список на 10 страниц, что есть на плате, что есть внутри чипа, и какой для этого поддерживается софтвер. К сожалению, они не разрешили мне выложить эти страницы в интернет, поэтому я кое-что перескажу своими словами, а также добавлю инфо про используемые ядра, после чего вы все остальное можете запросить у элвисовцев сами.
На фотографиях ниже некоторые из инженеров-участников проекта. Девушка слева спроектировала часть load-store unit в MIPS P5607, юноша в зеленой майке написал модели интерфейсов шин, а товарищ в клетчатой рубашке — архитектор софтверной экосистемы:
Портирование MIPSfpga на другие платы и интеграция периферии в систему. Часть 3
2017-05-31 в 3:55, admin, рубрики: Altera, fpga, imagination technologies, mips, MIPS microAptiv UP, MIPSfpga, SPI, uart, Verilog, vhdl, xilinx, Анализ и проектирование систем, параллельное программирование, ПЛИС, программирование микроконтроллеровВ первой части я описал на примере cmoda7 как портировать MIPSfpga (Портирование MIPSfpga на другие платы и интеграция периферии в систему. Часть 1) на FPGA платы отличные от уже портированых среди которых такие популярные как: basys3, nexys4, nexys4_ddr фирмы Xilinx, а так же de0, de0_cv, de0_nano, de1, DE1, de10_lite, de2_115, DE2-115 фирмы Altera(Intel), во второй части как интегрировать клавиатуру Pmod KYPD (Портирование MIPSfpga на другие платы и интеграция периферии в систему. Часть 2).
В этой части добавим к MIPSfpga-plus встроенный АЦП, и популярный LCD от Nokia 5100.
С предыдущих частей можно сделать вывод, что интеграция периферии в MIPSFPGA состоит из пять основных этапов:
- Добавление модуля интерфейса общения с периферией (i2c, spi, и т.д.).
- Соединение входных/выходных портов модуля с шиной AHB-Lite.
- Присваивание адресов сигналов подключаемого устройства.
- Добавление констрейнов на физические контакты платы.
- Написание программы для MIPS процессора.
Подключение встроенного в cmoda7 АЦП
Как я уже говорил плата cmodA7 имеет встроенный АЦП, pin 15 и 16 используются в качестве аналоговых входов модуля FPGA. Диапазон работы встроенного АЦП от 0-1V, поэтому используется внешняя схема для увеличения входного напряжения до 3.3V.
Эта схема позволяет модулю XACD точно измерить любое напряжение от 0 В и 3,3 В (по отношению к GND). Чтобы работать с АЦП в Vivado существует блок IP (интеллектуальной собственности) Xilinx, с помощью которого можно будет просто его интегрировать в нашу систему MIPSfpga.
Читать полностью »
Intel и Facebook совместно повышают производительность библиотеки Caffe2
2017-05-30 в 6:14, admin, рубрики: Caffe2, Facebook, intel, Блог компании Intel, высокая производительность, параллельное программирование, Программирование
Каждый день окружающий нас мир генерирует все больше и больше информации — текстовой, графической, мультимедийной и т.д. За последние годы технологии искусственного разума и глубокого изучения сумели улучшить ряд приложений, которые помогают людям лучше воспринимать эту информацию, обогатив их возможностями распознавания речи, видео, изображений, а также функционалом рекомендаций.
Читать полностью »
Потоки выполнения и PHP
2017-05-25 в 16:22, admin, рубрики: php, pthreads, Анализ и проектирование систем, Блог компании Mail.Ru Group, высокая производительность, никто не читает теги, параллельное программирование, потоки
PHP и потоки выполнения (threads). Предложение всего лишь из четырёх слов, а по этой теме можно написать книгу. Как обычно, я не буду так делать, зато дам вам информацию, чтобы вы стали разбираться в предмете до определённой степени.
Начнём с путаницы, которая есть в головах у некоторых программистов. PHP — это не многопоточный язык. Внутри самого PHP не используются потоки выполнения, и PHP не даёт возможности пользовательскому коду нативно использовать их в качестве механизма параллелизации.
PHP очень далёк от других технологий. Например, в Java очень активно используются потоки выполнения, ещё они могут встречаться в пользовательских программах. В PHP такого нет. И тому есть причины.
Потокобезопасный std::map с производительностью lock-free map
2017-05-10 в 21:44, admin, рубрики: c++, c++11, C++14, high performance, lock, lock-free, locks, low-latency, высокая производительность, параллельное программирование, ПрограммированиеПримеры использования и тестирование потоко-безопасного указателя и contention-free shared-mutex
В этой статье мы покажем: дополнительные оптимизации, примеры использования и тестирование разработанного нами потоко-безопасного указателя с оптимизированным разделяемым мьютексом contfree_safe_ptr<T> – это эквивалентно safe_ptr<T, contention_free_shared_mutex<>>
В конце покажем сравнительные графики тестов нашего thread-safe указателя и одних из лучших lock-free алгоритмов из libCDS на процессорах Intel Core i5/i7, Xeon, 2 x Xeon.
Читать полностью »