авторефераты диссертаций БЕСПЛАТНАЯ  БИБЛИОТЕКА

АВТОРЕФЕРАТЫ КАНДИДАТСКИХ, ДОКТОРСКИХ ДИССЕРТАЦИЙ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ

Ренат искандерович межпроцедурный анализ и распараллеливание потоковых программ на базе графа исполнений вызовов

Российская Академия Наук Сибирское Отделение Институт систем информатики им. А. П. Ершова

На правах рукописи

УДК 004.432.42 Идрисов Ренат Искандерович МЕЖПРОЦЕДУРНЫЙ АНАЛИЗ И РАСПАРАЛЛЕЛИВАНИЕ ПОТОКОВЫХ ПРОГРАММ НА БАЗЕ ГРАФА ИСПОЛНЕНИЙ ВЫЗОВОВ 05.13.11 – математическое и программное обеспечение вычисли тельных машин, комплексов и компьютерных сетей

АВТОРЕФЕРАТ

диссертации на соискание ученой степени кандидата физико-математических наук

Новосибирск 2010

Работа выполнена в Учреждении Российской академии наук Институте систем информатики им. А.П. Ершова СО РАН Научные руководители: Евстигнеев Владимир Анатольевич доктор физико-математических наук, профессор Касьянов Виктор Николаевич доктор физико-математических наук, профессор

Официальные оппоненты: Легалов Александр Иванович доктор технических наук, профессор Скопин Игорь Николаевич кандидат физико-математических наук, доцент

Ведущая организация: Южный Федеральный Университет (г. Ростов-на-Дону)

Защита состоится 16 июня 2010 года в 15 часов 30 минут на заседании диссертационного совета ДМ003.032.01 при Институте систем инфор матики им. А.П. Ершова Сибирского отделения РАН по адресу:

630090, г. Новосибирск, пр. Акад. Лаврентьева, 6.

С диссертацией можно ознакомиться в читальном зале ИСИ СО РАН (г.Новосибирск,пр.Акад.Лаврентьева,6).

Автореферат разослан 2010 г.

Ученый секретарь Диссертационного совета, к.ф.–м.н Мурзин Ф.А.

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

Актуальность проблемы В данной работе пойдёт речь о статическом анализе программ, а именно о той части, которая отвечает за взаимодействие процедур и функций программы.

Межпроцедурный анализ относится в первую очередь к анализу по тока данных, который поступает при вызове в процедуру и из неё. В рам ках данной работы под межпроцедурным анализом будем понимать ана лиз влияния вызова процедуры на контекст вызова и определение влия ния контекста вызова на исполнение вызываемой процедуры.

Такой вид анализа приобретает особую ценность в распараллели вающих компиляторах. Если не анализировать код вызываемых проце дур, придётся предположить, что все параметры и глобальные перемен ные могут измениться в результате вызова. Это существенно снизит эф фективность результирующего кода, потому что, например, циклы, со держащие вызовы, не будут распараллелены в большинстве случаев. А распараллеливание на сегодняшний день также является неотъемлемой частью оптимизирующего транслятора, поскольку в последнее время уве личение вычислительных мощностей связано уже не с ускорением от дельного, а с добавлением дополнительных вычислителей и созданием различного рода суперкомпьютеров и кластеров.

Оптимизации и работа компилятора вообще заключается в преобра зовании внутреннего представления. Внутренние представления варьи руются от приближенных к языкам высокого уровня до приближенных к уровню машинного кода. Параллелизм наиболее универсально описыва ется при помощи представлениях, основанных на потоке данных. В таких представлениях не требуется тратить дополнительные усилия для анализа зависимостей. Примером могут служить многочисленные проекты, раз вивающие SSA форму. Одним из таких представлений является IR2, рас сматриваемое в данной работе. К такому представлению может быть при ведён даже императивный язык. Известны проекты, где Fortran трансли руется в IF1, представление с аналогичной структурой, но другим набо ром вершин.

Потоковая структура IR2 является наиболее универсальным описа нием параллелизма, что важно для переносимости кода. При решении вычислительных задач, удобнее всего не вдаваться в конкретные детали распараллеливания своей задачи и создавать код, который мог быть ис полнен на системах с различной конфигурацией.

Все перечисленные причины делают анализ и оптимизацию пото ковых структур актуальными.

Цель работы – адаптация известных оптимизаций и распараллели вания для потоковой модели вычислений. Разработка новых алгоритмов анализа и оптимизации.

Методы исследования. В диссертационной работе использовались понятия и методы теории построения компиляторов, теории смешанных вычислений, теории алгоритмов, теории графов, теории схем программ и элементы теории множеств.

Научная новизна.

1. Предложен новый метод анализа значений элементов массивов, который позволяет оптимизировать всюду завершаемые частич ные вычисления.

2. Предложен новый подход к межпроцедурному анализу, осно ванный на графе исполнений вызовов, в рамках которого пред ложены эффективные алгоритмы осуществления анализа.

3. Впервые исследованы параллельные свойства и преобразования потоковых программ в рамках иерархического графового пред ставления IR2.

Практическая ценность.

Практическая часть данной работы описывает реализацию межпро цедурного анализа и распараллеливания в рамках системы функциональ ного программирования (SFP), разрабатываемой в Институте Систем Ин форматики им. А.П. Ершова (ИСИ СО РАН). Основные оптимизирую щие преобразования в SFP производятся на уровне внутреннего потоко вого представления IR2, в которое может быть транслирован даже импе ративный язык. Это внутреннее представление может описывать массивы и циклические конструкции, что не является обычным для внутреннего представления функционального языка программирования.



Разработанные методы реализованы в рамках компилятора Sisal 3.2.

Компилятор Sisal 3.2 является частью системы SFP, разрабатываемой в рамках проекта ПРОГРЕСС. Компилятор будет использоваться другими разработчиками системы, которая ориентирована на решение математи ческих задач на суперкомпьютерах и обучение функциональному про граммированию.

Апробация работы. Основные положения диссертации обсужда лись на следующих конференциях и семинарах:

1.Семинар «Конструирование и оптимизация программ», Новосибирск, ИСИ СО РАН, 2004-2008 г.;

2.конференция-конкурс «Технологии Microsoft в информатике и про граммировании», Новосибирск, 2008 год.

3.XLIV Международная научная студенческая конференция «Студент и научно-технический прогресс», Новосибирск, 2006 г.





4.Четвертая азиатская международная школа-семинар «Проблемы оп тимизации сложных систем» / ИВМиМГ 5.Решетнёвские чтения / Красноярск Публикации. Результаты работы опубликованы в 9 печатных рабо тах, из которых 4 полных статьи и 5 тезисов конференций.

Структура и объем работы Диссертационная работа состоит из введения, трёх глав, заключе ния, списка литературы и двух приложений. Объем диссертации стр. Список литературы содержит 80 наименований. Работа включает рисунков и графиков, полученных в результате расчетов на ЭВМ.

СОДЕРЖАНИЕ РАБОТЫ

Во введении обоснована актуальность проводимых исследований, сформулирована цель диссертационной работы, показана новизна и прак тическая значимость результатов.

В первой главе приведён обзор существующих методов межпроце дурного анализа императивных программ по четырём направлениям: ана лиз совмещений (alias analysis), анализ значений, анализ использования переменных и анализ контекста использования. Также приведено краткое описание системы функционального программирования (SFP) и внутрен них представлений, в рамках которых были внедрены алгоритмы анализа и оптимизаций.

Анализ совмещений выявляет переменные, которые могут в некоторой определённой точке исполнения программы ссылаться на одну и ту же область памяти. Полученная информация помогает, в частности, исклю чить неэквивалентные преобразования программы.

Анализ значений – распространение информации о возможных значе ниях переменной внутрь процедуры, осуществляемое на стадии компиля ции.

Анализ использования переменных направлен на получение для каж дой процедуры множеств модифицируемых и используемых переменных.

Информация об этих множествах востребована оптимизирующими преобразованиями, в частности, на основе этой информации часть внутреннего или внешнего кода процедуры может быть исключена.

Для более точного анализа следует рассматривать компоненты массивов отдельно. В работе рассмотрены точные и неточные алгоритмы описания областей массивов: Регулярные секции (Regular Sections), Дескрипторы доступа к данным (Data Access Descriptors), Регионы (Regions), Образы (Atom Images), Линеаризация (Linearization), Омега тест.

Анализ контекста использования направлен на уточнение оптимизаций путём анализа различных вариантов использования процедуры. Информация о совмещениях, диапазоны изменения переменных и, как следствие, набор возможных оптимизаций зависят от контекста вызова процедуры.

Язык Sisal. Аббревиатура SISAL образована от выражения: Streams and Iteration in a Single Assignment Language. Что буквально означает:

«Язык однократного присваивания с потоками и итерациями». Для функ циональных языков наличие циклических конструкций не характерно, более характерным является использование рекурсии. Наличие в Sisal циклических конструкций связано с ориентацией на научные вычисления.

Ориентация на научные вычисления и наличие неявного параллелизма делают Sisal потенциально привлекательным для решения вычислитель ных задач. Sisal является базовым входным языком системы поддержки параллельного программирования SFP. Основные оптимизации и распа раллеливание производится на уровне back-end транслятора в рамках представления IR2.

Внутреннее представление IR1, используемое в компиляторе языка Sisal, основано на языке IF1 и состоит из множества ориентированных безконтурных графов, соответствующих функциям исходной программы.

Граф IR1 G = (N, P, E, Pin, Pout), где N – множество вершин, P – множест во портов, E PP – множество дуг, Pin P – множество входных пор тов графа G, Pout P – множество выходных портов графа G. Каждой вершине Ni N соответствуют два подмножества портов из P: входные порты Piin P и выходные порты Piout P. Дуга Ei=(P1, P2) E, если для некоторых i и j P1 Piout и P2 Pjin Pout или P1 Pin и P2 Pjin Pout.

Внутреннее представление IR2 также является потоковым представ лением Sisal-программы. Граф IR2 изоморфен графу IR1, но в IR2 дугам сопоставляются переменные, а между вершинами возникает нестрогое отношение порядка. Основные оптимизационные и распараллеливающие преобразования производятся на уровне этого представления. Более фор мально: граф IR2 для функции языка Sisal – это объект (G, VAR,, ), где G – граф IR1, VAR – множество переменных, – отображение E VAR, задающее привязку переменных к дугам графа G, – порядок на NN, задающий последовательность исполнения.

Внутреннее представление IR3 является классическим императивным представлением программы в виде косвенных троек 1.

Во второй главе приведены теоретические результаты данной дис сертационной работы. Внутренние представления языка Sisal рассмотре ны более подробно. Введены понятия непосредственной вложенности, достижимости вершин в IR2, исполнения вызова и графа исполнений вы зовов. Сформулированы алгоритмы преобразования и анализа программ, записанных в виде внутреннего представления IR2.

Определение 3. Составными вершинами графа IR1 будем называть вершины, которые содержат вложенный граф IR1, например Function, Se lect, Loop, Select Case, Select Test, Loop Init, Loop body… Определение 4. Будем называть вершины q1 и q2 непосредственно со   e=(p1, p2) E,где  p1Pout(q1), а p2Pin(q2) или единёнными, если p1Pout(q2), а p2Pin(q1).

Определение 5. Для любой составной вершины n непосредственно вложенными будем называть такие вершины q, для которых  e=(p1, p2) В. А. Серебряков Лекции по конструированию компиляторов // ВЦ РАН — Москва, 1994 — 174 с.

E,  p1Pout(n), p2Pout(q) или   q1,  q2  …  qk    такие,  что  e1=(p1, p2) E,   p1Pout(n), p2Pout(q1), а пары вершин (q1, q2, (q2, q3, …  (qk1, qk, (qk, q  –  непосредственно соединены.

Для анализа значений описаны алгоритмы протягивания значений, протягивания мультизначений, протягивания диапазонов и протягивания мультидиапазонов. Для каждого из алгоритмов доказаны временные ха рактеристики (Теоремы 9, 10, 11 и 12), свойства детерминированности (Теорема 7), эквивалентности исходной программы относительно подста новки найденных значений (Теорема 8).

В главе также сформулирован общий критерий подстановки: подста новку константы можно совершить на стадии компиляции тогда и только тогда, когда может быть однозначно вычислен статический срез по пере менной подстановки. Здесь срез – это подмножество операторов и выра жений исходной программы, которые прямо или косвенно влияют на зна чения, вычисляемые в точке критерия среза, но не обязательно составля ют исполняемую программу.

Для анализа массивов в системе SFP было внедрено новшество, свя занное с тем, что описываются не только области чтения или записи, но, так же, области возможных принимаемых значений для элементов масси ва. Таким образом, анализ массивов становится естественным обобщени ем анализа скалярных величин. Здесь и далее результаты, относящиеся к Sisal, могут быть применены к любому транслируемому в IR2 языку.

Результатом вычисления в языке Sisal может являться «ошибка», это не приводит к завершению вычисления без получения остальных резуль татов. Таким образом, язык Sisal реализует модель всюду завершаемых частичных вычислений. Алгоритмы анализа значений переменных позво ляют существенно оптимизировать работу с такими значениями.

В главе также рассмотрены алгоритмы оптимизации циклических конструкций, удаления «мёртвого» кода и выноса инвариантных значе ний, которые основываются на данных, полученных в результате анализа.

Доказаны временные характеристики алгоритмов (Теоремы 15 и 17).

Далее рассматривается межпроцедурный анализ.

Определение 18. Будем называть функцию F’ «исполнением» функ ции F, если F’ получается из F при конкретизации её входных парамет ров, в соответствии с данными, которые выявляются на стадии статиче ского анализа. А так же если функция F’ тождественна F.

Определение 19. Графом исполнений вызовов будем называть иерар хический граф, в котором операторы вызова исполнений функции соеди нены дугами с исполнениями, которые они вызывают. Исполнения, отно сящиеся к одному фрагменту иерархии, относятся к одной функции ис ходной программы. Каждая функция исходной программы порождает один фрагмент в иерархическом графе исполнений вызовов.

Свойство 1. Граф вызовов является вырожденным случаем графа ис полнений вызовов, в котором каждый фрагмент состоит из единственной вершины.

Свойство 2. Одной исходной программе могут соответствовать не сколько графов исполнений вызовов.

Из определений можно отметить, что особенностью этого графа явля ется его иерархичность. Вершины, относящиеся к функциям исходной программы, содержат вложенные вершины, которые обозначают копии тел функций, создаваемые в процессе анализа (рис. 1).

Рис. 1. Граф исполнений вызовов Наличие копий в таком виде обусловлено тем, что оптимизирующие алгоритмы могут создавать временные копии функции, которые не будут являться отдельными функциями в результирующем коде. В этом случае нам не требуется дополнительно ассоциировать копии с копируемой функцией, поскольку связь указана явным образом, также явно ассоции руется вызываемая копия для каждой из дуг вызова.

На основе этого графа рассматривается межпроцедурный анализ без ограничений на копирование функций и межпроцедурный анализ с огра ничениями на копирование функций, который реализован в рамках сис темы SFP. Доказываются завершимость (Теоремы 19 и 23) и свойства де терминизма (Теоремы 20, 21 и 22) алгоритмов межпроцедурного анализа.

При описании распараллеливания в системе SFP обосновывается воз можность оценки временной сложности программ, записанных в виде графа IR2, при помощи инструмента временных развёрток. Доказываются свойства используемых оптимизирующих алгоритмов, которые не увели чивают время исполнения параллельной программы.

Третья глава посвящена экспериментальным результатам работы Sisal – программ. На данный момент компилятор Sisal, описанный в этой работе существует в виде Source-to-Source транслятора из Sisal 3.2 в C#. В дальнейшем планируется трансляция в язык IL внутреннего представле ния платформы.NET. Вместе с компилятором предоставляются средства для поддержки системы типов языка Sisal в C# и средства для организа ции ввода-вывода. Данные в программу поступают из xml-файла с пара метрами. Аналогичным образом сохраняются результаты работы про граммы.

В рамках данной работы был доработан Back-End транслятор системы SFP языка Sisal. Объём исходного кода Back-End транслятора составлял 575кб, в результате изменений, отражённых в данной работе размер кода увеличился до 882кб. Библиотека поддержки во время исполнения про граммы (Run-Time Library) составляла 14кб исходного кода C# и была увеличена до 50кб.

Трансляцию Sisal-программы можно разбить на следующие части:

1. Трансляция из исходного текста в представление IR Эта часть называется Front-End транслятором, на этой стадии произ водится лексический и семантический анализ текста. Эта стадия была полностью оставлена без изменений и не относится к результатам данной диссертационной работы 2. Трансляция из внутреннего представления IR1 в представле ние IR Трансляция в IR2 была доработана. Добавлена поддержка строковых переменных, переменных типа «запись» и переменных с плавающей запятой двойной точности. Редукции суммы, максимального значе ния.

3. Трансляция из IR2 в граф исполнений вызовов Эта часть была добавлена в рамках данной работы. При трансляции разбираются связи между функциями, которые присутствуют в IR2 в виде символических ссылок.

4. Межпроцедурный анализ и оптимизации Эта часть также была добавлена в компилятор и является основным результатом данной работы. Внутрь межпроцедурного анализа прак тически без изменений были внесены оптимизации лишнего копиро вания и выноса инвариантных значений из циклов.

5. Трансляция из графа исполнений вызовов в IR На этой стадии производится клонирование (создание конкретизиро ванных копий) функций программы и подстановка тел функций на место вызова.

6. Распараллеливание Распараллеливание также изначально отсутствовало в компиляторе Sisal и является полностью результатом работы автора. Сейчас распа раллеливание ориентировано на платформу SMP и тяжеловесные ни ти. Компилятор выбирает наиболее крупные участки кода, которые можно исполнить параллельно на заданном количестве вычислителей.

7. Трансляция из IR2 в IR Эта стадия была доработана не только с целью добавления новых ти пов и языковых конструкций, которые были отмечены на шаге 2, но и специальных конструкций, необходимых для распараллеливания и оптимизаций значений ошибочности. Были добавлены такие конст рукции как ThreadFork, ThreadJoin, введено само понятие функции нити, которая исполняется параллельно с другими функциями нитями. Конструкция UnWarp для получения значения, содержащего свойство ошибочности из переменной, которая изначально его не со держала.

8. Оптимизации IR Здесь были добавлены оптимизации меток в программе с целью по вышения читаемости результирующего кода, так же были доработаны существующие оптимизации удаления лишних присваиваний в виду добавления новых языковых конструкций.

9. Трансляция в C# Добавлена поддержка нитей и ранее не используемых языковых кон струкций, которые были указаны в пункте 2.

Приведены тесты компилятора на некоторых вычислительных задачах, одна из которых называлась smooth. Эта программа являлась фрагментом большой аэродинамической задачи от NASA, реализованной на Sisal 1.3 и транслированной в Sisal 3.2 для тестирования производительности. Задача генерирует и обрабатывает 3-мерные массивы заданного размера. Для про верки корректности работы программ, сгенерированных компилятором, вы ходные данные сохранялись в файл и сравнивались при помощи утилиты fc (file compare) с эталонной версией. Входные данные были получены при помощи генератора псевдослучайных чисел платформы.NET.

Рис. 2. Время выполнения smooth (по y, в секундах) в зависимости от размера обрабатываемых массивов. Здесь ромбом обозначается Sisal без оптимизаций, квадратом – Sisal без межпроцедурных оптимизаций, а треугольником – Sisal с полным набором оптимизаций.

Поскольку, в Sisal каждое значение может иметь тип «ошибка» и за счёт того, что обычный компилятор C#, работая с такой системой типов, не использует оптимизаций проверки ошибочности значений – оптимизиро ванный Sisal код оказывается эффективней. Тесты производились на ПК с процессором Intel Core 2 Duo 3.16GHz на одном ядре, поскольку требова лось сравнить последовательные реализации.

Рис. 3. Расход в Мб для задачи smooth, обозначения трендов анало гичны предыдущему графику Рис. 4. Распараллеливание программы перемножения матриц Распараллеливающая система реализована для архитектуры SMP при по мощи библиотек Threading платформы “.NET”. Следующие тесты произ водились на четырёхпроцессорной вычислительной машине. По оси Х отложено количество вычислителей, заданное при компиляции Sisal программы. После N=4 наблюдается плавный рост времени вычисления, поскольку возникают дополнительные расходы на поддержание большего числа параллельных нитей.

ОСНОВНЫЕ РЕЗУЛЬТАТЫ 1. Рассмотрены свойства и специфические особенности внутренних представлений потоковых языков. Введено понятие непосредст венной вложенности вершин иерархического мультиграфа про граммы и доказана применимость преобразований и анализа гра фов потока данных к отдельным компонентам непосредственной вложенности.

2. Механизм исследования параллельных свойств императивных программ при помощи временных развёрток обобщён на граф IR2.

Доказаны временные характеристики алгоритмов оптимизации и их влияние на параллельные характеристики программы.

3. Предложен и реализован в рамках проекта SFP новый метод меж процедурного анализа, основанный на графе исполнений вызовов.

4. Впервые предложен и реализован анализ значений элементов n мерных массивов, который показал свою эффективность в рамках оптимизации вычислений, результатом которых может быть зна чение «ошибка».

5. Компилятор системы SFP дополнен более развитой средой под держки времени исполнения (RTL), конструкциями, обеспечи вающими распараллеливание для платформы SMP, возможностью ввода и вывода данных посредством XML.

6. Компилятор проверен на реальных вычислительных задачах, кото рые показали эффективность внедрённых преобразований. Резуль таты вычислений сверены с неоптимизированной версией.

Все выносимые на защиту результаты принадлежат автору лично.

ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ 1. Стасенко А.П. Пыжов К. Идрисов Р.И. Компилятор в системе функционального программирования SFP. // Вестник НГУ. Серия:

информационные технологии. Т.1. Вып.2. Новосибирск: 2008.

Стр. 73–90.

2. Идрисов Р. И. Временная развёртка внутреннего представления IR2 языка Sisal 3.1 // Методы и инструменты конструирования про грамм / РАН, Сиб. Отд-е, Ин-т систем информатики. – Новоси бирск, 2007. – С. 31 – 37.

3. Идрисов Р. И. Методы межпроцедурного анализа // Методы и ин струменты конструирования программ / РАН, Сиб. Отд-е, Ин-т сис тем информатики. – Новосибирск, 2007. – С. 38 – 55.

4. Идрисов Р. И. Межпроцедурный анализ в автоматических распа раллеливающих системах // XLIV Междунар. науч. студенческая конф. «Студент и научно-технический прогресс»: Информационные технологии / НГУ – Новосибирск, 2006 – С. 10 – 11.

5. Идрисов Р. И. Russian supercomputer software // Развитие вычисли тельной техники в России и странах бывшего СССР: история и пер спективы / Материалы международной конференции в двух частях.

Часть 2 / Петрозаводский Государственный Университет, 2006 – С.

33.

6. Идрисов Р. И. Протягивание констант в графе IR2 внутреннего представления языка SISAL // Конструирование и оптимизация па раллельных программ / РАН Сиб. Отд-е, Ин-т систем информатики.

– Новосибирск 2008. – С. 83-95.

7. Идрисов Р. И., Пыжов К. А. Распараллеливание и оптимизация на уровне внутреннего представления в компиляторе Sisal 3.1 // Тех нологии Microsoft в теории и практике программирования / Ново сибирск 2008 – С. 128 – 129.

8. Идрисов Р. И., Пыжов К.А. Настоящее и будущее функциональ ных языков программирования на примере языков Sisal и F#. // Чет вертая азиатская международная школа-семинар «Проблемы опти мизации сложных систем» / Труды ИВМиМГ СО РАН Выпуск 8, 2007, Серия: Информатика – С. 194-201.

9. Идрисов Р. И. Межпроцедурные оптимизации «ошибочности» зна чений для функционального языка, ориентированного на научные вычисления // Материалы XIII Международной научной конферен ции, посвящённой 50-летию Сибирского государственного универ ситета имени академика М. Ф. Решетнёва/ Часть 2 – Красноярск 2009 – С. 425- Идрисов Р.И.

МЕЖПРОЦЕДУРНЫЙ АНАЛИЗ И РАСПАРАЛЛЕЛИВАНИЕ ПОТОКОВЫХ ПРОГРАММ НА БАЗЕ ГРАФА ИСПОЛНЕНИЙ ВЫЗОВОВ Автореферат Подписано в печать Объем 1,1 уч.-изд. л.

Формат бумаги 60 90 1/16 Тираж 100 экз.

Отпечатано в ЗАО РИЦ «Прайс-курьер» 630090, г. Новосибирск, пр. Ак. Лаврентьева, 6, тел. 334-22- Заказ №

 

Похожие работы:





 
2013 www.netess.ru - «Бесплатная библиотека авторефератов кандидатских и докторских диссертаций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.