В приложениях по работе с изображениями довольно часто встречается задача ресайза джипегов (картинок, сжатых по алгоритму JPEG). В этом случае сразу сделать ресайз нельзя и нужно сначала декодировать исходные данные. Ничего сложного и нового в этом нет, но если это нужно делать много миллионов раз в сутки, то особую важность приобретает оптимизация производительности такого решения, которое должно быть очень быстрым.
Рубрика «параллельное программирование» - 10
Быстрый ресайз джипегов на видеокарте
2018-09-27 в 6:57, admin, рубрики: CUDA, fast resizer, fast web resize, gpgpu, gpu, JPEG codec, jpeg decoder, Nvidia, resize, tesla, V100, Быстрый ресайз на видеокарте, декодер джипег, джипег, Облачные вычисления, обработка изображений, параллельное программирование, СофтРаспараллеливание задач с зависимостями — пример на .NET
2018-09-07 в 8:02, admin, рубрики: .net, C#, F#, Блог компании Издательский дом «Питер», книги, многопоточное программирование, параллельное программирование, Профессиональная литератураЗдравствуйте, коллеги!
На этой неделе мы отдали в перевод амбициозную по своей сложности книгу "Concurrency in .NET" издательства Manning:

Автор любезно выложил на сайте Medium отрывок из 13-й главы, который мы и предлагаем оценить задолго до премьеры.
Приятного чтения!
Читать полностью »
Когда использовать параллельные stream-ы
2018-08-21 в 9:50, admin, рубрики: concurrency, java, java streams, параллельное программированиеИсточник
Авторы: Doug Lea совместно с Brian Goetz, Paul Sandoz, Алексей Шипилёв, Heinz Kabutz, Joe Bowbeer, ...
Фреймворк java.util.streams содержит управляемые данными (data-driven) операции над коллекциями и другими источниками данных. Большинство потоковых (stream) методов выполняют одну и ту же операцию над каждым из элементов. С помощью метода коллекций parallelStream(), при наличии нескольких ядер, data-driven можно превратить в data-parallel. Но когда это стоит делать?
From 0.01 TFlops HPL to ASC’18 Application Innovation
2018-08-10 в 12:56, admin, рубрики: asc, asc18, HPC, hpl, Linpack, supercomputer challenge, высокая производительность, Настройка Linux, параллельное программирование, суперкомпьютерные соревнования, суперкомпьютерыПривет! Продолжаем серию статей об участии команды из Санкт-Петербургского Государственного Университета (мы называем себя EnterTildeDot) на крупнейших в мире студенческих суперкомпьютерных соревнованиях.

В этой статье мы рассмотрим путь на ASC’18 на примере одного участника команды, уделив особое внимание визитной карточке соревнований и современных суперкомпьютеров в целом — Linpack. Ну что ж, давайте посмотрим на секрет достижения рекорда и антирекорда производительности вычислительной системы.
Основы работы с фьютексами
2018-07-30 в 15:54, admin, рубрики: C, futex, Блог компании Инфопульс Украина, параллельное программирование, Разработка под Linux, системное программированиеФьютекс (futex — сокращение от «Fast userspace mutex») — это механизм, предложенный разработчиками Linux из IBM в 2002 году и вошедший в ядро в конце 2003 года. Основной идеей было предоставить более эффективный способ синхронизации пользовательских потоков с минимальным количеством обращений к ядру ОС.
В этой статье мы сделаем обзор фьютексов, попытаемся понять принципы их работы, а также используем их в качестве кирпичиков для построения более высокоуровневых (и знакомых нам) объектов синхронизации.
Важный момент: фьютексы — это достаточно низкоуровневый инструмент, напрямую его использовать стоит лишь при разработке фундаментальных библиотек, вроде стандартной библиотеки C/C++. Очень маловероятно, что вам понадобится использовать фьютексы в обычном прикладном приложении.
Читать полностью »
Создание бота для участия в AI mini cup. Опыт применения GPU
2018-07-21 в 9:01, admin, рубрики: C, Thrust CUDA паралельные вычисления, параллельное программированиеCUDA и удалённый GPU
2018-07-04 в 8:03, admin, рубрики: c/c++, CUDA, gpgpu, linux, Nvidia, высокая производительность, параллельное программированиеCUDA всем хороша, пока под рукой есть видеокарта от Nvidia. Но что делать, когда на любимом ноутбуке нет Nvidia видеокарты? Или нужно вести разработку в виртуальной машине?
Я постараюсь рассмотреть в этой статье такое решение, как фреймворк rCUDA (Remote CUDA), который поможет, когда Nvidia видеокарта есть, но установлена не в той машине, на которой предполагается запуск CUDA приложений. Тем, кому это интересно, добро пожаловать под кат.
rCUDA (Remote CUDA) — фреймворк, реализующий CUDA API, позволяющий использовать удалённую видеокарту. Находится в работоспособной бета-версии, доступен только под Linux. Основная цель rCUDA — полная совместимость с CUDA API, вам не нужно никак модифицировать свой код, достаточно задать специальные переменные среды.
Гетерогенная конкурентная обработка данных в реальном времени строго один раз
2018-06-11 в 5:34, admin, рубрики: Алгоритмы, Анализ и проектирование систем, высокая производительность, гетерогенность, из говна и палок, конкурентность, параллельное программирование, распределенные системы
Аннотация
Обработка данных в реальном времени ровно один раз (exactly-once) — задача крайне нетривиальная и требующая серьезного и вдумчивого подхода на всей цепочке вычислений. Некоторые даже считают, что такая задача невыполнима. В реальности хочется иметь подход, обеспечивающий отказоустойчивую обработку вообще без каких-либо задержек и использование различных хранилищ данных, что выдвигает новые еще более жесткие требования, предъявляемые к системе: concurrent exactly-once и гетерогенность персистентного слоя. На сегодняшний день такое требование не поддерживает ни одна из существующих систем.
Предложенный подход последовательно раскроет секретные ингредиенты и необходимые понятия, позволяющие относительно просто реализовать гетерогенную обработку concurrent exactly-once буквально из двух компонент.
Введение
Разработчик распределенных систем проходит несколько стадий:
Стадия 1: Алгоритмы. Здесь происходит изучение основных алгоритмов, структур данных, подходов к программированию типа ООП и т.д. Код исключительно однопоточный. Начальная фаза вхождения в профессию. Тем не менее, достаточно непростая и может длиться годами.
Стадия 2: Многопоточность. Далее возникают вопросы извлечения максимальной эффективности из железа, возникает многопоточность, асинхронность, гонки, дебагинг, strace, бессонные ночи… Многие застревают на этом этапе и даже начинают с какого-то момента ловить ничем не объяснимый кайф. Но лишь единицы доходят до понимания архитектуры виртуальной памяти и моделей памяти, lock-free/wait-free алгоритмах, различных асинхронных моделях. И почти никто и никогда — верификации многопоточного кода.
Стадия 3: Распределенность. Тут такой треш творится, что ни в сказке сказать, ни пером описать.
Изучаем многопоточное программирование в Go по картинкам
2018-06-03 в 13:28, admin, рубрики: Go, golang, параллельное программирование, Программирование
Скорее всего, вы уже слышали о языке программирования Go, популярность его постоянно растет, что вполне обоснованно. Этот язык простой, быстрый и опирается на прекрасное сообщество. Один из самых любопытных аспектов языка — это модель многопоточного программирования. Примитивы, положенные в ее основу, позволяют создавать многопоточные программы легко и просто. Эта статья предназначена для тех, кто хочет изучить эти примитивы: горутины и каналы. И, через иллюстрации, я покажу, как с ними работать. Надеюсь, это будет для вас хорошим подспорьем в дальнейшем изучении.
Читать полностью »
Java и Project Reactor. Эпизод 2
2018-05-24 в 7:34, admin, рубрики: async, flow, flux, funcorp, ifunny, java, Mono, netty, nio, open source, Reactive Streams, reactor, spring, WebFlux, Блог компании FunCorp, параллельное программирование, Программирование
Привет! Удивительно, но первая часть статьи даже кому-то понравилась.
Отдельное спасибо за ваши отзывы и комментарии. У меня для вас плохая хорошая новость: нам ещё есть о чём поговорить! А если точнее, то о некоторых деталях работы Reactor.


