OpenMP Multi-Threaded Template Library
От: rm822 Россия  
Дата: 13.09.16 16:04
Оценка: 13 (3)
Есть такая прекрасная библиотека OMPTL
Суть в том что она предоставляет параллельные версии алгоритмов STL, c той же сигнатурой
Т.е. вообще ничего переписывать не надо, заменяем, например, std::sort(...) или std::find_if(...) на omptl::sort(...), omptl::find_if(...)


Пользуемся лет 5, багов за время эксплуатации найдено небыло, рекомендую всем кто хочет получить параллелизм с минимумом вложений
http://tech.unige.ch/cvmlcpp/source/doc/OMPTL.html
Re: OpenMP Multi-Threaded Template Library
От: Stanislav V. Zudin Россия  
Дата: 13.09.16 16:28
Оценка:
Здравствуйте, rm822, Вы писали:

R>Есть такая прекрасная библиотека OMPTL

R>Суть в том что она предоставляет параллельные версии алгоритмов STL, c той же сигнатурой
...
R>Пользуемся лет 5, багов за время эксплуатации найдено небыло, рекомендую всем кто хочет получить параллелизм с минимумом вложений

А есть какой-то бенчмарк?
Начиная с какой размерности проявляется выигрыш от параллельности?

Может расскажешь свою success story? Какие алгоритмы использовали, на каких данных, сколько данных и т.д.?
Использование в реальном проекте гораздо интереснее синтетического теста.
_____________________
С уважением,
Stanislav V. Zudin
Re[2]: OpenMP Multi-Threaded Template Library
От: rm822 Россия  
Дата: 13.09.16 21:40
Оценка:
SVZ>Может расскажешь свою success story? Какие алгоритмы использовали, на каких данных, сколько данных и т.д.?
У нас энтерпрайз и все большие объемы — они в БД. Была отдельная эпопея со скейлингом на 100ядерные машины, но к С++ она никакого отношения не имеет
Интересующимся параллелизмом в БД рекомендую посмотреть
  The Art and Science of Manhandling Parallelism
доклад сложный, исходно заявлен как LEVEL 500 https://blogs.technet.microsoft.com/ieitpro/2006/09/29/microsofts-standard-level-definitions-100-to-400/
https://www.youtube.com/watch?v=HLGQlSj2ucY
https://www.youtube.com/watch?v=-NBdsRcFgVk


А в плюсах — обычно неожиданно выясняется что данных стало 10-50-100 раз больше чем планировалось 3 года назад, и все как-то ме-е-е-е-дленно
Если скейлится линейно — прикручиваем параллелизм, если код написан в парадигме STL — то это будет просто.
Иногда не скейлится и дальше it depends...


Кучу ресурсов жрет UI, у нас упор на юзабилити, работу с текстом и все такое...
Несколько примеров
Если добавить еще фишек и данных, то окажется что на 1м ядре не взлетает.

Права жрут кучу ресурсов
Декомпрессия данных, когда их много
Формулки всякие
Re[3]: OpenMP Multi-Threaded Template Library
От: Stanislav V. Zudin Россия  
Дата: 14.09.16 04:47
Оценка:
Здравствуйте, rm822, Вы писали:

SVZ>>Может расскажешь свою success story? Какие алгоритмы использовали, на каких данных, сколько данных и т.д.?

R>У нас энтерпрайз и все большие объемы — они в БД. Была отдельная эпопея со скейлингом на 100ядерные машины, но к С++ она никакого отношения не имеет

Меня как раз интересовало, почему вы перелезли с stl на OMPTL и что с этого поимели. В цифрах. Ну не ради же модных веяний, видимо, стандартный stl на ваших данных тормозил.

R>А в плюсах — обычно неожиданно выясняется что данных стало 10-50-100 раз больше чем планировалось 3 года назад, и все как-то ме-е-е-е-дленно


Вот сколько именно надо данных, чтобы стандартная библиотека начала тормозить?

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

R>Кучу ресурсов жрет UI, у нас упор на юзабилити, работу с текстом и все такое...

R>Несколько примеров
R> — году эдак в 2002 Microsoft в SP к XP сделал прекрасную вещь. Он использовал в проводнике сортировку строк, которая различала числа внутри.
R>оно и понятно почему, алгоритм который различает числа работает раз в 5 медленне

Делал такое. До 10тыс. элементов тормоза незаметны, а больше пока не попадалось.

R> — большинство search as you type работает довольно мерзко, ищет в основном по совпадению начальных символов, некоторые по подстроке, но найти

R>в комбо-боксе по вводу "п и с" "Пушкин Иван Сергеевич" — практически никто не может

У нас строки используются мало.
Выглядят часто вот так:

N13641262
N14483138
VDDHV_L/U_MEM
VDDA_SDS
VDDHV_SDS
VDDA_1V1
VDD_SDS_1V0
N13596878
N13598682

Поэтому оказалось достаточно поиска по подстроке.

R> — 90% софта испытвает проблемы если вместо 12.3 ввести 12,3 или 12 300 вместо 12300


Хе
По моим наблюдениям 90% программ ожидают ввод в дефолтной сишной локали. И пишут/читают текстовые файлы с той же локалью. И большинство пользователей к этому привыкли.
Но некоторые программы начинают учитывать локализацию при чтении/записи текстовых файлов, и вот тут такие интересные эффекты возникают...
Пока сталкивался с этим только в Altium Designer'е и в какой-то версии Visual Studio.
_____________________
С уважением,
Stanislav V. Zudin
Re: OpenMP Multi-Threaded Template Library
От: MasterZiv СССР  
Дата: 14.09.16 10:56
Оценка:
Здравствуйте, rm822, Вы писали:

R>Есть такая прекрасная библиотека OMPTL

R>Суть в том что она предоставляет параллельные версии алгоритмов STL, c той же сигнатурой
R>Т.е. вообще ничего переписывать не надо, заменяем, например, std::sort(...) или std::find_if(...) на omptl::sort(...), omptl::find_if(...)


R>Пользуемся лет 5, багов за время эксплуатации найдено небыло, рекомендую всем кто хочет получить параллелизм с минимумом вложений

R>http://tech.unige.ch/cvmlcpp/source/doc/OMPTL.html

А с range-ами как, дружит ?
Re[4]: OpenMP Multi-Threaded Template Library
От: rm822 Россия  
Дата: 22.09.16 19:17
Оценка: 8 (2)
SVZ>Меня как раз интересовало, почему вы перелезли с stl на OMPTL и что с этого поимели. В цифрах. Ну не ради же модных веяний, видимо, стандартный stl на ваших данных тормозил.
Потому что закон мура перешел на ядра. Кол-во данных растет а скорость 1го ядра — уже нет.

SVZ>Вот сколько именно надо данных, чтобы стандартная библиотека начала тормозить?

на тех задачах что я описывал от 100к, до 30м
пользовательский ввод оч чувствителен к времени
50мс воспринимается как мгонвенно, а 250мс — как невыносимые тормоза
разница всего в 5 раз, но воспринимается она как пара порядков
Re[2]: OpenMP Multi-Threaded Template Library
От: rm822 Россия  
Дата: 22.09.16 19:18
Оценка:
MZ>А с range-ами как, дружит ?
без понятия, у нас их нет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.