Распараллеливание вычислительных алгоритмов

Автор работы: Пользователь скрыл имя, 21 Января 2013 в 03:16, задача

Краткое описание

В данном расчетно-графическом задании проводится распараллеливание вычислительных процессов с целью закрепления теоретических знаний в области теории распараллеливания вычислительных алгоритмов, формирования практических умений и навыков разработки программного средства для распараллеливания вычислительных алгоритмов и закрепления практических навыков самостоятельного решения инженерных задач, развития творческих способностей и умений пользоваться технической, нормативной и справочной литературой.

Содержание

Введение 3
1 Теоретические предпосылки поставленной проблемы 4
2 Разработка программного средства 16
Заключение 24
Список использованных источников 25
Приложение А – Текст программы 26
Приложение Б – Контрольный пример 31

Вложенные файлы: 1 файл

Отчет РГЗ по ТВП (вариант 4)новый.doc

— 518.50 Кб (Скачать файл)

 

 

 

2.3 Спецификация данных

 

Рассмотрим структуру входных  и выходных данных, используемых в программном средстве. Базовые единицы данных вынесены в таблицу 2.

 

Таблица 2 – Спецификация данных программы

 

Сlass Round

public int num

Номер вершины

public Point p

Объект класса точки  связанный с вершиной

public bool selected

Признак активности вершины

public List<round> next

ссылка на следующую  вершину

public int Time

Время выполнения оператора, заданного вершиной

private int size=15;

Размер отображаемой на экране вершины графа-схемы

Сlass Node

private int DX,DY

Координаты нажатия  на PictureBox

public Form1 f

Форма

public int[] Tau

Массив данных ранних сроках

public int[] LTau;

Массив данных поздних  сроках

public int[,] mtr , S , L , N

Матрицы транзитивности, логической несовместимости и независимости  операторов


 

2.4 Разработка алгоритма решения  задачи

 

2.4.1 Укрупненная схема  алгоритма программного средства

 

На основе анализа требований, предъявляемых к программному средству и функций, выполняемых им, был разработан и описан алгоритм решения задачи. Логическая структура программы представлено с помощью укрупненной схемы алгоритма, изображенной на рисунке 3.

 

 

Рисунок 7 – Укрупненная схема алгоритма

 

2.5 Установка и эксплуатация  программного средства

 

Для установки программного средства необходимо скопировать исполняемый файл «WindowsFormsApplication2.exe» на жесткий диск.

Программа предназначена  для компьютеров IBM-совместимой платформы, работающих под управлением операционных систем Microsoft Windows XP, Vista, 7.

Минимальные требования к  программно-аппаратной конфигурация компьютера:

- Pentium 4-совместимого процессора;

- 256 Мб оперативной памяти;

- 1 Мб места на жестком диске для хранения программы;

- цветной SVGA-совместимый монитор с поддержкой разрешений 1024x768 точек и более;

- наличие в системе набора библиотек Microsoft .NET Framework 2.0;

- манипулятор типа «мышь».

Программа не производит записи на диск и не требует сохранения и загрузки данных.

 

2.6 Работа с программным  средством

 

Для запуска программы  необходимо запустить исполняемый  файл «TVP.exe», при этом откроется окно программы, представленное на рисунке 8.

 

 

Рисунок 8 – «Граф-схема»

 

Интерфейс программы представлен вкладками.

На вкладке «Граф-схема» содержатся элементы создания и редактирования граф-схемы.

Вершины граф-схемы создаются путем двойного щелчка мышью области графического представления данных на вкладке «Граф-схема».

Перемещение вершин осуществляется в соответствии с концепцией DragNDrop и аналогично перетаскиванию папок в проводнике Windows.

После размещения вершин в удобном пользователю порядке, необходимо соединить их в соответствии с двумя типами возможных связей.

Связь по информации создается при выбранном переключателе «Связь по информации». Связь по управлению - при выборе переключателя «Связь по управлению».

Для создания связи необходимо зажать правую кнопку мыши на начальной  вершине и, не отпуская правой кнопки, довести курсор до конечной вершины. При опускании кнопки создается связь.

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

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

На каждом этапе построения пользователю предоставляется возможность просмотреть полученные матрицы следования, транзитивности, транзитивных связей логической несовместимости и матрицы независимости. Для их просмотра достаточно выбрать соответствующую вкладку.

По завершении построения можно  составить диаграмму сроков выполнения операторов. Для просмотра ранних сроков выполнения достаточно выбрать вкладку «Диаграмма сроков».

Для просмотра поздних сроков выполнения, необходимо на главной вкладке ввести необходимые сроки завершения и нажать соответствующую кнопку, после чего программа автоматически переключит пользователя на диаграмму.

 

Заключение

 

Выполнение целей и  задач РГЗ позволило закрепить теоретические знания в области теории распараллеливания вычислительных алгоритмов

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

- ввода и редактирования информационно-логической графа-схемы вычислительного алгоритма;

- нахождение транзитивных связей и связей логической несовместимости операторов;

- нахождение транзитивных связей логической несовместимости операторов

- нахождение матрицы независимости операторов;

- нахождение ранних и поздних сроков окончания выполнения операторов для конкретной ветви алгоритма;

- построение диаграммы выполнения операторов для конкретной ветви алгоритма.

 

Список использованных источников

 

  1. Ишакова, Е.Н.: Теория вычислительных процессов: учебное пособие. – Оренбург:ГОУ ОГУ, 2007. –160с.
  2. Либерти, Д.: Программирование на C#.–Пер. с англ..– СПб:Символ-Плюс, 2003.– 688с.
  3. Троелсен, Э. Язык программирования С# 2005 и платформа .NET 2.0. Пер. с анг. – М.-СПб.-Киев.: “Вильямс”.–  2007 г. – 1168 стр.
  4. Петцольд, Ч. Программирование для Microsoft Windows на C#. В 2-х томах, Том 1-2.– Пер. с англ.–М: Издательско-торговый дом “Русская редакция”, 2002
  5. Марченко, А.Л. Основы программирования на C# 2.0 – М.: “Интернет-университет информационных технологий – ИНТУИТ.ру”, “БИНОМ. Лаборатория знаний” – 2007 г. – 552 стр.

 

Приложение А – Текст  программы

 

Класс реализации формы

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsFormsApplication2

{

    public partial class Form1 : Form

    {

 

        public bool mode=true;

        public Form1()

        {

            InitializeComponent();

            nod = new Node(26,this);

          

        }

      

        private void OutS()

        {

            try

            {

                dataGridView1.RowCount = nod.Get_size()+1;

                dataGridView1.ColumnCount = nod.Get_size()+1;

                for (int i = 1; i < nod.Get_size()+1; i++)

                    for (int j = 1; j < nod.Get_size()+1; j++)

                        dataGridView1.Rows[i].Cells[j].Value = nod.S[i, j];

                dataGridView1.AutoResizeColumns();

            }

            catch

            { return; }           

        }

        private void OutL()

        {

            try

            {

                dataGridView2.RowCount = nod.Get_size() + 1;

                dataGridView2.ColumnCount = nod.Get_size() + 1;

                for (int i = 1; i < nod.Get_size() + 1; i++)

                    for (int j = 1; j < nod.Get_size() + 1; j++)

                        dataGridView2.Rows[i].Cells[j].Value = nod.L[i, j];

                dataGridView2.AutoResizeColumns();

            }

            catch

            { return; }

        }

        private void OutN()

        {

            try

            {

                dataGridView3.RowCount = nod.Get_size() + 1;

                dataGridView3.ColumnCount = nod.Get_size() + 1;

                for (int i = 1; i < nod.Get_size() + 1; i++)

                    for (int j = 1; j < nod.Get_size() + 1; j++)

                        dataGridView3.Rows[i].Cells[j].Value = nod.N[i, j];

                dataGridView3.AutoResizeColumns();

            }

            catch

            { return; }

        }

        private void button1_Click(object sender, EventArgs e)

        {

 

            int late = (int)numericUpDown1.Value;

            int f = nod.FindFT();

            if (f > late)

            {

                MessageBox.Show("Поздние сроки не  могут быть меньше " + f.ToString()+".");

                return;

            }

            isLate = false;

            nod.FindLT(late);

            tabControl1.SelectTab(4);           

 

        }

 

 

        private Node nod;

        private void добавитьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            nod.Add(new Point(100, 100));

        }

 

        private void pictureBox1_Paint(object sender, PaintEventArgs e)

        {

            nod.Draw(e.Graphics);

           

           

        }

 

        private void timer1_Tick(object sender, EventArgs e)

        {

            //pictureBox1_Paint(sender,null);

            pictureBox1.Refresh();

            nod.Fill_S();

            nod.Fill_L();

            nod.Fill_N();

            OutS();

            OutL();

            OutN();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            pictureBox1.Click += new EventHandler(nod.Node_Click);

            pictureBox1.DoubleClick += new EventHandler(nod.Node_DbClick);

            pictureBox1.MouseDown += new MouseEventHandler(nod.Node_MD);

            pictureBox1.MouseUp+=new MouseEventHandler(nod.Node_MU);

            pictureBox1.MouseMove+= new MouseEventHandler(nod.Node_MV);

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            nod.Add(new Point(100, 100));

           

        }

 

        private void radioButton1_CheckedChanged(object sender, EventArgs e)

        {

            mode = radioButton1.Checked;

        }

 

        private void tabPage1_Click(object sender, EventArgs e)

        {

 

        }

 

        private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)

        {

            if (e.TabPageIndex == 4)

            {

                nod.FindFT();

                nod.FindLT((int)numericUpDown1.Value);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                pictureBox2.Refresh();

            }

            else isLate = true;

            if (e.TabPageIndex == 5)

            {

               // nod.Renum();

                try

                {

                    dataGridView4.RowCount = nod.Get_size() + 1;

                    dataGridView4.ColumnCount = nod.Get_size() + 1;

                    for (int i = 1; i < nod.Get_size() + 1; i++)

                    {

                        for (int j = 1; j < nod.Get_size() + 1; j++)

                        {

                            dataGridView4.Rows[i].Cells[j].Value = nod.mtr[i, j];

                            dataGridView4.Columns[j].HeaderCell.Value = j.ToString();

                        }

 

                        dataGridView4.Rows[i].HeaderCell.Value = i.ToString();

                    }

                   

                    dataGridView4.AutoResizeColumns();

Информация о работе Распараллеливание вычислительных алгоритмов