Разработка лабораторного практикума по курсу "Методы параллельной обработки"
Характеристика основных моделей параллельных вычислений. Основные директивы и функции, применяемые в наиболее распространенных технологиях параллельного программирования. Функциональные требования к программе, реализующей лабораторный практикум.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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