CONVEX FORTRAN. РУКОВОДСТВО ПО ОПТИМИЗАЦИИ

Методическое пособие подготовлено на основе четвертого издания CONVEX FORTRAN Optimization Guide

Мареев В.В.


Оглавление

1. Основы
Опции оптимизации
Скалярная оптимизация
Машинно-зависимая скалярная оптимизация
Машинно-независимая скалярная оптимизация
Векторная оптимизация
Параллельная оптимизация
2. Скалярная оптимизация
Оптимизация, выполняемая при -no
Планировщик команд
Команды локальных переходов
Распределение регистров
Скорейшее вычисление условных выражений
Оптимизация, выполняемая при -O0
Планировщик команд
Удаление лишних присвоений
Замена присвоения
Удаление общих подвыражений
Исключение ненужного употребления подвыражения
Передача и свертка постоянной
Упрощение алгебраических и тригонометрических выражений
Оптимизация, выполняемая при -O1
Передача и свертка постоянной
Исключение лишних присвоений
Удаление потерянного кода
Подъем и спуск ссылок на скалярные величины и массивы
Передача копии
Удаление общих подвыражений
Передвижение кода
Понижение сложности операций
Явное понижение сложности арифметических операций
Управляющие переменные и постоянные цикла
3. Векторная оптимизация
Основная операция
Преобразования, которые выполняет транслятор
Выборка цепочек
Распределение цикла
Перестановка цикла
Подъем и спуск
IF-DO оптимизации
Удаление лишних условий
Очистка крайних выражений цикла
Передвижение условия
Отождествление с образцом
Условные управляющие переменные цикла
Причины, препятствующие векторизации
Возвращение
Зависимость, передаваемая циклом
Зависимость, независимая от цикла
Кажущиеся возвращения
Сокращение
4. Параллельная оптимизация
Основная операция
Причины, препятствующие параллелизации
Циклы с вызовами подпрограмм
Зависимость, передаваемая циклом
Распараллеливание кода внешних циклов
5. Оптимизация FORTRAN программ
Шаг 1. Трансляция программы
Шаг 2. Добавление скалярной оптимизации
Шаг 3. Добавление векторизации
Шаг 3а. Добавление векторизации на первом шаге
Шаг 3б. Добавление выборочной векторизации
Шаг 4. Усиление векторной оптимизации
Шаг 5. Добавление параллелизации
Шаг 5а. Добавление параллелизации на первом шаге
Шаг 5б. Добавление выборочной параллелизации
Шаг 6. Усиление параллельной оптимизации
Шаг 7. Упаковка
6. Программирование эффективных конструкций
Типы данных при вычислениях
Написание эффективных циклов
Оптимизация доступов к памяти
Расслоение памяти
Многомерные массивы
Доступы к неполному слову
7. Методы оптимизации программ
Устранение ненужных цепочек
Не векторизуйте цикл с небольшим числом шагов
Повышение размерности массива
Удаление условных выражений из цикла
8. Встроенная замена
Когда использовать замену
Как использовать замену
Создание .fil файлов
Использование опции -is
Ограничения на использование замены
9. Потенциально небезопасные оптимизации
Элементарное понижение сложности операций
Передвижение кода
Устранение преобразования типов данных
10. Ограничения, накладываемые на оптимизацию
Неверные результаты
Ошибочный код
Скрытое совмещение имен
Недопустимые индексы
Потеря точности чисел с плавающей запятой
Ошибка округления
Векторные сокращения
Неправильное употребление директив и опций
Недостатки транслятора
Сокращения
Порядок выполнения
Повторение нуля
Неопределенность параллельного выполнения
Условная векторизация
Замена условия
Большое число шагов при опции -O2 и выше
Замедленный код
Неправильное употребление директив
Укороченная векторная длина
Запутанные условные выражения
11. Опции оптимизации
Опции уровней оптимизации
Опции перекрестной трансляции
Опции копирования цикла
Опции IF-DO оптимизации
Другие опции оптимизации
12. Директивы транслятора
BEGIN_TASKS, NEXT_TASKS, END_TASKS
DO_PRIVATE
FORCE_PARALLEL
FORCE_PARALLEL_EXT
FORCE_VECTOR
MAX_TRIPS
NO_PARALLEL
NO_PEEL
NO_PROMOTE_TEST
NO_RECURRENCE
NO_SIDE_EFFECTS
NO_VECTOR
PEEL
PEEL_ALL
PREFER_PARALLEL
PREFER_PARALLEL_EXT
PREFER_VECTOR
PROMOTE_TEST
PROMOTE_TEST_ALL
PSTRIP
ROW_WISE
SCALAR
SELECT
SYNCH_PARALLEL
TASK_PRIVATE
UNROLL
VSTRIP
13. Доклад по результатам оптимизации
Таблица цикла
Разбор таблицы
Таблица условия
Таблица ссылок на имена переменных
Таблица массива
Примеры
Пример 1
Пример 2
Словарь используемых терминов