Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемwww.ssd.sscc.ru
1 Усовершенствование языка и компилятора Для системы фрагментированного программирования Крупин Сергей ФИТ НГУ 3 курс Руководитель: Перепёлкин Владислав Летняя Школа по параллельному программированию 2010 г.
2 Цели и задачи Необходимо было создать удобную среду разработки программ, модифицировав уже существующую. Для лексического и синтаксического анализа использовались утилиты Bison и Lex. программаКомпиляторпланирование Исполнительная система Lex+yacc
3 Старый и новый синтаксис Для описания реальных задач требуется описывать множества фрагментов данных и вычислений 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;);
4 Были добавлены: Константы Разбор выражений из констант и итераторов Массивы Циклические описания фрагментов вычислений Циклическое задание порядка исполнения фрагментов вычислений
5 Константы 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;);
6 Разбор выражений из констант и итераторов 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;);
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 Циклическое задание порядка исполнения фрагментов вычислений 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;);
10 Способ реализации I (неэффективный) Был добавлен препроцессор который разворачивал циклы. Довольно неплохой способ за исключением того, что генерировался огромный объем кода. Программа с циклами препроцессор Программа без циклов
11 Способ реализации II (эффективный) Были изменены функции препроцессора – теперь он стал только подставлять константы и упрощать по возможности выражения. Циклы передаются в систему в свернутом виде. Программа с константами препроцессор Программа без констант
12 Итог Был разработан, протестирован и интегрирован в исходную систему удобный язык для разработки фрагментированных программ.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.