'

Усовершенствование языка и компилятора

Понравилась презентация – покажи это...





Слайд 0

Усовершенствование языка и компилятора Для системы фрагментированного программирования Крупин Сергей ФИТ НГУ 3 курс Руководитель: Перепёлкин Владислав Летняя Школа по параллельному программированию 2010 г.


Слайд 1

Цели и задачи Необходимо было создать удобную среду разработки программ, модифицировав уже существующую. Для лексического и синтаксического анализа использовались утилиты Bison и Lex. программа Компилятор планирование Исполнительная система Lex+yacc


Слайд 2

Старый и новый синтаксис Для описания реальных задач требуется описывать множества фрагментов данных и вычислений df x(100); df y_1(100); df y_2(100); df y_3(100); df y_4(100); cf a = func(out: x); cf b_1 = norm(in x;out:y_1); cf b_2 = norm(in x;out:y_2); cf b_3 = norm(in x;out:y_3); cf b_4 = norm(in x;out:y_4); b_1 < a; b_2 < a; b_3 < a; b_4 < a; const N = 10*10; const M = 2; df x(N); ar[M] df y(N); cf a = func(out:x); cf b = for(i=1..M*M;)norm(in:x; out:y[i-1]); b[i-1] < a (i=1..4;);


Слайд 3

Были добавлены: Константы Разбор выражений из констант и итераторов Массивы Циклические описания фрагментов вычислений Циклическое задание порядка исполнения фрагментов вычислений


Слайд 4

Константы const N = 100; const N = 10*10; const M = 2; df x(N); ar[M] df y(N); cf a = func(out:x); cf b = for(i=1..M*M;)norm(in:x; out:y[i-1]); b[i-1] < a (i=1..4;);


Слайд 5

Разбор выражений из констант и итераторов const N = 10*10; const M = 2; df x(N); ar[M] df y(N); cf a = func(out:x); cf b = for(i=1..M*M;)norm(in:x; out:y[i-1]); b[i-1] < a (i=1..4;);


Слайд 6

Массивы const N = 10*10; const M = 4; df x(N); ar[M] df y(N); cf a = func(out:x); cf b = for(i=1..M;)norm(in:x; out:y[i-1]); b[i-1] < a (i=1..4;);


Слайд 7

Циклические описания фрагментов вычислений const N = 10*10; const M = 4; df x(N); ar[M] df y(N); cf a = func(out:x); cf b = for(i=1..M;)norm(in:x; out:y[i-1]); b[i-1] < a (i=1..4;);


Слайд 8

Циклическое задание порядка исполнения фрагментов вычислений const N = 10*10; const M = 4; df x(N); ar[M] df y(N); cf a = func(out:x); cf b = for(i=1..M;)norm(in:x; out:y[i-1]); b[i-1] < a (i=1..4;);


Слайд 9

Способ реализации I (неэффективный) Был добавлен препроцессор который разворачивал циклы. Довольно неплохой способ за исключением того, что генерировался огромный объем кода. Программа с циклами препроцессор Программа без циклов


Слайд 10

Способ реализации II (эффективный) Были изменены функции препроцессора – теперь он стал только подставлять константы и упрощать по возможности выражения. Циклы передаются в систему в свернутом виде. Программа с константами препроцессор Программа без констант


Слайд 11

Итог Был разработан, протестирован и интегрирован в исходную систему удобный язык для разработки фрагментированных программ.


×

HTML:





Ссылка: