
Согласно исследованиям, проведенным на трассах исполнения [1,2], в большинстве программ имеется очень большой потенциал параллелизма, позволяющий ускорять за счет него программы от нескольких сот до нескольких тысяч раз как за счет параллельного исполнения операций, так и путем разделения исполнения на параллельные потоки управления. Распараллеливание на уровне операций является более универсальным, т.к. этот вид параллелизма присутствует в подавляющем большинстве программ и может быть выявлен как с помощью компилятора, так и с помощью аппаратуры. Распараллеливание программ на потоки управления значительно сложнее, т.к. для его полностью автоматического обнаружения в компиляторах требуется гораздо более сложный анализ зависимостей по сравнению с распараллеливанием на уровне операций.
Эффективность распараллеливания, как на уровне операций, так и на уровне параллельных потоков управления, существенно зависит от архитектуры и пропускной способности подсистемы памяти, т.к. параллельное исполнение многократно увеличивает поток обмена данными с памятью. Включение нескольких уровней кэш-памяти сокращает время доступа (за счет чего лучше поддерживается параллелизм операций) и повышает пропускную способность, значительно сокращая число обменов данными между процессором и оперативной памятью за счет их локализации в разных уровнях кэш-памяти [3].
Увеличение пропускной способности памяти достигается также за счет увеличения параллельных каналов доступа в различные уровни иерархии памяти. Увеличение числа каналов реализуется за счет разбиения памяти на отдельные банки, каждый из которых может обслуживаться параллельно с другими.
При наличии иерархии памяти время доступа становится недетерминированным. Оно зависит от того, на каком уровне иерархии находятся нужные данные, а также от конфликтов, которые возникают при обращении к одним и тем же банкам памяти. Чтобы избежать остановки вычислений из-за неготовности данных, необходима своевременная подкачка данных на такой уровень иерархии памяти, на котором обеспечивается требуемая пропускная способность и предсказуемое время доступа.
Все перечисленные выше свойства подсистемы памяти по-разному проявляются при распараллеливании программ на уровне операций и на уровне потоков управления. Целью является изучение влияния архитектуры и иерархии памяти на эффективность одновременного распараллеливания программ как на уровне операций, так и на уровне потоков управления. Для исследования используется симметричная многопроцессорная система на общей памяти ВК Эльбрус-3М [4,5,6], базирующаяся на микропроцессорах с очень большим явным параллелизмом операций. Для исследования были выбраны задачи, которые одновременно обладают обоими видами параллелизма, и этот параллелизм может быть обнаружен автоматически с помощью оптимизирующего компилятора.
Подробнее... Загрузить файл ![]()
Содержание:
Введение
1. Важнейшие характеристики архитектуры ВК Эльбрус-3М
2. Методы распараллеливания в оптимизирующем компиляторе
2.1. Оптимизации и распараллеливание на уровне операций
2.2. Автоматическое распараллеливание на потоки управления
3. Результаты исследования
3.1. Анализ конфликтов подсистемы памяти при одиночном и одновременном запуске задач
3.2. Результаты применения автоматического распараллеливания
Заключение
Литература
Исследование влияния подсистемы памяти на производительность распараллеленных программВ статье дан анализ причин конфликтов при исполнении распараллеленных программ на ВК Эльбрус-3М, обладающем высоким параллелизмом на уровне операций и параллелизмом на уровне потоков управления.