Разработка лабораторного практикума по курсу "Методы параллельной обработки"

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 17.06.2013
Размер файла 3,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

DecimalSeparator = '. ';

LineSeries5->AddXY (StrToFloat (CSpinEdit8->Text),StrToFloat (Memo411->Lines->Text));

LineSeries6->AddXY (StrToFloat (CSpinEdit8->Text),StrToFloat (Memo412->Lines->Text));

LineSeries11->AddXY (StrToFloat (CSpinEdit11->Text),StrToFloat (Memo412->Lines->Text));

LineSeries12->AddXY (StrToFloat (CSpinEdit11->Text),StrToFloat (Memo411->Lines->Text));

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button11Click (TObject *Sender)

{

LineSeries1->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button12Click (TObject *Sender)

{

LineSeries2->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button19Click (TObject *Sender)

{

LineSeries10->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button20Click (TObject *Sender)

{

LineSeries9->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button13Click (TObject *Sender)

{

LineSeries3->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button17Click (TObject *Sender)

{

LineSeries4->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button14Click (TObject *Sender)

{

LineSeries8->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button18Click (TObject *Sender)

{

LineSeries7->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button15Click (TObject *Sender)

{

LineSeries5->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button16Click (TObject *Sender)

{

LineSeries6->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button21Click (TObject *Sender)

{

LineSeries11->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button22Click (TObject *Sender)

{

LineSeries12->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit1KeyPress (TObject *Sender, char &Key)

{

Timer1->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit2KeyPress (TObject *Sender, char &Key)

{

Timer1->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit3KeyPress (TObject *Sender, char &Key)

{

Timer2->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit4KeyPress (TObject *Sender, char &Key)

{

Timer2->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit10KeyPress (TObject *Sender, char &Key)

{

Timer2->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit6KeyPress (TObject *Sender, char &Key)

{

Timer3->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit5KeyPress (TObject *Sender, char &Key)

{

Timer3->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit9KeyPress (TObject *Sender, char &Key)

{

Timer3->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit7KeyPress (TObject *Sender, char &Key)

{

Timer4->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit8KeyPress (TObject *Sender, char &Key)

{

Timer4->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit11KeyPress (TObject *Sender, char &Key)

{

Timer4->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit1MouseDown (TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

Timer1->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit2MouseDown (TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

Timer1->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit2Change (TObject *Sender)

{

Timer1->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit1Change (TObject *Sender)

{

Timer1->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit3Change (TObject *Sender)

{

Timer2->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit4Change (TObject *Sender)

{

Timer2->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit10Change (TObject *Sender)

{

Timer2->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit6Change (TObject *Sender)

{

Timer3->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit5Change (TObject *Sender)

{

Timer3->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit9Change (TObject *Sender)

{

Timer3->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit7Change (TObject *Sender)

{

Timer4->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit8Change (TObject *Sender)

{

Timer4->Enabled=false;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CSpinEdit11Change (TObject *Sender)

{

Timer4->Enabled=false;

}

// ---------------------------------------------------------------------------

Модуль Unit2. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit2. h"

#include "Unit1. h"

#include "Unit8. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

#define logg Form1->StringGrid1->RowCount++; Form1->StringGrid1->Cols [0] - >Add (Date (). DateString ()); Form1->StringGrid1->Cols [1] - >Add

TAuth *Auth;

AnsiString Accouting;

// ---------------------------------------------------------------------------

__fastcall TAuth:: TAuth (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TAuth:: FormClose (TObject *Sender, TCloseAction &Action)

{

if (Form1->ADOQuery0->IsEmpty ()) // Если таблица пустая

Application->Terminate (); // Закрываем программу

}

// ---------------------------------------------------------------------------

void __fastcall TAuth:: Edit1Click (TObject *Sender)

{

Edit1->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TAuth:: Edit2Click (TObject *Sender)

{

Edit2->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TAuth:: BitBtn1Click (TObject *Sender)

{

Accouting=Edit1->Text;

Form1->ADOQuery0->Close ();

Form1->ADOQuery0->SQL->Clear ();

Form1->ADOQuery0->SQL->Add ("select * from auth where login='"+Accouting+"'");

Form1->ADOQuery0->Open ();

Form1->ADOQuery0->First ();

if (Form1->ADOQuery0->IsEmpty ())

MessageBox (0,"Неправильный логин/пароль!","Ошибка авторизации", MB_OK + MB_ICONERROR);

else

if ( (Form1->ADOQuery0->FieldByName ("superuser") - >AsString=="True") && (Edit2->Text==Form1->ADOQuery0->FieldByName ("PassWord") - >AsString))

{

Form1->PageControl1->ActivePageIndex=0;

Form1->TabSheet2->TabVisible=false;

Form1->TabSheet1->TabVisible=true;

logg ("Пользователь 'Admin' зашёл в систему");

Form1->Server1->Open ();

Close ();

}

else if (Edit2->Text==Form1->ADOQuery0->FieldByName ("PassWord") - >AsString)

{

Close ();

Form1->Client1->Open ();

Form1->Client1->Socket->SendText ("Пользователь "+Accouting+" зашёл в систему");

Form1->PageControl1->ActivePageIndex=1;

Form1->TabSheet1->TabVisible=false;

Form1->TabSheet2->TabVisible=true;

Form1->TabSheet2->Caption=Form1->ADOQuery0->FieldByName ("Login") - >AsString;

Test->ShowModal ();

}

else

{

MessageBox (0,"Неправильный логин/пароль!","Ошибка авторизации", MB_OK + MB_ICONERROR);

}

Edit2->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TAuth:: Edit2KeyDown (TObject *Sender, WORD &Key,

TShiftState Shift)

{

if (Key==VK_RETURN) BitBtn1->Click ();

}

// ---------------------------------------------------------------------------

void __fastcall TAuth:: Edit2KeyPress (TObject *Sender, char &Key)

{

if (Key == VK_RETURN) {Key = 0; }

}

// ---------------------------------------------------------------------------

Модуль Unit3. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit3. h"

#include "Unit1. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

#define logg Form1->StringGrid1->RowCount++; Form1->StringGrid1->Cols [0] - >Add (Date (). DateString ()); Form1->StringGrid1->Cols [1] - >Add

TUser *User;

// ---------------------------------------------------------------------------

__fastcall TUser:: TUser (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TUser:: FormShow (TObject *Sender)

{

ComboBox1->Clear ();

Form1->ADOQuery0->Close ();

Form1->ADOQuery0->SQL->Clear ();

Form1->ADOQuery0->SQL->Add ("select * from variant");

Form1->ADOQuery0->Open ();

for (int i=0; i<Form1->ADOQuery0->RecordCount; i++)

{

ComboBox1->Items->Add (Form1->ADOQuery0->FieldByName ("nomervariant") - >AsString);

Form1->ADOQuery0->Next ();

}

}

// ---------------------------------------------------------------------------

void __fastcall TUser:: BitBtn1Click (TObject *Sender)

{

for (int i=0; i<Form1->ADOQuery1->RecordCount; i++)

{

if (Form1->ADOQuery1->FieldByName ("login") - >AsString==Edit1->Text)

{ (MessageBox (0,"Пользователь с таким именем уже существует!","Ошибка!", MB_OK + MB_ICONERROR)); Edit1->SetFocus (); Abort (); }

Form1->ADOQuery1->Next ();

}

if (ComboBox1->Text=="")

{ (MessageBox (0,"Выберите номер варианта!","Ошибка!", MB_OK + MB_ICONERROR)); ComboBox1->SetFocus (); Abort (); }

Form1->ADOQuery0->Close ();

Form1->ADOQuery0->SQL->Clear ();

Form1->ADOQuery0->SQL->Add ("insert into auth ([login], [password], variant) values ('"+Edit1->Text+"','"+Edit2->Text+"','"+ComboBox1->Text+"')");

Form1->ADOQuery0->ExecSQL ();

logg ("Пользователь 'Admin' добавил участника '"+Edit1->Text+"'");

Close ();

}

// ---------------------------------------------------------------------------

Модуль Unit4. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit4. h"

#include "Unit1. h"

#include "Unit3. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TReUser *ReUser;

String temp;

// ---------------------------------------------------------------------------

__fastcall TReUser:: TReUser (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TReUser:: FormShow (TObject *Sender)

{

ComboBox1->Clear ();

Form1->ADOQuery0->Close ();

Form1->ADOQuery0->SQL->Clear ();

Form1->ADOQuery0->SQL->Add ("select * from variant");

Form1->ADOQuery0->Open ();

for (int i=0; i<Form1->ADOQuery0->RecordCount; i++)

{

ComboBox1->Items->Add (Form1->ADOQuery0->FieldByName ("nomervariant") - >AsString);

Form1->ADOQuery0->Next ();

}

Edit1->Text=Form1->ADOQuery1->FieldByName ("Login") - >AsString;

Edit2->Text=Form1->ADOQuery1->FieldByName ("PassWord") - >AsString;

ComboBox1->Text=Form1->ADOQuery1->FieldByName ("Variant") - >AsString;

temp=Form1->ADOQuery1->FieldByName ("id") - >AsString;

}

// ---------------------------------------------------------------------------

void __fastcall TReUser:: BitBtn2Click (TObject *Sender)

{

if ( (MessageBox (0,"Удалить запись?","Удалить?", MB_YESNO + MB_ICONWARNING)) ==ID_YES)

{

Form1->ADOQuery0->Close ();

Form1->ADOQuery0->SQL->Clear ();

Form1->ADOQuery0->SQL->Text="delete from auth where id=" + temp;

Form1->ADOQuery0->ExecSQL ();

Close ();

}

}

// ---------------------------------------------------------------------------

void __fastcall TReUser:: BitBtn1Click (TObject *Sender)

{

Form1->ADOQuery0->Close ();

Form1->ADOQuery0->SQL->Clear ();

Form1->ADOQuery0->SQL->Text="update auth set login='"+Edit1->Text+"', [password] ='"+Edit2->Text+"', variant='"+ComboBox1->Text+"' where id="+temp;

Form1->ADOQuery0->ExecSQL ();

Close ();

}

// ---------------------------------------------------------------------------

Модуль Unit5. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit5. h"

#include "Unit1. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TVarianty *Varianty;

// ---------------------------------------------------------------------------

__fastcall TVarianty:: TVarianty (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TVarianty:: Button1Click (TObject *Sender)

{

if (Form1->OpenDialog1->Execute ()) CheckBox1->Visible=true;

}

// ---------------------------------------------------------------------------

void __fastcall TVarianty:: Edit2Click (TObject *Sender)

{

Edit2->Clear (); // Очищаем Поля ввода

}

// ---------------------------------------------------------------------------

void __fastcall TVarianty:: Edit3Click (TObject *Sender)

{

Edit3->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TVarianty:: Edit1Click (TObject *Sender)

{

Edit1->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TVarianty:: BitBtn1Click (TObject *Sender)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Text="insert into variant (namevariant, filepath, perpot, perraz) values ('"+Edit1->Text+"','"+Form1->OpenDialog1->FileName+"','"+Edit2->Text+"','"+Edit3->Text+"')";;

ADOQuery1->ExecSQL ();

Close ();

CheckBox1->Visible=false;

}

// ---------------------------------------------------------------------------

Модуль Unit6. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit6. h"

#include "Unit1. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TVopros *Vopros;

// ---------------------------------------------------------------------------

__fastcall TVopros:: TVopros (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TVopros:: CreateVopros (String &w)

{

if (Edit1->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit1->Text+"','"+BoolToStr (CheckBox11->Checked) +"')");

ADOQuery1->ExecSQL ();

}

if (Edit2->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit2->Text+"','"+BoolToStr (CheckBox22->Checked) +"')");

ADOQuery1->ExecSQL ();

}

if (Edit3->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit3->Text+"','"+BoolToStr (CheckBox33->Checked) +"')");

ADOQuery1->ExecSQL ();

}

if (Edit4->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit4->Text+"','"+BoolToStr (CheckBox44->Checked) +"')");

ADOQuery1->ExecSQL ();

}

if (Edit5->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit5->Text+"','"+BoolToStr (CheckBox55->Checked) +"')");

ADOQuery1->ExecSQL ();

}

if (Edit6->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit6->Text+"','"+BoolToStr (CheckBox66->Checked) +"')");

ADOQuery1->ExecSQL ();

}

if (Edit7->Visible==true)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('"+w+"','"+Memo1->Text+"','"+Edit7->Text+"','"+BoolToStr (CheckBox77->Checked) +"')");

ADOQuery1->ExecSQL ();

}

}

void __fastcall TVopros:: BitBtn1Click (TObject *Sender)

{

if (Form1->PageControl2->ActivePageIndex==0)

CreateVopros ("MPI");

else if (Form1->PageControl2->ActivePageIndex==1)

CreateVopros ("OpenMP");

else if (Form1->PageControl2->ActivePageIndex==2)

CreateVopros ("Posix Threads");

Close ();

}

// ---------------------------------------------------------------------------

void __fastcall TVopros:: BitBtn2Click (TObject *Sender)

{

if (CheckBox1->Checked) {CheckBox1->Visible=false; Edit1->Visible=false; CheckBox11->Visible=false; }

if (CheckBox2->Checked) {CheckBox2->Visible=false; Edit2->Visible=false; CheckBox22->Visible=false; }

if (CheckBox3->Checked) {CheckBox3->Visible=false; Edit3->Visible=false; CheckBox33->Visible=false; }

if (CheckBox4->Checked) {CheckBox4->Visible=false; Edit4->Visible=false; CheckBox44->Visible=false; }

if (CheckBox5->Checked) {CheckBox5->Visible=false; Edit5->Visible=false; CheckBox55->Visible=false; }

if (CheckBox6->Checked) {CheckBox6->Visible=false; Edit6->Visible=false; CheckBox66->Visible=false; }

if (CheckBox7->Checked) {CheckBox7->Visible=false; Edit7->Visible=false; CheckBox77->Visible=false; }

}

// ---------------------------------------------------------------------------

void __fastcall TVopros:: BitBtn3Click (TObject *Sender)

{

if (CheckBox1->Visible==false) {CheckBox1->Visible=true; Edit1->Visible=true; CheckBox11->Visible=true; Abort (); }

if (CheckBox2->Visible==false) {CheckBox2->Visible=true; Edit2->Visible=true; CheckBox22->Visible=true; Abort (); }

if (CheckBox3->Visible==false) {CheckBox3->Visible=true; Edit3->Visible=true; CheckBox33->Visible=true; Abort (); }

if (CheckBox4->Visible==false) {CheckBox4->Visible=true; Edit4->Visible=true; CheckBox44->Visible=true; Abort (); }

if (CheckBox5->Visible==false) {CheckBox5->Visible=true; Edit5->Visible=true; CheckBox55->Visible=true; Abort (); }

if (CheckBox6->Visible==false) {CheckBox6->Visible=true; Edit6->Visible=true; CheckBox66->Visible=true; Abort (); }

if (CheckBox7->Visible==false) {CheckBox7->Visible=true; Edit7->Visible=true; CheckBox77->Visible=true; Abort (); }

}

// ---------------------------------------------------------------------------

Модуль Unit7. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit7. h"

#include "Unit1. h"

String temp1, filepath;

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TReVarianty *ReVarianty;

// ---------------------------------------------------------------------------

__fastcall TReVarianty:: TReVarianty (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TReVarianty:: FormShow (TObject *Sender)

{

Edit1->Text=Form1->ADOQuery3->FieldByName ("namevariant") - >AsString;

Edit2->Text=Form1->ADOQuery3->FieldByName ("perpot") - >AsString;

Edit3->Text=Form1->ADOQuery3->FieldByName ("perraz") - >AsString;

temp1=Form1->ADOQuery3->FieldByName ("nomervariant") - >AsString;

filepath=Form1->ADOQuery3->FieldByName ("filepath") - >AsString;

if (FileExists (filepath)) {CheckBox1->Visible=true; Button2->Visible=true; } else {CheckBox1->Visible=false; Button2->Visible=false; }

}

// ---------------------------------------------------------------------------

void __fastcall TReVarianty:: Button2Click (TObject *Sender)

{

ShellExecute (Handle, "open", filepath. c_str (), 0, 0, SW_SHOWNORMAL); // Открываем файл на жестком диске

}

// ---------------------------------------------------------------------------

void __fastcall TReVarianty:: BitBtn1Click (TObject *Sender)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Text="update variant set namevariant='"+Edit1->Text+"', filepath='"+filepath+"', perpot='"+Edit2->Text+"', perraz='"+Edit3->Text+"' where nomervariant="+temp1;

ADOQuery1->ExecSQL ();

Close ();

}

// ---------------------------------------------------------------------------

void __fastcall TReVarianty:: Button1Click (TObject *Sender)

{

if (Form1->OpenDialog1->Execute ()) filepath=Form1->OpenDialog1->FileName;

if (FileExists (filepath)) {CheckBox1->Visible=true; Button2->Visible=true; } else {CheckBox1->Visible=false; Button2->Visible=false; }

}

// ---------------------------------------------------------------------------

Модуль Unit8. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit8. h"

#include "Unit1. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TTest *Test;

const int size2 = 10;

AnsiString test [size2];

int count;

int n;

int sum, sun, nus;

TCheckBox *CheckBox [10];

extern AnsiString Accouting;

// ---------------------------------------------------------------------------

__fastcall TTest:: TTest (TComponent* Owner)

: TForm (Owner)

{

}

int mas [10] = {0};

int mas_count = 0;

// ---------------------------------------------------------------------------

void mas_clear ()

{

for (int i = 0; i < count; i++)

mas [i] = 0;

mas_count = 0;

}

// ---------------------------------------------------------------------------

void __fastcall TTest:: FormClose (TObject *Sender, TCloseAction &Action)

{

if (BitBtn3->Visible! =true)

Application->Terminate ();

}

void __fastcall TTest:: CreateTest (int &q)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Text="select tekst, var, bool from vopros where tekst='"+test [q] +"'";

ADOQuery1->Open ();

count=ADOQuery1->RecordCount;

Memo1->Lines->Text=test [q];

TabSheet1->Caption="Вопрос "+IntToStr (q+1) +" из 9";

for (int i=0; i<count; i++)

{

CheckBox [i] = new TCheckBox (this->TabSheet1);

CheckBox [i] - >Parent = this->TabSheet1;

CheckBox [i] - >Name = "CheckBox"+AnsiString (i);

CheckBox [i] - >Height = 16;

CheckBox [i] - >Width = 150;

CheckBox [i] - >Left = 10;

CheckBox [i] - >Top = i* CheckBox [i] - >Height*1.5+65;

CheckBox [i] - >Caption = ADOQuery1->FieldByName ("var") - >AsString;

ADOQuery1->Next ();

}

}

void __fastcall TTest:: ValidTest ()

{

AnsiString box;

ADOQuery1->First ();

count=ADOQuery1->RecordCount;

sun=0;

for (int i=0; i<count; i++)

{

if (CheckBox [i] - >Checked==true) box="True"; else box="False";

if (ADOQuery1->FieldByName ("bool") - >AsString==box) sun++;

ADOQuery1->Next ();

}

nus=count;

if (sun==nus) sum++;

}

// ---------------------------------------------------------------------------

void __fastcall TTest:: FormShow (TObject *Sender)

{

int a=0;

int z=0;

const int size = 3; // Задаём размерность массива

const AnsiString typ [size] = { "MPI", "OpenMP", "Posix Threads" };

for (int j=0; j<3; j++)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("SELECT distinct (Select Sum (1) From vopros p Where kat='"+typ [j] +"' and p. id<=p1. id) as num, p1. tekst FROM vopros AS p1 where kat='"+typ [j] +"' ORDER BY p1. tekst");

ADOQuery1->Open ();

count=ADOQuery1->RecordCount;

for (int i=0; i<3; i++)

{

randomize ();

for (;;)

{

bool b = false;

a = random (count); // Вычисление случайного значения

for (int i = 0; i < count; i++)

if (a == mas [i])

b = true;

if (! b)

break;

}

mas [mas_count] = a;

mas_count++;

if (mas_count > count - 2)

mas_clear ();

TLocateOptions Options;

Options << loPartialKey,loCaseInsensitive; // Опции поиска

ADOQuery1->Locate ("num",a,Options); // Переход на строку с нужными параметрами

test [z] =ADOQuery1->FieldByName ("tekst") - >AsString;

z++;

}

}

CreateTest (0); // Создаём тест

n=1;

sum=0;

nus=0;

PageControl1->ActivePageIndex=0;

TabSheet1->TabVisible=true;

TabSheet2->TabVisible=false;

}

// ---------------------------------------------------------------------------

void __fastcall TTest:: BitBtn1Click (TObject *Sender)

{

if (n<10) ValidTest (); // Проверяем правильность ответов на тест

if (n<9)

{

for (int i=0; i<count; i++)

{

delete CheckBox [i];

}

CreateTest (n);

n++;

}

else

{

PageControl1->ActivePageIndex=1;

TabSheet1->TabVisible=false;

TabSheet2->TabVisible=true;

Label2->Caption="Итоговый балл: "+IntToStr (sum) +" \nНе хватает баллов для допуска к работе!";

if (sum>=6) {BitBtn3->Visible=true; Label2->Caption="Итоговый балл: "+IntToStr (sum) +" \nВы допущены к работе!"; } else BitBtn3->Visible=false;

Form1->Client1->Socket->SendText ("Пользователь "+Accouting+" набрал "+IntToStr (sum) +" баллов");

}

}

// ---------------------------------------------------------------------------

void __fastcall TTest:: BitBtn3Click (TObject *Sender)

{

Close ();

}

// ---------------------------------------------------------------------------

void __fastcall TTest:: BitBtn2Click (TObject *Sender)

{

for (int i=0; i<count; i++)

{

delete CheckBox [i]; // Удаляем созданные экземпляры класса TCheckBox

}

FormShow (Sender); // Показываем форму

}

// ---------------------------------------------------------------------------

void __fastcall TTest:: Button1Click (TObject *Sender)

{

ShellExecute (0,0,Application->ExeName. c_str (),0,0,SW_SHOW); // Запускаем новую копию

Close (); // Закрываем старую

}

// ---------------------------------------------------------------------------

Модуль Unit9. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit9. h"

#include "Unit1. h"

#include "Unit11. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TReVopros *ReVopros;

TCheckBox *CheckBox [20];

TEdit *Edit [10];

int count;

AnsiString tekst, vari;

AnsiString vvv [10];

// ---------------------------------------------------------------------------

__fastcall TReVopros:: TReVopros (TComponent* Owner)

: TForm (Owner)

{

}

void __fastcall TReVopros:: Sooow (TADOQuery *A)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Text="select * from vopros where tekst='"+A->FieldByName ("tekst") - >AsString+"'";

ADOQuery1->Open ();

Memo1->Lines->Text=ADOQuery1->FieldByName ("tekst") - >AsString;

tekst=ADOQuery1->FieldByName ("tekst") - >AsString;

vari=ADOQuery1->FieldByName ("id") - >AsString;

count=ADOQuery1->RecordCount;

for (int i=0; i<count; i++)

{

vvv [i] =ADOQuery1->FieldByName ("var") - >AsString;

CheckBox [i] = new TCheckBox (this->GroupBox1);

CheckBox [i] - >Parent = this->GroupBox1;

CheckBox [i] - >Name = "CheckBox"+AnsiString (i);

CheckBox [i] - >Height = 16;

CheckBox [i] - >Width = 16;

CheckBox [i] - >Left = 10;

CheckBox [i] - >Top = i* CheckBox [i] - >Height*1.5+100;

CheckBox [i] - >Caption = "";

CheckBox [i] - >Checked=true;

Edit [i] = new TEdit (this->GroupBox1);

Edit [i] - >Parent = this->GroupBox1;

Edit [i] - >Name = "Edit"+AnsiString (i);

Edit [i] - >Height = 16;

Edit [i] - >Width = 280;

Edit [i] - >Left = 30;

Edit [i] - >Top = i* Edit [i] - >Height*1.5+100;

Edit [i] - >Text = ADOQuery1->FieldByName ("var") - >AsString;

CheckBox [i+10] = new TCheckBox (this->GroupBox1);

CheckBox [i+10] - >Parent = this->GroupBox1;

CheckBox [i+10] - >Name = "CheckBox"+AnsiString (i+10);

CheckBox [i+10] - >Height = 16;

CheckBox [i+10] - >Width = 150;

CheckBox [i+10] - >Left = 320;

CheckBox [i+10] - >Top = i* CheckBox [i+10] - >Height*1.5+100;

CheckBox [i+10] - >Caption = "Назначить правильным";

if (ADOQuery1->FieldByName ("bool") - >AsString=="True") CheckBox [i+10] - >Checked=true;

ADOQuery1->Next ();

}

}

void __fastcall TReVopros:: FormClose (TObject *Sender, TCloseAction &Action)

{

if (ComboBox1->Items->Count>0)

{

for (int i=0; i<ComboBox1->Items->Count; i++)

{

CheckBox [StrToInt (ComboBox1->Items->operator [] (i))] = new TCheckBox (this->GroupBox1);

CheckBox [StrToInt (ComboBox1->Items->operator [] (i))] - >Parent = this->GroupBox1;

CheckBox [StrToInt (ComboBox1->Items->operator [] (i))] - >Name = "CheckBox"+AnsiString (StrToInt (ComboBox1->Items->operator [] (i)));

Edit [StrToInt (ComboBox1->Items->operator [] (i))] = new TEdit (this->GroupBox1);

Edit [StrToInt (ComboBox1->Items->operator [] (i))] - >Parent = this->GroupBox1;

Edit [StrToInt (ComboBox1->Items->operator [] (i))] - >Name = "Edit"+AnsiString (StrToInt (ComboBox1->Items->operator [] (i)));

CheckBox [StrToInt (ComboBox1->Items->operator [] (i)) +10] = new TCheckBox (this->GroupBox1);

CheckBox [StrToInt (ComboBox1->Items->operator [] (i)) +10] - >Parent = this->GroupBox1;

CheckBox [StrToInt (ComboBox1->Items->operator [] (i)) +10] - >Name = "CheckBox"+AnsiString (StrToInt (ComboBox1->Items->operator [] (i)) +10);

}

}

for (int i=0; i<count; i++)

{

delete CheckBox [i]; // Удаляем созданные экземпляры класса TCheckBox

delete Edit [i];

delete CheckBox [i+10];

}

ComboBox1->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TReVopros:: BitBtn1Click (TObject *Sender)

{

for (int i=0; i<count; i++)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Text="update vopros set tekst='"+Memo1->Lines->Text+"', var='"+Edit [i] - >Text+"', bool='"+BoolToStr (CheckBox [i+10] - >Checked) +"' where tekst='"+tekst+"' and var='"+vvv [i] +"'";

ADOQuery1->ExecSQL ();

}

Close ();

}

// ---------------------------------------------------------------------------

void __fastcall TReVopros:: BitBtn2Click (TObject *Sender)

{

ComboBox1->Clear ();

for (int i=0; i<count; i++)

{

if (CheckBox [i] - >Checked)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Text="delete from vopros where tekst='"+tekst+"' and var='"+Edit [i] - >Text+"'";

ADOQuery1->ExecSQL ();

delete CheckBox [i]; // Удаляем созданные экземпляры класса TCheckBox

delete Edit [i]; // Удаляем созданные экземпляры класса TEdit

delete CheckBox [i+10]; // Удаляем созданные экземпляры класса TCheckBox

ComboBox1->Items->Add (i);

}

}

}

// ---------------------------------------------------------------------------

void __fastcall TReVopros:: BitBtn3Click (TObject *Sender)

{

addotvet->ShowModal ();

}

// ---------------------------------------------------------------------------

Модуль Unit10. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit10. h"

#include "Unit1. h"

#include <IniFiles. hpp>

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TOptions *Options;

AnsiString path = ExtractFilePath (Application->ExeName);

TIniFile *Ini = new TIniFile (path+"\\options. ini");

// ---------------------------------------------------------------------------

__fastcall TOptions:: TOptions (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TOptions:: BitBtn1Click (TObject *Sender)

{

Ini->WriteString ("NetWork","IPAdress",Edit1->Text);

}

// ---------------------------------------------------------------------------

void __fastcall TOptions:: BitBtn2Click (TObject *Sender)

{

if (Form1->OpenDialog1->Execute ())

Ini->WriteString ("NetWork","FilePathDB",Form1->OpenDialog1->FileName);

Edit2->Text=Ini->ReadString ("NetWork","FilePathDB","");

}

// ---------------------------------------------------------------------------

Модуль Unit11. cpp

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit11. h"

#include "Unit1. h"

#include "Unit9. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

Taddotvet *addotvet;

// ---------------------------------------------------------------------------

__fastcall Taddotvet:: Taddotvet (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall Taddotvet:: BitBtn1Click (TObject *Sender)

{

ADOQuery1->Close ();

ADOQuery1->SQL->Clear ();

ADOQuery1->SQL->Add ("insert into vopros ([kat], [tekst], [var], [bool]) values ('MPI','"+ReVopros->Memo1->Text+"','"+Edit1->Text+"','"+BoolToStr (CheckBox1->Checked) +"')");

ADOQuery1->ExecSQL ();

ReVopros->BitBtn1Click (Sender);

Close ();

}

// ---------------------------------------------------------------------------

Приложение 2. Варианты заданий

1. Требуется вычислить число Пи с использованием библиотек параллельного программирования. Число Пи вычисляется с помощью следующего кода:

for (int i=0; i<N; i++)

{

x= (i+0.5) /N;

pi=pi+ (4/ ( (1+x*x) *N));

}

где N - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) и оптимальной размерности программы при требуемой точности до третьего знака.

2. Требуется вычислить число Пи с использованием библиотек параллельного программирования. Число Пи вычисляется с помощью следующего кода:

for (int i=0; i<N; i++)

{

x= (i+0.5) /N;

pi=pi+ (4/ ( (1+x*x) *N));

}

где N - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) и оптимальной размерности программы при требуемой точности до четвертого знака.

3. Требуется вычислить число Пи с использованием библиотек параллельного программирования. Число Пи вычисляется с помощью следующего кода:

for (int i=0; i<N; i++)

{

x= (i+0.5) /N;

pi=pi+ (4/ ( (1+x*x) *N));

}

где N - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) и оптимальной размерности программы при требуемой точности до пятого знака.

4. Требуется вычислить число Пи с использованием библиотек параллельного программирования. Число Пи вычисляется с помощью следующего кода:

for (int i=0; i<N; i++)

{

x= (i+0.5) /N;

pi=pi+ (4/ ( (1+x*x) *N));

}

где N - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) и оптимальной размерности программы при требуемой точности до шестого знака.

5. Требуется создать программу, реализующую выполнение операций над элементами массивов A, B и C по следующей формуле:

где A - двухмерный массив размерностью N1ЧN2 а массивы C и B одномерные, размерностью N1. N1 - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

6. Требуется создать программу, реализующую выполнение операций над элементами массивов A, B и C по следующей формуле:

где A - двухмерный массив размерностью N1ЧN2 а массивы C и B одномерные, размерностью N1. N1 - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

7. Требуется создать программу, реализующую выполнение операций над элементами массивов A, B и C по следующей формуле:

где A - двухмерный массив размерностью N1ЧN2 а массивы C и B одномерные, размерностью N1. N1 - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

8. Требуется создать программу, реализующую выполнение операций над элементами массивов A, B и C по следующей формуле:

где A - двухмерный массив размерностью N1ЧN2 а массивы C и B одномерные, размерностью N1. N1 - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

9. Требуется вычислить сумму чисел от 1 до k, где k - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

10. Требуется вычислить произведение чисел от 1 до k, где k - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

11. Требуется вычислить сумму квадратов чисел от 1 до k, где k - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

12. Требуется вычислить сумму кубов чисел от 1 до k, где k - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

13. Требуется вычислить произведение квадратов чисел от 1 до k, где k - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

14. Требуется написать программу, реализующую транспонирование матрицы n*n, где n - переменная размерности задачи. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

15. Требуется найти максимальный и минимальный элементы массива размером n*n, где n - переменная размерности задачи. Элементы массива задаются случайным образом. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

16. Требуется найти сумму элементов главной диагонали массива размером n*n, где n - переменная размерности задачи. Элементы массива задаются случайным образом. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

17. Требуется отсортировать элементы массива размером n*n по возрастанию, где n - переменная размерности задачи. Элементы массива задаются случайным образом. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

18. Требуется отсортировать элементы массива размером n*n по убыванию, где n - переменная размерности задачи. Элементы массива задаются случайным образом. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.

19. Требуется найти сумму элементов побочной диагонали массива размером n*n, где n - переменная размерности задачи. Элементы массива задаются случайным образом. Составить последовательную программу и параллельные программы с применением библиотек MPI, OpenMP и Posix Threads. Снять зависимости времени выполнения программы и объема оперативной памяти, занятой программой, от размерности задачи и количества запущенных потоков (процессов) для параллельных программ (для последовательной программы - две зависимости, для параллельных программ по четыре зависимости). По полученным зависимостям сделать выводы об оптимальной в данном случае технологии, оптимальном количестве параллельных процессов (потоков) при различной размерности вычислений.


Подобные документы

  • Система дистанционного обучения Distance Learning Belarus и лабораторный практикум курса "Разработка трансляторов для языков программирования", его перенос в интерактивную среду обучения. Описание работы программы и её взаимодействия с пользователями.

    курсовая работа [588,5 K], добавлен 03.11.2012

  • Система дистанционного обучения Distance Learning Belarus. Разработка лабораторного практикума по курсу "Разработка трансляторов для языков программирования". Базовые концепции разработки приложений для Интернет. Схема диалога пользователя с системой.

    курсовая работа [1,3 M], добавлен 03.11.2012

  • Принципы работы и редактирования в программе Adobe Audition 3.0, вид пользовательского интерфейса и функциональные возможности. Разработка лабораторного практикума и учебно-практического пособия. Мероприятия по обеспечению безопасности при работе на ПК.

    дипломная работа [4,9 M], добавлен 12.04.2012

  • Особенности и классификация программных комплексов, их обзор и функциональные возможности в сфере обучения. Объектно-ориентированное проектирование компьютерного практикума. Разработка и структура информационного обеспечения, основные требования к нему.

    дипломная работа [3,3 M], добавлен 19.01.2017

  • Выбор инструментальных средств для разработки лабораторного практикума по работе с операционной системой Windows ХР. Рекомендации по установке виртуальной машины. Подключение жесткого диска, его разделение на разделы. Управление пользователями и группами.

    дипломная работа [4,7 M], добавлен 17.08.2013

  • Рассмотрение методик применения цифровых образовательных ресурсов в информационно–телекоммуникационном сопровождении системы образования. Функции компьютера на уроках. Содержание и методика проведения работы по созданию практикума "Электронные таблицы".

    курсовая работа [829,9 K], добавлен 03.07.2015

  • Особенности дистанционного образования. Разработка электронного практикума по дисциплине "Методы и средства проектирования информационных систем и технологий". Предметная область, выделение информационных объектов. Разработка программного обеспечения.

    дипломная работа [2,1 M], добавлен 27.10.2017

  • Виртуальный лабораторный практикум в инженерном образовании. Особенности лабораторного практикума для естественнонаучных дисциплин. Программный эмулятор (виртуальный ПК) Emu8086. Вывод значения байта в десятеричной системе счисления, методика выполнения.

    дипломная работа [430,2 K], добавлен 09.07.2010

  • Характеристика микроконтроллера: тип, корпуса и выводы, перечень битов конфигурации и идентификаторов. Разработка и изготовление лабораторного блока для программирования бутлоадера в микроконтроллер: блок-схема устройства, изготовление печатной платы.

    дипломная работа [1,7 M], добавлен 07.06.2012

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.