Обеспечение поддержки процесса повышения производительности компиляторов для архитектур с явно выраженной параллельностью при их совместной разработке тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат технических наук Баскаков, Юрий Валерьевич
- Специальность ВАК РФ05.13.11
- Количество страниц 149
Оглавление диссертации кандидат технических наук Баскаков, Юрий Валерьевич
Введение.
1. Технология повышения производительности компиляторов.
1.1 Тестовая база.
1.2 Анализ производительности.
1.2.1 Требования к поиску неоптимальностей и системе приоритетов.
1.2.2 Причины неоптимальностей.
1.2.3 Подходы к выявлению неоптимальностей.
1.2.4 Структурная модель анализа.
1.2.5 Классификация предложений и порядок поиска неоптимальностей.
1.2.6 Анализ производительности на отдельной задаче.
1.2.7 Оценки и предсказания.
1.2.7.1 Оценка эффекта от реализации выработанных предложений.
1.2.7.2 Предсказание пиковой производительности на задаче.
1.2.8 Система приоритетов предложений.
1.3 Контроль деградаций.
1.3.1 Общая постановка задачи (модель).
1.3.2 Виды деградаций.
1.3.3 Подходы к контролю деградаций.
1.3.4 Частота замеров показателей производительности.
1.4 Реализация технологии повышения производительности.
1.4.1 Реализация процесса анализа производительности.
1.4.2 Реализация процесса контроля деградаций.
1.5 Результаты.
1.6 Выводы.
2 Система контроля деградаций.
2.1 Метрические характеристики производительности.
2.2 Метрики деградаций.
2.3 Требования к выбору значений порога деградации.
2.4 Методы оценки эффекта модификаций на производительность.
2.4.1 Оперативная оценка общего времени выполнения.
2.4.2 Альтернативные подходы к обеспечению оперативности методов оценки.
2.4.2.1 Метод оценки по времени выполнения наиболее значимых фрагментов.
2.4.2.2 Метод оценки по фактам применения оптимизаций.
2.5 Реализация системы контроля деградаций.
2.5.1 Основные положения методики контроля (проектные решения).
2.5.2 Стратегия контроля.
2.5.3 Реализация методов оперативной оценки.
2.5.4 Структура системы контроля деградаций.
2.6 Результаты.
2.7 Выводы.
3 Исследования оптимизационных возможностей компиляторов.
3.1 Требования к тестовому комплекту.
3.2 Подходы к тестированию оптимизаций.
3.3 Особенности реализации системы тестирования ОСТеТ.
3.3.1 Специфика окружения.
3.3.2 Метод тестирования и критерий полноты.
3.3.3 Спецификация метода тестирования.
3.3.4 Пример проектирования спецификации для оптимизации Loop
Fusion.
3.3.5 Принципы построения тестов.
3.3.6 Структура тестов.
3.4 Результаты.
3.5 Выводы.
Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК
Базовые методы оптимизации на предикатном представлении программы для архитектур с явно выраженной параллельностью2003 год, кандидат технических наук Окунев, Сергей Константинович
Развитие методов глобального планирования программ для архитектур с явно выраженной параллельностью2005 год, кандидат технических наук Новиков, Сергей Викторович
Развитие методов статического анализа программ, используемых в оптимизирующих компиляторах для архитектур с явно выраженной параллельностью2004 год, кандидат технических наук Дроздов, Александр Юльевич
Методы удаления избыточностей на этапе компиляции программ2009 год, кандидат технических наук Филиппов, Александр Николаевич
Методология повышения производительности вещественных и мультимедийных приложений в процессе оптимизирующей двоичной трансляции2006 год, кандидат технических наук Василец, Павел Станиславович
Введение диссертации (часть автореферата) на тему «Обеспечение поддержки процесса повышения производительности компиляторов для архитектур с явно выраженной параллельностью при их совместной разработке»
Актуальность темы. При промышленной разработке систем информационных технологий к эффективности1 конечного продукта традиционно предъявляются высокие требования. Не исключением являются и компиляторы. Как отмечается в [RHD98], эффективность компиляторов имеет две составляющие. Одна из них характеризует этап компиляции и затрагивает такие его аспекты как, например, скорость компиляции и объем выделяемой в процессе компиляции динамической памяти. Другая же относится к качеству генерируемого компилятором кода и определяется временем его выполнения и/или его размером. Такое разделение выбрано неслучайно - время компиляции и затрачиваемая при этом память важны для разработчиков приложений, в то время как быстродействие и компактность кода представляют интерес с точки зрения их конечного пользователя.
Если говорить об эффективности периода компиляции, то требуемый уровень последней должен достигаться, в основном, за счет выбора соответствующих ограничений на сложность реализуемых в компиляторе алгоритмов и следования участниками процесса разработки установленным правилам производственной дисциплины. Что же касается вопросов эффективности целевого кода, то компилятор должен быть наделен достаточно мощными средствами оптимизации, позволяющими строить код с заданными характеристиками.
Для минимизации времени выполнения оттранслированного кода компилятор может применять к исходной программе целый ряд оптимизирующих преобразований, переводящих ее из одного эквивалентного состояния в другое с тем, чтобы в идеале получить для этой программы самый быстрый целевой код, который только возможен. Таким образом, чтобы добиться требуемого уровня быстродействия, разработчики компилятора должны постоянно работать над качеством его оптимизационных возможностей. Такого рода деятельность мы будем называть повышением производительности2 компилятора.
Повышение производительности должно осуществляться за счет расширения набора оптимизирующих преобразований, которые компилятор поддерживает, и устранения
1 Одно из определений понятия эффективности можно найти, например, в [ББКЛММ81]: программный продукт обладает свойством эффективности, если он выполняет требуемые функции без излишних затрат ресурсов, где ресурсы понимаются в широком смысле.
2 Здесь и далее производительность компилятора понимается с позиции быстродействия создаваемого им кода. дефектов в реализованных ранее компонентах. Для эффективного развития компилятора в этом направлении наряду с деятельностью по устранению дефектов и реализации новых преобразований необходимо проведение комплекса мероприятий аналитического характера по выявлению неоптимальностей в целевом коде транслируемых с использованием этого компилятора программ.
Кроме того, как показывает практика [RHD98], [БВГНТ04], при разработке компилятора приемлемого уровня быстродействия целевого кода можно добиться лишь в результате непрерывного контроля текущего состояния производительности. Действительно, любые модификации исходного кода компилятора, будь то исправление ошибок или расширение функциональности, являются потенциальными источниками деградации достигнутых показателей быстродействия.
Наконец, как для проведения анализа кода на предмет неэффективности, так и для осуществления контроля производительности, требуется некоторое представительное множество программ. Так что формирование этого множества является еще одной проблемой, которую необходимо решить для достижения желаемого результата.
Таким образом, для повышения производительности компилятора, помимо непосредственного внесения изменений в его код, чрезвычайно важной оказывается деятельность по поддержке этого процесса, под которой мы будем понимать совокупность мероприятий аналитического и технологического характера, направленных на выработку предложений по развитию компилятора и призванных обеспечить контроль этого развития.
Проблема разработки высокопроизводительных оптимизирующих компиляторов становится еще более актуальной в свете современных тенденций развития вычислительной техники. Традиционные суперскаляры, реализующие динамический подход к распараллеливанию вычислений, практически достигли предельного уровня аппаратной сложности и не могут масштабироваться до бесконечности для поддержания темпов роста производительности, к которым привыкло современное общество [LeVa03]. Одним из путей к преодолению данного ограничения является перенос основных интеллектуальных функций аппаратуры на уровень программного обеспечения. Этот подход лежит в основе так называемых архитектур с явно выраженным параллелизмом на уровне команд (Explicitly Parallel Instruction Computing, EPIC).
Производительность архитектур с явно выраженным параллелизмом (далее, для краткости, EPIC-архитектур) сильно зависит от возможностей компилятора оптимальным образом распределять аппаратные ресурсы статически [ACMS98]. Учитывая тот факт, что величина значения тактовой частоты и параллелизм уровня команд являются антагонистичными свойствами [АНКВОО], коммерческий успех архитектуры в целом определяется качеством оптимизационных возможностей компилятора, что наглядно демонстрируется на примере архитектуры Itanium / Itanium 2. Действительно, на начальном этапе отсутствие приемлемого компилятора являлось серьезным сдерживающим фактором продвижения данной архитектуры на рынок.
Отличительной чертой компиляторов для EPIC-архитектур является их предельная сложность, что обусловлено потребностью в использовании по максимуму потенциала широкого командного слова и прочих предоставляемых архитектурой аппаратных механизмов, призванных обеспечить эффективную поддержку внутреннего программного параллелизма. Прежде всего, в компиляторе должно быть реализовано значительное число оптимизирующих преобразований, обладающих в своей совокупности достаточным богатством выразительных средств для отображения внутреннего программного параллелизма на возможности целевой архитектуры. Далее, применимость каждого из преобразований в таком компиляторе контролируется сложной системой эвристик. Наконец, повышенные требования предъявляются к аналитическим компонентам, т.к. слишком грубый анализ может свести на нет тот потенциал, который содержится в транслируемых программах.
Данные особенности EPIC-компиляторов (здесь и далее, компиляторов для EPIC-архитектур) накладывают на процесс разработки значительный отпечаток. Во-первых, поскольку архитектура предоставляет множество резервов, следует ожидать выявления значительного числа дефектов компилятора на протяжении всего цикла его разработки. Так что разработка характеризуется высокой интенсивностью внесения изменений в архив проекта и высоким риском возникновения деградаций. Во-вторых, в каждый момент времени разработчики стоят перед проблемой, какие преобразования наиболее эффективно реализовать в компиляторе в первую очередь, чтобы в максимально короткие сроки добиться приемлемого уровня производительности. Здесь выбор может быть как в пользу традиционных оптимизаций, так и в пользу специфичных для EPIC-архитектур, и, часто, уникальных преобразований. В-третьих, несмотря на то, что EPIC-компиляторы используют множество традиционных преобразований, для архитектур с явно выраженным параллелизмом на уровне команд, контексты применимости таких преобразований могут быть существенно расширены.
Особый интерес представляет случай разработки компиляторов для архитектур, которые только готовятся к выходу на рынок. Поскольку новая архитектура должна выходить на рынок вместе с компилятором, большая часть времени разработки последнего приходится на период, когда реальной машины еще не существует.
Диссертационная работа посвящена проблеме обеспечения поддержки процесса повышения производительности компиляторов для архитектур с явным параллелизмом на уровне команд в условиях одновременной разработки компилятора и архитектуры. Технологическим и методологическим аспектам разработки высокопроизводительных компиляторов вообще, и вопросам обеспечения поддержки процесса повышения производительности в частности, посвящено незначительное количество публикаций. В основном, внимание уделяется конечному результату - архитектурной производительности. Это также определяет актуальность проведенного в рамках диссертационной работы исследования.
Цель исследования. Конечной целью настоящей работы являлась разработка технологии повышения производительности промышленных компиляторов для новых архитектур с явно выраженным параллелизмом на уровне команды и ее реализация в виде комплекса средств, обеспечивающих поддержку данного процесса. В соответствии с этой целью были определены следующие задачи: исследовать специфику проблемы повышения производительности компиляторов в рассматриваемых условиях (частые обновления архива проекта, много оптимизаций, исполнение на программной модели процессора и т.д.); разработать комплексный подход к проблеме повышения производительности компиляторов, затрагивающий все значимые аспекты технологического цикла данного процесса и пригодный к использованию в условиях разработки EPIC-компилятора для новой архитектуры; реализовать предложенный подход в виде комплекса программных средств и технологий.
Предмет исследования составляют методологические и технологические аспекты обеспечения поддержки процесса повышения производительности промышленных компиляторов: технология повышения производительности компиляторов; методы выявления наиболее приоритетных направлений развития компилятора; методы контроля состояния производительности компилятора на протяжении технологического цикла разработки.
Методы исследования заимствованы из областей системного программирования, проектирования, технологии компиляции, аттестационного тестирования, системного анализа, математической статистики, теории алгоритмов. Эффективность предложенных решений оценивалась в рамках процесса разработки оптимизирующего компилятора для архитектуры «Эльбрус 2000». Показателем эффективности являлась динамика изменения показателей производительности компилятора на задачах из пакета SPEC [SPEC].
Научная новизна
Научная новизна работы может быть представлена следующими тезисами:
Разработана технология повышения производительности, учитывающая особенности процесса разработки компиляторов для архитектур, предоставляющих значительные резервы для явного отображения на них внутреннего программного параллелизма.
Предложены стратегия поиска неоптимальностей компилятора и методика их упорядочивания, позволяющие эффективно выбирать направления развития компилятора в условиях существования множества альтернатив, обеспечивая при этом стабильный рост показателей производительности.
Предложен и реализован механизм оперативного контроля деградаций, основанный на двух оригинальных методах оценки эффекта модификаций на производительность, который позволяет обнаруживать и предотвращать случаи регресса показателей производительности компилятора за приемлемое время даже при использовании программной модели процессора.
Разработан набор алгоритмов, обеспечивающих построение тестовых примеров, требуемых для осуществления оперативного контроля в рамках предложенной методики.
Сформулированы требования к комплекту для исследования оптимизаций и разработана методика тестирования оптимизаций в рамках следования критерию полного тестирования на уровне покрытия контекстов применимости.
Предложен метод формального описания тестовых ситуаций, обеспечивающий следование критерию полноты.
Для архитектур с явной параллельностью на уровне команды разработаны принципы построения тестов, обеспечивающие наблюдаемое проявление эффекта от применения компилятором заданной оптимизации.
Практическая ценность результатов диссертации состоит в том, что все предложенные в работе методы и технологии были использованы для обеспечения поддержки процесса повышения производительности оптимизирующего компилятора для архитектуры «Эльбрус 2000» [Diefendorf99], [Кузьминский99], [BabayanOO], разработанной в ЗАО МЦСТ. В частности, на основе исследований, выполненных по теме диссертации, были достигнуты следующие практические результаты:
Разработана автоматизированная система оперативного контроля деградаций.
Построено множество тестовых примеров, необходимое для осуществления оперативного контроля.
Для задач из пакетов SPEC92 и SPEC95 выделено множество наиболее значимых случаев применения оптимизаций, используемое для нужд оперативного контроля.
Спроектирован и реализован тестовый комплект, предназначенный для исследования оптимизаций.
Множество тестовых примеров, построенное для осуществления оперативного контроля, было также использовано в качестве основы для проведения базовых настроек компилятора для архитектуры «Эльбрус 2000» при его портировании на архитектуру Itanium 2 [ItaniumRM].
Результаты работы
В процессе работы были получены следующие результаты:
Исследована проблема повышения производительности компиляторов.
Предложена структурная схема организации процесса повышения производительности.
Разработана методика поиска неоптимальностей, определяющая выбор наиболее приоритетных направлений развития в условиях, когда архитектура предоставляет компилятору большие возможности по оптимизации.
Предложена система приоритетов, позволяющая эффективно упорядочивать интенсивный поток сообщений о неоптимальностях.
Сформулированы требования к контролю вносимых изменений и предложены методы их достижения.
Сформулированы требования к комплекту для исследования оптимизаций, и разработана методология его построения.
Осуществлено практическое воплощение предложенных идей в виде комплекса программных средств и технологий.
Публикации
По теме диссертации опубликовано 10 печатных работ:
1. Ю.В. Баскаков, В.Ю. Волконский, А.В. Грабежной, М.И. Нейман-заде, Е.Ю. Чернова. Методика анализа производительности компиляторов для архитектур с явной параллельностью // Компьютеры в учебном процессе, N11, с. 23-38, 2005.
2. Ю.В. Баскаков. Об организации контроля деградаций показателей производительности компилятора на этапе разработки // Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, N8, с. 25-33, 2005.
3. Е.Ю. Архангельская, Ю.В. Баскаков, Н.Н. Серебряная, Л.Г. Тарасенко. Принципы построения тестов для исследования оптимизационных возможностей компиляторов для архитектур с явной параллельностью // Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, N8, с. 9-24, 2005.
4. Ю.В. Баскаков, В.Ю. Волконский, А.В. Грабежной. Оценка влияния модификаций компилятора на быстродействие целевого кода // Информационные технологии и вычислительные системы, N3, с. 111-119, 2005.
5. Ю.В. Баскаков. Об одном подходе к организации оперативного контроля деградаций показателей производительности компилятора на множестве приложений // 1-я Международная научно-практическая конференция «Современные информационные технологии и ИТ-образование», Москва, 2005. Сборник трудов, с. 355-364.
6. Е.Ю. Архангельская, Ю.В. Баскаков, А.В. Грабежной, Н.Н. Серебряная, Л.Г. Тарасенко. ОСТеТ: система для исследования оптимизационных возможностей компиляторов // Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, N7, с. 3-11, 2004.
7. Ю.В. Баскаков, В.Ю. Волконский, А.В. Грабежной, М.И. Нейман-заде, Л.Г. Тарасенко. Поддержка процесса повышения производительности компиляторов // Информационные технологии и вычислительные системы, N3, с. 78-92, 2004.
8. Ю.В. Баскаков, А.В. Грабежной, А.А. Лаврешников, Р.Ю. Рогов , Л.Г. Тарасенко, Е.Ю. Чернова. Вопросы организации системы обеспечения качества оптимизирующих компиляторов // Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, N6, с. 77-85, 2004.
9. Ю.В. Баскаков. Поддержка процесса повышения производительности // IX Санкт-Петербургская международная конференция «Региональная информатика - 2004», Санкт-Петербург, 2004.
10. Ю.В. Баскаков Об одном методе оперативного контроля эффективности целевого кода при разработке оптимизирующего компилятора // Научно-техническая конференция «Развитие и внедрение в системах РКО перспективной вычислительной техники и новых вычислительных технологий», Москва, 2003.
Апробация
Результаты, полученные в работе, изложены в ряде печатных публикаций, докладывались на научных конференциях и семинарах, в частности: на научно-технической конференции «Развитие и внедрение в системах РКО перспективной вычислительной техники и новых вычислительных технологий», Москва, 2003; на IX Санкт-Петербургской международной конференции «Региональная информатика - 2004», Санкт-Петербург, 2004; на 1-ой Международной научно-практической конференции «Современные информационные технологии и ИТ-образование», Москва, 2005 г; на научно-технических семинарах ЗАО МЦСТ и ИМВС РАН.
Структура и объем работы
Диссертация состоит из введения, трех глав, заключения и одного приложения. Список источников насчитывает 69 наименований. Объем диссертации составляет 149 страниц текста. Диссертация содержит 7 таблиц и 43 рисунка.
Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК
Методы оптимизации доступа к подсистеме памяти на этапе компиляции для микропроцессорных систем с архитектурой широкого командного слова2008 год, кандидат технических наук Галазин, Александр Борисович
Комплексная технология распределения регистров и планирования инструкций в оптимизирующем компиляторе вычислительных комплексов семейства "Эльбрус"2012 год, кандидат технических наук Иванов, Дмитрий Сергеевич
Методы повышения производительности двоично-транслирующих систем с аппаратной поддержкой2003 год, кандидат технических наук Ермолович, Александр Владленович
Современные методы статического и динамического анализа программ для автоматизации процессов повышения качества программного обеспечения2012 год, доктор физико-математических наук Аветисян, Арутюн Ишханович
Спекулятивные оптимизации программ для архитектур с явно выраженным параллелизмом команд2008 год, кандидат физико-математических наук Белеванцев, Андрей Андреевич
Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Баскаков, Юрий Валерьевич
3.5 Выводы
В данной главе были затронуты проблемы тестирования оптимизирующих преобразований. В частности, рассмотрена система ОСТеТ, разработанная для исследования пространства оптимизаций в контексте архитектуры «Эльбрус 2000» и осуществляющая их тестирование посредством изоляции функциональности последних.
Наряду с обзором методов тестирования и требований к тестовым комплектам, был предложен подход к проектированию тестовых спецификаций, обеспечивающий следование критерию полного тестирования на уровне покрытия контекстов применимости оптимизирующих преобразований. В основе подхода лежит заимствованная из области аттестационного тестирования концепция атрибута, которая была адаптирована для случая тестирования оптимизаций. Данный подход позволяет не только наглядно представить рассматриваемые свойства контекста применимости и произвести систематический перебор наиболее существенных его аспектов, но, вместе с тем, дает возможность без дополнительных затрат добавлять новые значимые свойства оптимизаций (выявленные, например, при анализе производительности компилятора на приложениях) к уже существующим.
В данной главе предложены стратегия и принципы построения набора атрибутов, а также сформулирован критерий полноты тестирования в терминах элементов спецификации.
Кроме того, на примере архитектуры «Эльбрус 2000» проведено исследование возможностей по выявлению дефектов оптимизаций в случае использования двухрежимного подхода в контексте EPIC-архитектур. Для каждого класса оптимизаций подробно рассмотрены разработанные автором принципы построения тестов, обеспечивающие наблюдаемое проявление эффекта от применения заданного преобразования. Также предложена структура тестов и разработана политика их взаимодействия с тестовым окружением. Для поддержки реализации преобразований, результат работы которых зависит от профильной информации, разработан механизм достижения заданного распределения вероятностей прохождения путей программы.
Построенная в соответствии с разработанной автором методологией, система ОСТеТ, включающая тесты для 22 оптимизаций общим числом 1928 штук, была успешно применена не только для исследования оптимизационных возможностей компилятора для архитектуры «Эльбрус 2000», но и для тестирования промышленного компилятора фирмы Intel для архитектуры Itanium 2. В последнем случае было выявлено 898 фактов несрабатывания оптимизаций в благоприятных контекстах.
Что касается результатов использования системы ОСТеТ в рамках процесса повышения производительности компилятора для архитектуры «Эльбрус 2000», то было выявлено и устранено 192 различных случая неприменения оптимизаций в благоприятных контекстах, а также 105 случаев нарушения работоспособности программ. При этом, был обнаружен ряд ошибок взаимодействия оптимизаций. Для текущего состояния компилятора системой ОСТеТ зафиксировано 527 фактов несрабатывания оптимизаций.
Заключение
Диссертационная работа посвящена проблеме обеспечения поддержки процесса повышения производительности компиляторов для архитектур с явным параллелизмом на уровне команды в условиях их одновременной разработки. Фактически, речь идет о процессе разработки, обладающем следующими отличительными характеристиками: архитектура предоставляет компилятору большие возможности по оптимизации, что подразумевает:
- существование множества альтернативных направлений для дальнейшего развития;
- большое число вырабатываемых предложений по усилению оптимизационных возможностей компилятора;
- высокая интенсивность внесения изменений в архив проекта;
- высокий риск возникновения деградаций; ведение работ при отсутствии готового процессора.
В ходе решения поставленных задач были достигнуты следующие научные результаты:
Предложена структурная схема организации процесса повышения производительности, а также проработана политика взаимодействия его участников.
Разработана методика анализа производительности, позволяющая эффективно выбирать направления развития компилятора в условиях существования множества альтернатив, обеспечивая при этом стабильный рост показателей производительности. В частности:
- Для борьбы с последствиями деградаций предложено явное разделение деятельности по анализу производительности на две составляющие: активный анализ производительности, призванный обеспечить приемлемый темп развития функциональных возможностей компилятора, и анализ причин деградаций, направленный на удержание достигнутого в ходе разработки уровня показателей производительности.
- Разработана методика выработки предложений по дальнейшему развитию компилятора, сочетающая в себе анализ производительности на
Список литературы диссертационного исследования кандидат технических наук Баскаков, Юрий Валерьевич, 2005 год
1. АНКВОО. V. Agarwal, М. Hrishikesh, S. Keckler, D. Burger. Clock Rate versus IPC: The End of the Road for Conventional Microarchitectures. ACM, pp. 248-259, 2000
2. AKPW83. J.R. Allen, K. Kennedy, C. Porterfield, J. Warren. Conversion of Control Dependence to Data Dependence. In Proceedings of the 10th Annual ACM Symposium on the Principles of Programming Languages, pp. 177-189, 1983
3. BabayanOO. B. Babayan. E2K Technology and Implementation, in Proceedings of the 6th International Euro-Par Conference, Lecture Notes in Computer Science, Springer, vol. 1900, pp. 18-21, August 2000
4. BGS94. D. Bacon, S. Graham, O. Sharp. Compiler Transformations for High-Performance Computing. ACM Computing Surveys, 26 (4), pp. 345-420, 1994
5. BFG85. M. Bassman, G. Fisher, A. Gargaro. An Approach for Evaluating the Performance Efficiency of ADA Compilers, 1985
6. Beizer83. B. Beizer. Software System Testing and Quality Assurance. N.Y., Van Nostrand Reinhold, 1983
7. BCM94. D. Bernstein, D. Cohen, D. Maydan. Dynamic Memory Disambiguation for Array References. In Proceedings of the 27th Annual International Symposium on Microarchitecture, pp. 105-111, 1994.
8. CaKe94. S. Carr, K. Kennedy. Improving the Ratio of Memory Operations to Floating-Point Operations in Loops. ACM Transactions on Programming Languages and Systems, 16 (6), pp. 1768-1810, 1994
9. Cascaval99. C. Cascaval, L. DeRose, D. Padua, D. Reed. Compile-time Based Performance Prediction. Lecture Notes in Computer Science, Springer Verlag, 1999
10. CascavalOO. C. Cascaval. Compile-time Performance Prediction of Scientific Programs. PhD Thesis, University of Illinois at Urbana-Champaign, 2000
11. СаРаОЗ. С. Cascaval, D. Padua. Estimating Cache Misses and Locality Using Stack Distances. In Proceedings of ICS'03, pp. 150-159, 2003
12. Diefendorf99. K. Diefendorf. The Russians Are Coming: Supercomputer Maker Elbrus Seeks to Join x86/IA-64 Melee. Microprocessor report, vol. 2, no. 2, pp. 7-11, 1999
13. Eigenmann93. R. Eigenmann. Toward a Methodology of Optimizing Programs for High-Performance Computing. In Proceedings of the 7th International Conference on Supercomputing, pp. 27-36, 1993
14. FlWa86. P. Fleming, J. Wallace. How not to Lie with Statistics: the Correct Way to Summarize Benchmark Results. Communications of the ACM, vol. 29, no.3, pp. 218-221, March 1986
15. GKK82. S. Graham, P. Kessler, M. McKusick. gprof: A Call Graph Execution Profiler. In SIGPLAN Symposium on Compiler Construction, pp. 120-126, June 1982
16. HHR95. R. Hank, W. Hwu, B. Rau. Region-Based Compilation: An Introduction and Motivation. In Proceedings of the 28th Annual International Symposium on Microarchitecture, Micro-28, pp. 158168, December 1995
17. НеРаОЗ. J. Hennessy, D. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, San Francisco, Third Edition, 2003
18. JCNWLZ02. R. Ju, S. Chan, T.-F. Ngai, C. Wu, Yu. Lu, J. Zhang. Open Research Compiler (ORC) 2.0 and Tuning Performance on Itanium. Micro-35 Tutorial, 2002
19. KlLi02. AJ KleinOsowski, D. Lilja. MinneSPEC: A New SPEC Benchmark Workload for Simulation-Based Computer Architecture Research. Computer Architecture Letters, vol.1, May 2002
20. KRS92. J. Knoop, O. Ruthing, B. Steffen. Lazy Code Motion. ACM
21. SIGPLAN Notices, 27(7), pp.224-234, 1992
22. AmOO. S. Larsen, S. Amarasinghe. Exploiting Superword Parallelism with Multimedia Instruction Set. PLDI 2000, Vancouver, British Columbia, Canada
23. Va03. M. Len, I. Vaitsman. VLIW: Old Architectures of the New Generation, http://www.digit-life.com
24. St98. E. Limpert, W. Stahel. Life is Log-normal! Science and Art, Life and Statistics. ETH Zurich, 1998
25. W99. Y.-T. Li, S. Malik, A. Wolfe. Performance Estimation of Embedded Software with Instruction Cache Modeling. Design Automation of Electronic Systems, vol. 4, no. 3, pp. 257-279, 1999
26. Mashey04. J. Mashey. War of the Benchmark Means: Time for a Truce. ACM SIGARCH Computer Architecture News, vol. 32, no. 4, pp. 1-14, September 2004
27. MCT96. K. McKinley, S. Carr, C. Tseng. Improving Data Locality with Loop Transformations. ACM Transactions on Programming Languages and Systems, vol. 18, no. 4, pp. 424-453, 1996
28. McMahon88. F. McMahon. The Livermore Fortran Kernels Test of the Numerical Performance Range. Performance Evaluation of Supercomputers, pp. 143-185, Elsevier Science Publishers B.V., 1988
29. MGST70. R. Mattson, J. Gecsei, D. Slutz, I. Traiger. Evaluation Techniques for Storage Hierarchies. IBM Systems Journal, 9(2), 1970
30. Muchnick97. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997
31. MuWh95. F. Mueller, D. Whalley. Avoiding Conditional Branches by Code Replication. In Proceedings of the 1995 ACM SIGPLAN conference on Programming language design and implementation, 30(6), pp 5666
32. RHD98. H. Rotithor, K. Harris, M. Davis. Measurement and Analysis of С and С++ Performance. Digital Technical Journal, vol. 10, no. 1, pp. 32-47,1998
33. Sias05. J. Sias. A Systematic Approach to Delivering Instruction-Level Parallelism in EPIC Systems. PhD Thesis, University of Illinois at Urbana-Champaign, 2005
34. TVVA03. S. Triantafyllis, M. Vachharajani, N. Vachharajani, D. August.
35. Compiler Optimization-Space Exploration. In Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization CGO'03, pp. 204-215, 2003
36. VoMa93. V. Volkonsky, D. Maslennikov. Compiler Method and Apparatus for Elimination of Redundant Speculative Computations from Innermost Loops. US Patent, US 6301706 Bl, Oct.9, 2001
37. АБГСТ04. Е.Ю. Архангельская, Ю.В. Баскаков, A.B. Грабежной, Н.Н.
38. Серебряная, Л.Г. Тарасенко. ОСТеТ: система для исследования оптимизационных возможностей компиляторов. Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, N7, с. 3-11, 2004
39. АСУ01. А. Ахо, Р. Сети, Дж. Ульман. Компиляторы принципы, технологии, инструменты. - М.: Издательский дом «Вильяме», 2001
40. БГЛТРЧ04. Ю.В. Баскаков, А.В. Грабежной, А.А. Лаврешников, Р.Ю.
41. Рогов, Л.Г. Тарасенко, Е.Ю. Чернова. Вопросы организациисистемы обеспечения качества оптимизирующих компиляторов. Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, N6, с. 77-85, 2004
42. БВГНТ04. Ю.В. Баскаков, В.Ю. Волконский, А.В. Грабежной, М.И.
43. Нейман-заде, Л.Г. Тарасенко. Поддержка процесса повышения производительности компиляторов. Информационные технологии и вычислительные системы, N3, с.78-92, 2004
44. ББКЛММ81. Б. Боэм, Дж. Браун, X. Каспар и др. Характеристики качества программного обеспечения. М.: Мир, 1981
45. ДрНо05. А.Ю. Дроздов, С.В. Новиков. Алгоритм формирования гиперблоков, 2005 (в печати)
46. ДрРо04. А.Ю. Дроздов, Е.В. Ровинский. Технология использования векторных операций для получения оптимального кода. Компьютеры в учебном процессе, N9, 2004
47. ДрСт04. А.Ю. Дроздов, А.М. Степаненков. Технология оптимизации цикловых участков процедур в компиляторах для архитектур с явно выраженной параллельностью. Информационные технологии и вычислительные системы, N3, с.52-62, 2004
48. КанерОО. С. Канер и др. Тестирование программного обеспечения. К.: ТИД «DiaSoft», 2000
49. Кауфман84. В.Ш. Кауфман. Стандартизация и контроль трансляторов.
50. Различные аспекты системного программирования. М.: Изд-во Моск. ун-та, с.47-85, 1984
51. Кузьминский99. М. Кузьминский. Отечественные микропроцессоры: Elbrus Е2К. Открытые системы, N05-06, с. 8-13, 1999
52. Кулаков84. А.Ф. Кулаков. Оценка качества программ ЭВМ. К.: Техшка, 1984
53. Лаврешников02. А.А. Лаврешников. Пакет для оперативной оценки производительности оптимизирующих компиляторов. Высокопроизводительные вычислительные системы и микропроцессоры, сборник научных трудов ИМВС РАН, 2002
54. Майерс80. Г. Майерс. Надежность программного обеспечения М.: Мир, 1980
55. Майерс82. Г. Майерс. Искусство тестирования программ. М.: Финансы и статистика, 1982
56. Сухомлин97. В. А. Сухомлин. Система программирования тройного стандарта (ЗС++). IV Международная конференция «Развитие и применение открытых систем». Сборник докладов, с. 37-47, Нижний Новгород, 1997
57. ФофановОО. В. А. Фофанов. Внешнее тестирование интерфейсных библиотек (на примере интерфейса ASIS). Диссертационная работа. Москва, 2000
58. Хамби76. Э. Хамби. Программирование таблиц решений. М.: Мир, 1976
59. ARCTIC. The Laboratory for Advanced Research in Computing Technology and Compilers, University of Minnesota -http ://w w w. arctic .umn.edu
60. Bench. Orost J., The Bench++ Benchmark Suitehttp://www.research.att.com/~orost/bench plus pi us/paper, html
61. Blitz. Blitz++ library http://www.oonumerics.org/blitz/
62. CVS. The Concurrent Versions System http://www.cvshome.org/
63. DEC. Digital Equipment Corporation http://www.dec.com
64. Fortran. ANSI X3.9-1978 FORTRAN 77
65. GPROF. GNU gprof http://ftp.gnu.Org/gnu/Manuals/gprof-2.9.l
66. PACT. The IMPACT Research Grouphttp://www.crhc. uiuc .edu/IMP ACT/1.tel. Intel, Inc http://www.intel.com1.aniumRM. Intel Itanium 2 Processor Reference Manual, Document Number: 251110-001, May 2004
67. Nullstone. Nullstone Corporation http://www.nullstone.com
68. POSIX. ISO/IEC JTC1/SC22 DIS 13210: 1996, Information Technology -Requirements and Guidelines for Test Methods Specifications and
69. Test Method Implementation for Measuring Conformance to POSIX Standard.
70. SPEC. Standard Performance Evaluation Corporation http://www.spec.org Sun] Sun Microsystems, Inc - http://www.sun.com
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.