Форум программистов, компьютерный форум CyberForum.ru

Распараллеливание при комбинации последовательного и параллельного алгоритмов - C++

Восстановить пароль Регистрация
 
George_
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 32
01.08.2015, 16:54     Распараллеливание при комбинации последовательного и параллельного алгоритмов #1
У меня основной алгоритм последовательный, т.е. не распараллеливается, и при этом выдает последовательно числа, каждое из которых независимо от основного алгоритма обрабатывается другим алгоритмом, который "завязан" только на это число и на числовую информацию, которая занимает немного места в памяти, известна до применения нового алгоритма и при этом одна и та же для всех чисел, выдаваемых первым алгоритмом. При этом числа, выдаваемые последовательно основным алгоритмом, второй алгоритм модифицирует. Не подскажите, как грамотно задействовать остальные ядра, чтобы они не простаивали. Идея понятна: размножить числовую информацию, которая занимает немного места в памяти, в количестве, равном числу оставшихся ядер, а вот как дальше действовать? Вопрос стал ребром на процессорах с архитектурой haswell, т.к. скорость счета с помощью новых команд FMA (+=a*b) увеличилась по сравнению с SSE (вплоть до последних версий SSE) в 4 раза. Это легко проверить: у меня два 6-ти ядерных процессора - Intel® Core™ i7-980 Processor (12M Cache, 3.33 GHz) и Intel® Core™ i7-5820K Processor (15M Cache, 3.33 GHz). Так вот второй перемножает две матрицы 10000*10000 в четыре раза быстрее (порядка 5 сек.). При этом использовалась функция перемножения матриц dgemm из пакета Intel MKL. Пользуюсь интеловским компилятором и соответственно OpenMP. Дело в том, что основной алгоритм выдает числа не регулярно и надо отслеживать освободившиеся ядра или ставить в очередь, если все ядра заняты. Но вот куда в очередь поставить, чтобы алгоритм работал как можно эффективней, если все ядра заняты, не совсем понятно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2015, 16:54     Распараллеливание при комбинации последовательного и параллельного алгоритмов
Посмотрите здесь:

Распараллеливание C++
Удалить эквивалентные пары из вектора пар при помощи стандартных алгоритмов C++
C++ Вычисление функций, их сумм и произведений при помощи циклических алгоритмов
Распараллеливание алгоритмов C++
C++ Запуск параллельного процесса
Программа работает, но при выводе определенной комбинации выдает ошибку C++
C++ Вывести комбинации целых x и y, при которых справедливо неравенство
C++ Создать файл параллельного доступа с такими полями

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 23:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru