Данная публикация является переводом первой части статьи Characterization and Optimization Methodology Applied to Stencil Computations инженеров компании Intel. Эта часть посвящена анализу производительности и построению roofline модели на примере довольно распространенного вычислительного ядра, которая позволяет оценить перспективы оптимизации приложения на данной платформе.
Читать полностью »
Рубрика «высокая производительность» - 122
Оценка и оптимизация производительности вычислений на многоядерных системах
2016-02-29 в 6:09, admin, рубрики: HPC, roofline, software optimization, xeon, xeon phi, Блог компании Intel, высокая производительность, параллельное программирование, ПрограммированиеПроизводительность и многопоточность на Java-конференции JPoint 2016
2016-02-26 в 7:29, admin, рубрики: java, java 9, jpoint, jug.ru, Блог компании JUG.ru Group, высокая производительность, конференции, Серверная оптимизация
Всего 8 недель осталось до крупнейшей в России Java-конференции JPoint 2016. Я уже рассказывал на хабре, что нас с вами ожидает:
- два дня под одной крышей в центре Москвы
- около 40 докладов в четырёх параллельных залах. Мы хотели сделать 36 докладов, как на Joker, но видимо всё же, уплотним сетку и сделаем 44 доклада
- море общения с коллегами — около 1000 Java-программистов приедут к нам отовсюду
Я попробую потихоньку рассказать про основные темы JPoint и начну с нашей любимой — производительность и многопоточность.
На эту тему уже анонсированы следующие доклады:
- Алексей Шипилёв, Oracle — Если не Unsafe, то кто: восход VarHandles
- Сергей Куксенко, Oracle — Quantum Performance Effects, level up. За пределами ядра
- Руслан Черёмин, Deutsche Bank — Escape Analysis и скаляризация
- Владимир Ситников, NetCracker — Ну и производительность у вашего OpenSource!
- Volker Simonis, SAP — HotSpot Intrinsics
- Алексей Шипилёв, Oracle — The Lord of the Strings: Two Scours
- Тагир Валеев — Stream API puzzlers
- Владимир Иванов, Oracle — Native код, Off-heap данные и Java
- Владимир Озеров, GridGain — (Почти) неблокирующая синхронизация
Стратегии по ускорению кода на R, часть 1
2016-02-22 в 9:07, admin, рубрики: R, Блог компании Инфопульс Украина, высокая производительностьЦикл for в R может быть очень медленным, если он применяется в чистом виде, без оптимизации, особенно когда приходится иметь дело с большими наборами данных. Есть ряд способов сделать ваш код быстрее, и вы, вероятно, будете удивлены, узнав насколько.
Эта статья описывает несколько подходов, в том числе простые изменения в логике, параллельную обработку и Rcpp
, увеличивая скорость на несколько порядков, так что можно будет нормально обрабатывать 100 миллионов строк данных или даже больше.
Давайте попробуем ускорить код с циклом for и условным оператором (if-else) для создания колонки, которая добавляется к набору данных (data frame, df). Код ниже создает этот начальный набор данных.
# Создание набора данных
col1 <- runif (12^5, 0, 2)
col2 <- rnorm (12^5, 0, 2)
col3 <- rpois (12^5, 3)
col4 <- rchisq (12^5, 2)
df <- data.frame (col1, col2, col3, col4)
В этой части: векторизация, только истинные условия, ifelse.
В следующей части: which, apply, побайтовая компиляция, Rcpp, data.table.
Читать полностью »
Как устроен Relap.io — сервис, который выдает 30 миллиардов рекомендаций в месяц
2016-02-19 в 11:56, admin, рубрики: big data, elasticsearch, Hadoop, nginx, perl, postgresql, Блог компании Surfingbird, Веб-разработка, высокая производительность, машинное обучение, Медиа, рекомендательные системы, СМИ, сми в интернетеМы давно ничего не писали в наш блог и возвращаемся с рассказом о нашем новом проекте: Relap.io (relevant pages).
Мы запустили рекомендательный B2B-сервис Relap.io полтора года назад. Он облегчает жизнь редакции и читателям СМИ. В будние дни Relap.io обслуживает 15 млн уников и выдаёт 30 миллиардов рекомендаций в месяц.
Сейчас Relap.io крупнейшая рекомендательная платформа в Европе и Азии.
CAT — Управление размером кэша процессора
2016-02-16 в 6:56, admin, рубрики: cache, intel, llc, Блог компании Intel, высокая производительность, системное программирование Архитекторы процессоров архитектуры x86 исторически были против предоставления программистам возможности непосредственного управления кэшем. Один как-то сказал мне в 2009 году — «никогда мы этого не сделаем, кэш всегда должен быть прозрачным для программиста». Некоторые RISC процессоры представляют архитектурную возможность управления данными/кодом, который окажется в кэше. И вот, наконец-то, нечто подобное появилось и в архитектуре x86 (начиная с Broadwell*).
Читать полностью »
Вы зарабатываете на информации (зачем нужен API и как его грамотно спроектировать)
2016-02-15 в 14:16, admin, рубрики: api, highload, javascript, node.js, workflow, Анализ и проектирование систем, базы данных, Веб-разработка, высокая нагрузка, высокая производительность, информация, ит-инфраструктура, проектирование, Совершенный код Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик.
Информация — основа любого приложения или сервиса.
Более 10 лет назад я общался с владельцем покер-рума, и он показал мне страницу, приносившую около 10 000$ в день. Это была совершенно банально оформленная страница. На ней не было ни стилей, ни графики. Сплошной текст, разбитый заголовками, секциями и ссылками. У меня просто не укладывалось в голове — ну как вот это может приносить такие деньги?
Секрет в том, что «вот это» было одним из первых исчерпывающих руководств по игре в покер онлайн. У страницы был PageRank 10/10 (или 9, не суть), и в поисковой выдаче это было первое, на что натыкались.
Цель вашего приложения, какое бы оно ни было — донести (получить, обработать) некоторую информацию до пользователя.
Конечно, конверсия может быть ниже, или пользователь может быть не очень доволен опытом работы с сайтом, но, если сам товар будет именно тем, что он искал — всё остальное будет малозначимо.
Я не рассматриваю магазины, продающие «на эмоциях», и покупки, о которых пользователь может потом пожалеть.
Очень часто способ доступа к этой информации уходит за пределы самого клиента игры. С помощью мобильного приложения можно проверить, не нападает ли на тебя кто, или выставить какие-нибудь товары на внутриигровой аукцион, даже не заходя в саму игру.
Конечно, хорошо использовать лицензионный контент, но если пользователь не может найти то, что искал — он уйдет и найдет это в другом месте. В интернете люди не запоминают информацию как таковую, они запоминают место, где эту информацию нашли. Поэтому, если на вашем сайте нет песен группы Х, но зато есть ссылка на страницу группы Х, где они продают свои альбомы, ваш сервис все равно в плюсе, потому что пользователь запомнил, где он взял информацию о группе Х и вернется к вам еще раз поискать информацию о группе Y.
Я работал в нескольких музыкальных проектах, и очень часто всё упиралось именно в наличие необходимых треков, несмотря на десятки терабайт данных.
Думаю, идею вы уже уловили. Примеры можно приводить бесконечно (вот ещё один: на википедию не за дизайном ходят. Более того, часть информации с википедии выводится сразу в поисковой выдаче, без открытия даже самого сайта), и если думаете, что в вашем случае это неприменимо — напишите в комментариях (или на почту / в личку), и я объясню, почему всё же применимо.
Так вот: чем бы вы ни занимались, первичной всегда будет информация. Хорошую, качественную информацию пользователи обязательно найдут и обратятся к вам.
Я расскажу, как организовать работу с информацией так, чтобы это было:
1. Масштабируемо — репликация, шардирование и т.п. настраивается БЕЗ вмешательства в работу приложения.
2. Удобно для пользователей — легко документировать, понятно как использовать.
3. Удобно для ваших разработчиков — быстрое прототипирование, возможности оптимизации только необходимого.
Данный подход не имеет смысла для вас, если у вас маленький проект с небольшим количеством компонентов и разработчиков.
Отчёт с Tarantool Meetup 28 января
2016-02-11 в 12:01, admin, рубрики: mail.ru, nosql, tarantool, tarantool meetup, Администрирование баз данных, Блог компании Mail.Ru Group, высокая производительность
28 января в офисе Mail.Ru Group состоялся Tarantool Meetup, на котором были рассмотрены преимущества и особенности Tarantool, а также рассказано об опыте использования этой СУБД и планах её развития. Под катом вы сможете найти видеозаписи и презентации с этих выступлений.
Читать полностью »
CEPH-кластер: хронология работ по апгрейду нашего файлового хранилища на новую архитектуру (56Gb-s IB)
2016-02-11 в 6:36, admin, рубрики: ceph, s3, SDS, Блог компании КРОК, виртуализация, высокая производительность, ит-инфраструктура, кластер, облако, СХД, хранение, хранение данных
Запустив наше облако, мы стали предоставлять сервис хранения, аналогичный S3 Амазона (с совместимым API, чтобы российские заказчики могли использовать стандартные клиенты для работы с S3, изменив только endpoint для подключения). Основная задача сервиса — хранение снапшотов виртуальных машин и различных файлов клиентов. Амазон был взят за образец, куда надо развиваться, и в начале 2014 года стало понятно, что имеющееся файловое хранилище устарело, заказчики требовали современных фичей, недоступных у нас и так нравящихся им у AWS. Но доработка существующего решения светила огромными трудозатратами, поэтому было принято решение построить новое S3-совместимое хранилище с нуля.
Дальше — долгий процесс поиска и сравнений имеющихся решений, потом тесты на производительность и отказоустойчивость решения, написание кипы бумаг, затем — несколько неудачных тестовых миграций, исправления багов в архитектуре, работа над полученными ошибками и итоговая фоновая онлайн-миграция всех данных через два месяца работы.
Это было чертовски долго, но всё прошло спокойно.Читать полностью »
Вышел Nginx 1.9.11 с поддержкой динамических модулей
2016-02-10 в 10:26, admin, рубрики: nginx, высокая производительность, динамические модули, Серверное администрирование9 февраля состоялся выпуск nginx 1.91.11 с долгожданной поддержкой динамических модулей, которую анонсировали разработчики nginx на Хабре в апреле 2015 г.
- Добавление: теперь resolver поддерживает TCP.
- Добавление: динамические модули.
- Исправление: при использовании HTTP/2 переменная $request_length не учитывала размер заголовков запроса.
- Исправление: в модуле ngx_http_v2_module.
Динамические модули компилируются как отдельные файлы .so и подгружаются в процессе работы nginx, в любой момент. Не нужно заново компилировать nginx каждый раз при добавлении модуля.
В документации сказано, что не каждый статичный модуль можно конвертировать в динамический. Не следует делать такую конвертацию для модулей, которые патчат исходный код nginx, они не будут работать. И рекомендуют использовать только те вызовы API, которые непосредственно предназначены для модулей.
Читать полностью »