- •Предпроектный анализ
- •Введение
- •Анализ кластерных технологий в контексте лабораторного практикума
- •Типы кластеров
- •Кластеры высокой доступности
- •Кластеры распределения нагрузки
- •Вычислительные кластеры
- •Системы распределенных вычислений (grid)
- •Показатели эффективности параллельного алгоритма
- •Средства разработки и поддержки параллельных приложений
- •Принципы работы среды mpich
- •Кластер миит т-4700
- •Обоснование целесообразности разработки
- •Требования к документации
- •Требования к техническому обеспечению
- •Требования к рабочим станциям
- •Требования к разрабатываемому по
- •Требования к показателям назначения
- •Анализ исходных данных
- •Разработка лабораторного комплекса «кластерные системы»
- •Разработка методического обеспечения для лабораторного комплекса
- •Содержание лабораторных работ
- •Рабочее задание для лабораторной работы №1
- •Рабочее задание для лабораторной работы №2
- •Рабочее задание для лабораторной работы №3
- •Разработка программного обеспечения для лабораторного комплекса
- •Настройка mpich2
- •Создание общего сетевого ресурса
- •Описание хода лабораторной работы №1 Создание mpi-программы в Visual Studio
- •Листинг программы mpi-программы
- •Запуск mpi-программ
- •Балансировка
- •Результаты выполнения mpi-программы
- •Построение графиков
- •Лабораторная работа №2
- •Подготовка рабочего места для выполнения лабораторной работы №2
- •Описание хода лабораторной работы №2 Подключение к кластеру миит т-4700
- •Компиляция программы
- •Листинг программы mpi-программы
- •Составление скрипта задания
- •Запуск заданий
- •Занесение данных в таблицу
- •Построение диаграмм
- •Системотехнический расчёт: расчёт показателей эффективности вычислений
- •Описание показателей эффективности параллельных вычислений
- •Описание хода лабораторной работы №3
- •Анализ человеко-машинного взаимодействия
- •Обзор теории тестовых заданий (Item response theory).
- •Процедура расчёта
- •Построение характеристических кривых для заданий
- •Обсуждение результатов и дальнейших действий
- •Экономическая часть
- •Постановка экономической задачи.
- •Расчет затрат, связанных с разработкой лабораторного комплекса.
- •Экономическая эффективность
- •Расчёт показателей эффективности
- •Расчет затрат по эксплуатации лабораторного комплекса.
- •Расчёт эффективности разработки.
- •Список источников
- •Приложения
- •Приложение 1. Листинг разработанного по
- •Листинг программы Интерфейс для mpich
- •Листинг тестирующей mpi-программы
- •Приложение 2. Инструкция по написанию и запуску заданий на кластере миит т-4700.
Расчет затрат по эксплуатации лабораторного комплекса.
При использовании компьютерного класса из 14 компьютеров 24 часа в год, расходы на электроэнергию составят:
3.62*14*24=1216 руб./год
При использовании части узлов кластера МИИТ Т-4700 3 часа в год получим:
142*3=428 руб./год
Итого затраты на электроэнергию 1644 руб./год.
Расчёт эффективности разработки.
Следует учесть, что рассчитанный показатель ЭУОТ является далеко не главным показателем эффективности данной разработки. Самое главное в лабораторном комплексе это то, что он повысит уровень подготовки студентов кафедры АСУ, поможет выпускникам быть более востребованными и конкурентоспособными на рынке труда. Этот показатель представить в денежном выражении не представляется возможным.
Рассчитаем эффективность разработки:
, где
СТТ - текущие затраты при традиционной технологии,
СН - текущие затраты при новой технологии,
КАВТ – затраты на автоматизацию (разработку проекта).
СТТ -СН, рассчитан в пункте 3.1. =52 789 руб.
КАВТ=22536 руб. + 1644 руб. за первый год эксплуатации.
Е=52 789 / 24180=2.19
Список источников
Статья «Кластер» | Wikipedia
http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80_(%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BE%D0%B2)
В.П. Гергель. «Высокопроизводительные вычисления для многоядерных многопроцессорных систем». Нижний Новгород – 2010.
Статья «MPI» | Wikipedia
http://ru.wikipedia.org/wiki/Message_Passing_Interface
Статья «MPICH и Windows» | Image Processing
http://iproc.ru/programming/mpich-windows/
Статья «Суперкомпьютер МИИТ Т-4700»
http://miit.ru/content/130385.pdf?id_wm=130385
Сайт загрузок MPICH2 Аргоннской Национальной Лаборатоории
http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads
Центр загрузок Microsoft Corp.
http://www.microsoft.com/en-us/download/default.aspx
В.С. КИМ. «Тестирование учебных достижений». Монография. Уссурийск – 2007. Глава 5.
Статья «Использование Теории тестовых заданий (Item Response Theory) в адаптивном тестировании»
http://www.wikiznanie.ru/ru-wz/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_(Item_Response_Theory)_%D0%B2_%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%BC_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8
«Система пакетной обработки заданий Torque. Руководство пользователя.» Т-Платформы – 2008
З.А. Крепкая. «CASE-Средства проектирования информационных систем на железнодорожном транспорте на основе структуроного и объектно-ориентированного подходов. Часть 2. Унифицированный язык моделирования UML. CASE-средства объектно-ориентированного проектирования IBM Rational Rose» . Москва – 2008.
Приложения
Приложение 1. Листинг разработанного по
Листинг программы Интерфейс для mpich
Project1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
#include <Dialogs.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
TButton *Button3;
TStringGrid *StringGrid1;
TButton *Button4;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TEdit *Edit5;
TGroupBox *GroupBox1;
TCheckBox *CheckBox1;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TLabel *Label6;
TLabel *Label7;
TMainMenu *MainMenu1;
TMenuItem *N1;
TMenuItem *N2;
TMenuItem *N3;
TMenuItem *N4;
TMenuItem *N5;
TSaveDialog *SaveDialog1;
TOpenDialog *OpenDialog1;
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall CheckBox1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall N5Click(TObject *Sender);
void __fastcall N4Click(TObject *Sender);
void __fastcall N3Click(TObject *Sender);
void __fastcall N2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Unit.cpp
//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit1.h"
#include <vcl.h>
#include <fstream.h>
#include <string.h>
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
String command;
//command= " ";
command="\""+Edit1->Text+"\" -hosts " +(StringGrid1->RowCount-1)+" ";
for (int i=1;i<StringGrid1->RowCount;i++){
command=command+ StringGrid1->Cells[0][i]+" ";
command=command+ "8 ";
}
command=command+" -noprompt "+ Edit4->Text+" "+Edit5->Text;
system(command.c_str());
ifstream f(Edit5->Text.c_str());
char str[5];
for(int i=1;i<StringGrid1->RowCount;i++)
{
f.getline(str,100);
StringGrid1->Cells[1][i]=str;
}
f.close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->RowCount++;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(StringGrid1->Row==0)StringGrid1->Row++;
if(StringGrid1->RowCount>2){
for(int i=StringGrid1->Row;i<StringGrid1->RowCount-1;i++)
StringGrid1->Rows[i]= StringGrid1->Rows[i+1];
StringGrid1->RowCount--;}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Edit3->Text="";
Edit3->Text="\""+Edit1->Text+"\" -hosts " +(StringGrid1->RowCount-1)+" ";
for (int i=1;i<StringGrid1->RowCount;i++){
Edit3->Text=Edit3->Text+ StringGrid1->Cells[0][i]+" ";
Edit3->Text=Edit3->Text+ StringGrid1->Cells[1][i]+" ";
}
Edit3->Text=Edit3->Text+"-noprompt "+ Edit2->Text;
system(Edit3->Text.c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid1->Cells[0][0]="IP-адреса или имена узлов";
StringGrid1->Cells[1][0]="Число процессов";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (CheckBox1->State==cbUnchecked) {
Edit4->Enabled=false;
Edit5->Enabled=false;
Button3->Enabled=false;
Label1->Enabled=false;
Label2->Enabled=false;
}else {
Edit4->Enabled=true;
Edit5->Enabled=true;
Button3->Enabled=true;
Label1->Enabled=true;
Label2->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
SaveDialog1->Execute();
if (SaveDialog1->FileName!="")
{
ofstream s( SaveDialog1->FileName.c_str());
s<<Edit1->Text.c_str()<<"\n";
s<<Edit2->Text.c_str()<<"\n";
s<<Edit3->Text.c_str()<<"\n";
s<<Edit4->Text.c_str()<<"\n";
s<<Edit5->Text.c_str()<<"\n";
s<<StringGrid1->RowCount<<"\n";
for (int i=1;i<StringGrid1->RowCount;i++)
{
s<<StringGrid1->Cells[0][i].c_str()<<"\n";
s<<StringGrid1->Cells[1][i].c_str()<<"\n";
}
s.close();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
OpenDialog1->Execute();
if (OpenDialog1->FileName!="")
{
ifstream o( OpenDialog1->FileName.c_str());
char str[100];
o.getline(str,100);
Edit1->Text=str;
o.getline(str,100);
Edit2->Text=str;
o.getline(str,100);
Edit3->Text=str;
o.getline(str,100);
Edit4->Text=str;
o.getline(str,100);
Edit5->Text=str;
o.getline(str,100);
StringGrid1->RowCount=StrToInt(str);
for (int i=1;i<StringGrid1->RowCount;i++)
{
o.getline(str,100);
StringGrid1->Cells[0][i]=str;
o.getline(str,100);
StringGrid1->Cells[1][i]=str;
}
o.close();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
MessageBox(NULL,"Программа Интерфейс для MPICH\n для запуска MPI-программ","О прогамме",MB_OK);
}
//---------------------------------------------------------------------------