У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


Інститут менеджменту та економіки “Галицька Академія”

“Паралельні та розподілені обчислення”

Тема роботи: Методи розпаралелення лінійних та циклічних алгоритмів.

Мета роботи: Освоєння принципів та отримання навиків по розпаралеленню послідовних лінійних та циклічних алгоритмів.

Завдання для виконання роботи

Побудувати блок-схему та написати програму (засобами послідовного програмування), орієнтовану на виконання на чотирьох процесорах, яка виконує:

Обчислення суми двох векторів А={a1, a2,… a100} та B={b1, b2,… b100}, результат якої множиться на матрицю С=||сij||, тобто D=(A+B)*C. Дані векторів А, B, C відповідно до табл. 1.1.

Множення матриці M=||mij||, де , на обчислений транспонований вектор D із першого пункту завдання.

2

#include <conio.h>

#include <iostream.h>

#include <math.h>

#include <stdlib.h>

void main(void)

{

int i,j,k;

float a[100],b[100],ab[100],c[100][100],d[100],m[100][100],r[100];

for(i=1;i<=100;i++)

{

a[i]=cos(3.14/60);

b[i]=sin(3.14/60);

}

for(i=1;i<=100;i++)

{

for(j=1;j<=100;j++)

{

c[i-1][j-1]=cos(2*3.14/sin(i+j));

m[i-1][j-1]=sin(2*3.14/sin(i+j));

}

}

for(i=0;i<=24;i++)

{

ab[i]=a[i]+b[i];

}

for(i=25;i<=49;i++)

{

ab[i]=a[i]+b[i];

}

for(i=50;i<=74;i++)

{

ab[i]=a[i]+b[i];

}

for(i=75;i<=99;i++)

{

ab[i]=a[i]+b[i];

}

for(i=0;i<=99;i++)

{

if((i<=10)||(i>=90))

cout<<"a "<<i<<" "<<a[i]<<'\t'<<"b "<<i<<" "<<b[i]<<'\t'<<"ab "<<i<<" "<<ab[i]<<'\n';

}

getch();

for(i=0;i<=24;i++)

{

d[i]=0;

for(j=0;j<=99;j++)

{

d[i]+=ab[j]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"d "<<i<<" "<<d[i]<<'\n';

}

for(i=25;i<=49;i++)

{

d[i]=0;

for(j=0;j<=99;j++)

{

d[i]+=ab[j]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"d "<<i<<" "<<d[i]<<'\n';

}

for(i=50;i<=74;i++)

{

d[i]=0;

for(j=0;j<=99;j++)

{

d[i]+=ab[j]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"d "<<i<<" "<<d[i]<<'\n';

}

for(i=75;i<=99;i++)

{

d[i]=0;

for(j=0;j<=99;j++)

{

d[i]+=ab[j]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"d "<<i<<" "<<d[i]<<'\n';

}

getch();

for(i=0;i<=24;i++)

{

r[i]=0;

for(j=0,k=99;j<=99,k>=0;j++,k--)

{

r[i]+=d[k]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"r "<<i<<" "<<r[i]<<'\n';

}

for(i=25;i<=49;i++)

{

r[i]=0;

for(j=0,k=99;j<=99,k>=0;j++,k--)

{

r[i]+=d[k]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"r "<<i<<" "<<r[i]<<'\n';

}

for(i=50;i<=74;i++)

{

r[i]=0;

for(j=0,k=99;j<=99,k>=0;j++,k--)

{

r[i]+=d[k]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"r "<<i<<" "<<r[i]<<'\n';

}

for(i=75;i<=99;i++)

{

r[i]=0;

for(j=0,k=99;j<=99,k>=0;j++,k--)

{

r[i]+=d[k]*c[i][j];

}

if((i<=10)||(i>=90))

cout<<"r "<<i<<" "<<r[i]<<'\n';

}

getch();

}

a 0 0.0523094 b 0 9.99172e-38 ab 0 0.0523094

a 1 0.998631 b 1 0.0523094 ab 1 1.05094

a 2 0.998631 b 2 0.0523094 ab 2 1.05094

a 3 0.998631 b 3 0.0523094 ab 3 1.05094

a 4 0.998631 b 4 0.0523094 ab 4 1.05094

a 5 0.998631 b 5 0.0523094 ab 5 1.05094

a 6 0.998631 b 6 0.0523094 ab 6 1.05094

a 7 0.998631 b 7 0.0523094 ab 7 1.05094

a 8 0.998631 b 8 0.0523094 ab 8 1.05094

a 9 0.998631 b 9 0.0523094 ab 9 1.05094

a 10 0.998631 b 10 0.0523094 ab 10 1.05094

a 90 0.998631 b 90 0.0523094 ab 90 1.05094

a 91 0.998631 b 91 0.0523094 ab 91 1.05094

a 92 0.998631 b 92 0.0523094 ab 92 1.05094

a 93 0.998631 b 93 0.0523094 ab 93 1.05094

a 94 0.998631 b 94 0.0523094 ab 94 1.05094

a 95 0.998631 b 95 0.0523094 ab 95 1.05094

a 96 0.998631 b 96 0.0523094 ab 96 1.05094

a 97 0.998631 b 97 0.0523094 ab 97 1.05094

a 98 0.998631 b 98 0.0523094 ab 98 1.05094

a 99 0.998631 b 99 0.0523094 ab 99 1.05094

d 0 18.4343

d 1 18.5751

d 2 18.1257

d 3 18.0041

d 4 19.87

d 5 20.1649

d 6 18.3362

d 7 20.1005

d 8 19.7993

d 9 17.8902

d 10 17.773

d 90 33.0111

d 91 32.5032

d 92 32.6065

d 93 32.6012

d 94 30.6685

d 95 32.254

d 96 32.2927

d 97 30.3188

d 98 29.9838

d 99 30.3375

r 0 462.434

r 1 419.55

r 2 415.115

r 3 440.784

r 4 409.884

r 5 440.974

r 6 480.705

r 7 431.844

r 8 476.978

r 9 458.476

r 10 418.826

r 90 784.097

r 91 801.696

r 92 774.566

r 93 751.677

r 94 778.977

r 95 746.159

r 96 779.603

r 97 773.957

r 98 741.819

r 99 734.959

Висновок: на цій лабораторній роботі ми розділяли цикли, чим ніби то розпаралелювали програму