Foydalanilgan adabiyotlar - Toshkent axborot texnologiyalari universiteti fakultet: Kompyuter injiniringi Kafedra

22
Foydalanilgan adabiyotlar
1. M.M. Musayev. “Kompyuter tizimlari va tarmoqlari” Toshkent 2013.
2. А.С. Антоновv “Параллельное программирование с использованием
технологии OpenMP”. Москва 2009.
3. V.V. Voyevodin “Parallel hisoblash”. Москва 2002.
4. Stolings U. “Kompyuter tizimlarini arxitekturasi”. Москва 2002.
5.
David A. Patterson John L. Hennessy “COMPUTER ORGANIZATION
AND DESIGN” 2012.
6. M. Sato “OpenMP. Parallel programming for multicore processors”.
University of Tskuba 2012.
Internet resurslar:
7.
https://ru.scribd.com
8.
www.tenouk.com
9.
https://en.wikipedia.org
23
ILOVA
#pragma once
#include
#include
#include
#include
namespace Forma {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
///
/// Сводка для MyForm
///
public ref class MyForm : public System::Windows::Forms::Form
{
public: MyForm(void)
{ InitializeComponent();
////TODO: добавьте код конструктора
//}
protected:
///
/// Освободить все используемые ресурсы.
///
~MyForm()
{ if (components)
24
{ delete components;} }
private: System::Windows::Forms::Button^ button1;
protected:
private:
private: System::Windows::Forms::RichTextBox^ richTextBox1;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Label^ label1;
public:
public:
private:
private: System::ComponentModel::IContainer^ components;
private:
///
/// Требуется переменная конструктора.
///
#pragma region Windows Form Designer generated code
///
/// Обязательный метод для поддержки конструктора - не
изменяйте
/// содержимое данного метода при помощи редактора кода.
///
void InitializeComponent(void)
{ this->button1 = (gcnew System::Windows::Forms::Button());
this->richTextBox1 = (gcnew
System::Windows::Forms::RichTextBox());
this->button1->Click += gcnew System::EventHandler(this,
&MyForm::button1_Click);
// // richTextBox1
25
//
this->richTextBox1->Font = (gcnew System::Drawing::Font(L"Times New
Roman", 13, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point,
static_cast(204)));
this->richTextBox1->ForeColor =
System::Drawing::SystemColors::MenuHighlight;
this->richTextBox1->Location = System::Drawing::Point(12,
103);
this->richTextBox1->Name = L"richTextBox1";
this->richTextBox1->Size = System::Drawing::Size(556, 258);
this->richTextBox1->TabIndex = 4;
this->richTextBox1->Text = L"";
// // label3
// this->label3->AutoSize = true;
this->label3->Font = (gcnew System::Drawing::Font(L"Times
New Roman", 14.25F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point,
static_cast(204)));
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(10, 378);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(248, 13);
this->label1->TabIndex = 11;
this->label1->Text = L"212-13-guruh talabalari: Abdiyev M.,
Ashuraliyev H.";
// // MyForm
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode =
System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(609, 402);
26
this->Controls->Add(this->richTextBox1);
this->Controls->Add(this->button1);
this->Name = L"MyForm";
this->Text = L"OpenMP";
this->Load += gcnew System::EventHandler(this,
&MyForm::MyForm_Load);
this->ResumeLayout(false);
this->PerformLayout(); }
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender,
System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender,
System::EventArgs^ e) {
long double s1 = 0, s2 = 0;
double a = 1.3, b = 3.5, c = 3.1, d = 3.4;
double t1, t2, k1, k2, k3;
//-------------------------chiziqli---------------------------------------
//t1 = omp_get_wtime();
t1 = omp_get_wtime();
for (int i = 0; i < 1000000; i++)
s1 += ((a + b)*(c + d / a) + i*(a + b + c))*d + a + d*d;
t2 = omp_get_wtime();
k1 = (t2 - t1);
richTextBox1->Text = "Chiziqli holatda hisoblashga ketgan vaqt:\n "
+ k1 + "\t\n Natija : " + s1;
richTextBox1->Text += "\n--------------------------------------------";
//------------------Parallel no shaklan parallel emas-------------------------
-------------------
27
t1 = omp_get_wtime();
omp_set_num_threads(4);
#pragma omp for
for (int i = 0; i < 1000000; i++){
s2 += a*c*d + 2 * d*d + d*b*c + b*d*d / a + i*a*d + i*b*d +a
+ i*c*d; }
t2 = omp_get_wtime();
k2 = t2 - t1;
richTextBox1->Text += "\nParallel qavslar ochib hisoblangan holatni
hisoblashga ketgan vaqt:\n" + k2 + "\t\n Natija : " + s2;
richTextBox1->Text += "\n--------------------------------------------";
//------------------Parallel--------------------------------------------
s2 = 0;
t1 = omp_get_wtime();
#pragma omp for
for (int i = 0; i < 1000000; i++)
s2 += ((a + b)*(c + d / a) + i*(a + b + c))*d + a + d*d;
t2 = omp_get_wtime();
k3 = t2 - t1;
richTextBox1->Text += "\nParallel hisoblashga ketgan vaqt:\n" + k3 +
"\t\n Natija : " + s2; }
private: System::Void label1_Click(System::Object^ sender, System::EventArgs^
e) { }
private: System::Void button2_Click(System::Object^ sender,
System::EventArgs^ e) { }
private: System::Void label3_Click(System::Object^ sender, System::EventArgs^
e) { }}; }
|