Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
В качестве альтернативного способа достижения высокой скорости вычислений является написание программного кода на языке ассемблера.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
В качестве примера можно рассмотреть программу, реализующую вычисление арифметического выражения (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; просмотров: 447; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.253.198 (0.006 с.) |