GeorgeMame
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору [more] [more] У меня основной алгоритм последовательный, т.е. не распараллеливается, и при этом выдает последовательно числа, каждое из которых независимо от основного алгоритма обрабатывается другим алгоритмом, который "завязан" только на это число и на числовую информацию, которая занимает немного места в памяти, известна до применения нового алгоритма и при этом одна и та же для всех чисел, выдаваемых первым алгоритмом. При этом числа, выдаваемые последовательно основным алгоритмом, второй алгоритм модифицирует. Не подскажите, как грамотно задействовать остальные ядра, чтобы они не простаивали. Идея понятна: размножить числовую информацию, которая занимает немного места в памяти, в количестве, равном числу оставшихся ядер, а вот как дальше действовать? Вопрос стал ребром на процессорах с архитектурой 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 в четыре раза быстрее ((7.0 с. и 29.3 с.). При этом использовалась функция перемножения матриц dgemm из пакета Intel MKL. | Всего записей: 141 | Зарегистр. 24-07-2015 | Отправлено: 15:13 01-08-2015 | Исправлено: GeorgeMame, 21:27 01-08-2015 |
|