Ответы к экзамену 1.0
Описание файла
PDF-файл из архива "Ответы к экзамену 1.0", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "параллельные системы и параллельные вычисления" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ»ИНСТИТУТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИКАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИОтветы к экзаменуver. 1.0Параллельные системыи параллельные вычисления9 семестрЛектор курса: проф. Кутепов Виталий ПавловичМосква, 2013⁄((()))((()))⋮⋮⋮⋮Шина (магистраль)ВМ1ВМ2ВМ3...Дорогойарбитршины+ВМnК1К2К3ВМ1ВМ2ВМ3...КnВМnК2К1ВМ1ВМ2К3ВМ3...КnВМnКоммутаторВМiЦКУКоммутативный параллелизм – означает, что независимые элементы (операторы,функции, предикаты и т.п.) могут выполняться в произвольном порядке, не меняяобщего результата выполнения программы.if P(x) then f1(x) else f2(x)F(g1,g2,g3)(g1 * g2).eq -> g1 +(g2 * g3).eq -> g2 +(g1 * g3).eq -> g3()(())((( )))()⁄( )( )( )( )( )( )(св )св( )( )( )( )( )( )()(()(||)(||))–()р( )(( ))опоп( ̅о мен̅)о мен〈:{}:{}〉acbd()()()()()()()()()()()()()()()()()()()()()()()()〈〉〈〈〉〈〉〉〈 3 〉( ){→→→→→→}〈〈 3 〉〈〉〉〈〉〈〉beginreal r1, r2, z,real array a, b, c, d [1...100]S: r1 := r2 := z := 0;par beginA: for i := 1 step 1 until n dor1 := r1 + a[i] * b[i];B: for j := 1 step 1 until n dor2 := r2 + c[i] * d[i];endE: z := r1 + r2;output (z);end〈〉()WRITE (<номер КГВых>, <тег>, <список выходов>, <список переменных>)READ (<номер КГВх>, <тег>, <список входов>, <список переменных>)OUT (<номер КГВых>, <тег>, <список выходов>, <список переменных>)CHECK(<номер КГВх>, <тег>, <список входов>, <переменная>)<список выходов>KILL(<список имен уничтожаемых процессов>)<имя модуля>.<номер КГВх>.<имя подпрограммы>.<имя тега>√ void startup(){float data[5] = {5, 20, 40, 0.001, 10}; // a, b, c, eps, x0√int place[5] = {1, 2, 3, 4, 5};out(1, 0, place, data);}void Multiplication1(int tag, float x1, float x2){float data[2];data[0] = x1;data[1] = x1 * exp(x2);int place[2] = {1, 2};out(1, 0, place, data);}void Multiplication2(int tag, float x1, float x2){float data[2];data[0] = x1;data[1] = x1 * pow(x2, 3);int place[2] = {1, 2};out(1, 0, place, data);}void Multiplication3(int tag, float x1, float x2){float data[2];data[0] = x1;data[1] = x1 * sqrt(x2);int place[2] = {1, 2};out(1, 0, place, data);}void Check(int tag, float x1, float x2, float x3, float x4, float x5){float xnew = x1 + x2 - x3;if(fabs(xnew - x1) < x5){float data[1] = {xnew};int place[1] = {1};out(2, 0, place, data);}else{float data[2] = {xnew, x5};int place[2] = {1, 2};out(1, 0, place, data);}}void StartEval(int tag, float x1){float data[1] = {x1};int place[2] = {1};out(1, 0, place, data);}void PrintResult(int tag, float x1){fprint("Корень уравнения равен %f", x1);}√void startup(){float data[5];GenFloat(data[0],GenFloat(data[1],GenFloat(data[2],GenFloat(data[3],GenFloat(data[4],100);100);100);0.001);10);//////////abcepsx0// Сгенерируем новый уникальный тегint tag = GenTag();int place[5] = {1, 2, 3, 4, 5};out(1, tag, place, data);}void GenFloat(float &x, float p){x = (float) rand() / (float) RAND_MAX * p;}void Multiplication1(int tag, float x1, float x2){float data[2];data[0] = x1;data[1] = x1 * exp(x2);int place[2] = {1, 2};out(1, tag, place, data);}void Multiplication2(int tag, float x1, float x2){float data[2];data[0] = x1;data[1] = x1 * pow(x2, 3);int place[2] = {1, 2};out(1, tag, place, data);}void Multiplication3(int tag, float x1, float x2){float data[2];data[0] = x1;data[1] = x1 * sqrt(x2);int place[2] = {1, 2};out(1, tag, place, data);}void CheckCond(int tag, float x1, float x2, float x3, float x4, float x5){float xnew = x1 + x2 - x3;if(fabs(xnew - x1) < x5){float data[1] = {xnew};int place[1] = {1};out(2, tag, place, data);}else{float data[2] = {xnew, x5};int place[2] = {1, 2};out(1, tag, place, data);}}void StartEval(int tag, float x1){float data[1] = {x1};int place[2] = {1};out(1, tag, place, data);}void PrintResult(int tag, float x1){fprint("Корень уравнения (tag %d) равен %f", tag, x1);}(∑) (void startup(){int data[1];data[0] = rand();int place[1] = {1};// N)out(1, 0, place, data);}void Generate(int tag, int x1){int data[1];int place[1] = {1};for(int i = 0; i < x1; i++){data[0] = rand();write(1, 0, place, data);}}void Multiplication(int tag, int x1, int x2){int data[1] = {x1 * x2};int place[1] = {1};out(1, 0, place, data);}void Sum(int tag, int x1, int x2){int place[1] = {1};int data[1] = {x1};for(int i = 1; i < x1; i++){read(1, 0, place, &val);data[0] += val;}out(1, 0, place, data);}void PrintResult(int tag, float x1){fprint("Скалярное произведение равно %d", x1);}()()()i()⇔ (()⇔ (( )⇔())( ( ))( )⇔()()() (()))(( )⇔ {)⇔ (()())( ) если ( ) опре елено и не равно ло ьв противном случае(( )⇔ {)⇔ ((( ) если( ) если()())( ) опре елено( ) опре елено) ( ̅)data ListOfNat {Nat = c_null + Nat.c_succ;ListOfNat = c_nil + (Nat * ListOfNat).c_cons;}data List[‘t] {List= c_nil + (‘t * List[‘t]).c_cons;}// Определение типов данныхdata ListOfNat {Nat = c_null + Nat.c_succ;ListOfNat = c_nil + (Nat * ListOfNat).c_cons;}// Система функциональных уравненийscheme Length {Length = ~c_nil -> 0 + ~c_cons -> (~c_cons.[2].Length * 1).add;}// Описание выполняемой программыapplicationlist = (c_null.c_succ * (c_nil * c_null).c_cons).c_cons;% Length(list)( )( )( ) ( )ср ()( )( )( ( ))|( )|( ( ))( )( )( )( ( )( )( ))( )( )(( ))( )( ( )( ))( )( )( )( ( )( ))( )( ( )( )( )(()( )( ( )( )))(и{и)и}( )(){{{ ( )({ ( )) ( ))( )(}}( )}}(( )) (( )))( )…()( )(( )( )()){( )})( )) ( ))) (((ср(((ср))((((ср))))|((ср)() (( ){()( )|(ср)})ср) (()((( ))()|) – условие( )( )( )(1.2.3.( )( )( ){ ( ) ( )})( ) ( )( ( )}{())( ( )( (( )( )))__( )( )(( )))( ){ ( )((( р)((){}()}{ ( )}))( ){ ( )( )( ){ ( )}закл чительное состояние у ем считать( ()())( ()())((Пример 2)())( )()( )()()()Выво ( )()()(( ))()( ) ( )( )П : ВанныеВыанныеPf1f2ifPPthenf1elsef2f2()()()()() ·( )·()()·()()(())····∑ ∫( )( )( )( )( )( )( )( )– регулирование фронта работ таким образом, чтобыминимизировать возможные простои компонент ВС из-за отсутствия необходимогокол-ва процессов, а также определение порядка (приоритета) назначенияпроцессов на выполнение.Регулирование фронта работ осуществляется путем изменения зернистостираспараллеливания.
В ГСПП: крупноблочный параллелизм – на уровне модулей,мелкозернистый – на уровне нитевого распараллеливания программ модулей. ВФПТЛ: более тонкие механизмы дифференциации по сложности в соответствии стем, порождены они элементарной функцией, рекурсивной функцией, функцией,задаваемой посредством системы взаимно рекурсивных определений и др. Другойважный механизм регулирования фронта работ – допускать/запрещатьупреждающие вычисления.2.Управлениезагруженностью.( )( )∑( )( )( )( )( )( )( )( )()О ( )ОК( ).