Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.
|
"Е14". Сумма массива: программа для однопроцессорной машиныЗадача В последовательных ячейках памяти лежат N целых чисел (одномерный массив). Решение для однопроцессорной машины Пусть в нашем распоряжении имеется традиционная однопроцессорная машина. Напишем для нее программу, приняв N=60. Для системы команд, принятой в "Е14", решение будет иметь приведенный ниже вид.
Данная программа является "классикой жанра" и в особых комментариях не нуждается. В "Е14" принято допущение, что все имеющиеся команды выполняются за одинаковое время. В таком случае время выполнения программы пропорционально количеству выполненных команд. Для нашей задачи это количество легко подсчитать: 3 команды перед циклом, 2 - после и, наконец, цикл из 4 команд, повторяемый N раз. Получаем 5+4N, так что при N=60 это составит 245 команд. С этим числом мы в дальнейшем будем сравнивать результаты параллельных программ. Решения для многопроцессорных машин Теперь перейдем к моделированию на "Е14" многопроцессорной машины разных архитектур. Более простой является архитектура с общей памятью, когда все процессоры - CPU и 4 PPU могут читать и записывать данные на нулевую страницу ОЗУ, которая является базовой для CPU. Возможны два варианта обмена с общей памятью:
Рассмотрим сначала первый случай. Программу для него можно изучить на отдельной странице. Там же обсуждаются результаты. Показано, что применение 5-процессорной вычислительной системы "Е14" с общей памятью ценой определенных усилий позволяет на данной задаче повысить быстродействие в 2 раза. Это лучшее, чего удалось достичь в экспериментах с данной задачей. Во втором случае результаты получились хуже, время выполнения параллельной программы оказалась лишь ненамного меньше, чем в случае традиционной однопроцессорной машины. Наконец, есть еще архитектура с распределенной памятью. При такой архитектуре у каждого PPU своя собственная (подключенная "жестко") страница ОЗУ. А взаимодействие между процессорами осуществляется через общую шину. Программу для рассматриваемой архитектуры можно изучить на отдельной странице. Там же обсуждаются результаты. Показано, что применение многопроцессорной вычислительной системы "Е14" с распределенной памятью на задаче о сумме массива практически не дает выигрыша в быстродействии. С последним алгоритмом был проведен любопытный эксперимент: из программы было удалено копирование четвертей массива, зато они сразу стали загружаться в нужные ОЗУ PPU вместе с программами. В итоге время выполнения такого "урезанного" алгоритма по сравнению с предыдущим уменьшилось в 3,6 раза! А его ускорение S по сравнению с одномашинным алгоритмом достигло 2,7 раза, что заметно лучше любого из алгоритмов, "честно" копирующих данные в ОЗУ PPU. Анализ показывает, что применение параллельных алгоритмов дает хорошие результаты когда время вычислений существенно превышает время обмена данными. Следовательно, желательно
|