Главная > Анализ зависимости данных | ||||||||||||
1994 |
Для определения того, могут ли итерации цикла выполняться параллельно (на векторном компьютере) используется анализ зависимости данных. Ваша задача провести анализ зависимости данных для оператора цикла с оператором присваивания одномерному массиву. Во входном файле содержится набор циклов. Каждый цикл содержит один оператор присваивания, который включает элементы одномерного массива A c линейными индексами и счетчик цикла I. Для каждого цикла требуется определить какому из следующих условий он удовлетворяет:
Оператор присваивания записывается в виде
где в качестве индексов массива A могут быть следующие выражения:
n I I-m I+m n*I n*I+m n*I-m Здесь m и n - целые числа в диапазоне -32768..+32767. Выражение в правой части присваивания является арифметическим выражением, записанным по правилам языка Pascal. Выражение не содержит строковых констант и комментариев. Все вырезки из массива A удовлетворяют описанным выше требованиям.
Оператор цикла задается в виде Оператор может быть выполнен параллельно, если после присваивания элементу массива A (левая часть присваивания), его значение не используется в правой части оператора. Анализ зависимости не выполняется, если цикл работает один или два раза. Исходные данные Файл исходных данных содержит одну или более строк, каждая из которых содержит цикл с оператором присваивания в виде: LOOP mm,nn,pp: A [expr] := expr2 или LOOP mm,nn: A [expr] := expr2 Длина строки файла исходных данных не превосходит 80 символов. Вывод программы Для каждого исходного оператора цикла вывести в выходной файл 2 строки: сам оператор и результат анализа зависимости данных: Не выполнится ни разу Выполнится один раз Выполнится два раза Параллельное исполнение Требует последовательного исполнения Пример
|