В качестве альтернативного способа достижения высокой скорости вычислений является написание программного кода на языке ассемблера. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

В качестве альтернативного способа достижения высокой скорости вычислений является написание программного кода на языке ассемблера.



В качестве примера можно рассмотреть программу, реализующую вычисление арифметического выражения (4.1), которое было рассмотрено в п. 4.2, написанную на ассемблере (прил. П5).

Данная программа осуществляет последовательное вычисление арифметического выражения без организации мультизадачности. В качестве операндов используются целые неотрицательные числа в диапазоне от 0 до 99.

ОПРЕДЕЛЕНИЕ ВРЕМЕННЫХ

ХАРАКТЕРИСТИК ПРИЛОЖЕНИЯ

Используя профилировщик, оценим скорость работы приложения, написанного на С/С++ с организацией параллельных вычислений.

При профилировании программного модуля, написанного на С/С++, для операционной системы Windows используем профилировщик AQtime 3.16. Demo.

Первоначально необходимо установить настройки среды программирования, как показано на рис. 7.1 – 7.3.

 

Р и с. 7.1. Меню Build / Set Active Configuration

 

 

 

Р и с. 7.2. Меню Project / Settings

 

 

Рис. 7.3

 

После настройки среды программирования необходимо перекомпилировать проект Build / Rebuild Project, а затем запустить профилировщик.

 

 

Рис. 7.4

 

В профилировщике необходимо открыть из папки Debug файл MultithreadProject (рис. 7.5).

 

 

Рис. 7.5

 

Далее, в поле Areas с помощью контекстного меню, вызванного правой кнопкой мыши, выбираем опцию Add-Area…, в появившемся окне указываем имя AllThreads (рис. 7.6).

 

 

Рис. 7.6

 

В итоге в поле Areas появляется папка с именем AllThreads. Затем правой кнопкой мыши вызываем контекстное меню и выбираем пункт AddRoutines. В появившемся окне в левой его части выбираем файл main.obj, а в правой части окна выбираем функции тредов (рис. 7.7).

 

Рис. 7.7

 

Далее необходимо запустить программу выбором пункта Run из меню Project. После этого запускается приложение (рис. 6.12). В этом приложении необходимо ввести операнды арифметического выражения и произвести расчет. По результатам работы программы определяется время работы каждого треда, а также строится гистограмма, отражающая процентное соотношение времени выполнения каждого треда к общему времени вычислений (рис. 7.8).

Для определения временных характеристик приложения, написанного на ассемблере, используем профилировщик Turbo Profiler, который является составной частью интегрированной среды разработки Borland C++ 5.02.

Первоначально необходимо открыть профилируемый файл File -> Open (рис. 7.9).

В открывшемся окне в поле Program name необходимо указать полный путь, по которому находится профилируемый файл (рис. 7.10).

После загрузки окно профилировщика приобретет следующий вид (рис. 7.11).

Далее необходимо запустить профилировщик Run -> Run. В результате работы которого в поле Execution Profile будет показано время вычисления арифметического выражения.

 

Рис. 7.8

 

 

 

Рис. 7.9

 

 

Рис. 7.10

 

 

Рис. 7.11

 

Таким образом, зная время работы приложения, написанного на С++ и на ассемблере, можно произвести их сравнение по временному критерию.

Программа, написанная на ассемблере, выполняется на несколько порядков быстрее, чем программа, написанная на языке С++. Это связано с несколькими аспектами, одним из которых является то, что в последней программе необходимо было организовать синхронизацию, что потребовало дополнительных временных затрат. Таким образом, для достижения быстродействия, в каких-либо критичных ко времени выполнения участках программного кода, необходимо использовать ассемблер. Однако организация параллельных вычислений, являясь одним из средств повышения производительности вычислительных систем, наиболее эффективна в больших программах, выполнение которых будет осуществляться на многопроцессорных или многомашинных платформах.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. На основе полученного арифметического выражения построить информационный граф G, как показано в примере (п. 4.2).

2. Используя полученный информационный граф и арифметическое выражение, составить программу коммутации и построить схему коммутации счета (см. п. 4.2).

3. Используя API функции операционной системы Windows, организовать параллельные вычисления заданного арифметического выражения. Вычисления осуществляются в четырех тредах, между которыми необходимо осуществлять синхронизацию. В качестве операндов арифметического выражения используются целые неотрицательные числа от 0 до 99.

4. Определить время выполнения вычислений в каждом треде и общее время работы программы, используя профилировщик AQtime 3.16. Demo.

5. Написать программу вычисления арифметического выражения 4.1 на языке Ассемблера без организации параллельных вычислений. В качестве операндов арифметического выражения используются целые неотрицательные числа от 0 до 99.

6. Используя профилировщик Turbo Profiler определить время выполнения вычислений арифметического выражения в программе написанной на ассемблере.

СОДЕРЖАНИЕ РАСЧЕТНО-ПОЯСНИТЕЛЬНОЙ

ЗАПИСКИ

В расчетно-пояснительной записке должны присутствовать:

1. Краткое описание теории, способы достижения высокой производительности вычислительных систем, необходимость организации параллельных вычислений, организация параллельных вычислений средствами операционных систем.

2. Информационный граф, схема коммутации счета, программа коммутации, в соответствии с индивидуальным заданием.

3. Листинг программы на языке С/С++, организующей параллельное вычисление индивидуального арифметического выражения, с комментариями и описанием, интерфейс программы и результаты ее работы.

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

5. Результаты профилирования программы, написанной на языке С/С++ (время работы каждого треда и общее время вычислений, гистограмма, отражающая процентное соотношение времени выполнения каждого треда к общему времени вычислений).

6. Результаты профилирования программы, написанной на языке ассемблера.

7. Сравнительный анализ программ, написанных на С++ и на ассемблере, по временному критерию.

 

ПРИЛОЖЕНИЯ

Приложение П1

 

Министерство образования и науки Российской Федерации

Филиал государственного образовательного учреждения высшего профессионального образования

«Самарский государственный технический университет»

В г. Сызрани

Кафедра «Автоматизация технологических

Процессов и производств»



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 395; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.31.73 (0.007 с.)