Организация параллельных потоков. Часть 2 | страница 27



, нажав клавишу F4. За счёт этого мы можем копировать нашу формулу в остальные ячейки столбца.

Строим графики ускорения и эффективности в зависимости от числа потоков (и ядер).

Рассмотрим график. Картина довольно неожиданная. Получается, что ускорение нашей программы не достигает 8 раз на восьми ядрах. Мы не достигли даже ускорения в четыре раза.

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


Рис. 5.32. Ускорение и эффективность


Задание. Постройте таблицу и графики (рис. 5.32). Сделайте выводы об ускорении программы.


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

Интересно, что будет, если привязать каждый поток к своему ядру? Станет ли от этого программа работать быстрее?

Задание. Добавьте в программу параллельного суммирования привязку потоков к ядрам. Повторите исследование и выясните, как влияет привязка к ядрам на ускорение расчётов.

6. Численное интегрирование

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

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

6.1. Варианты заданий

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

Формула приводится на рис. 6.1.


Рис. 6.1. Определённый интеграл


Мы используем те же самые варианты заданий, что и предыдущей работе (рис. 6.2).


Рис. 6.2. Варианты заданий


Номер варианта — последняя цифра номера зачётки. Для цифры ноль берём десятый вариант


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

Задание. Опишите в отчёте свой вариант задания.

6.2. Аналитическое решение

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

В предыдущей работе [1] мы разработали и отладили программу. Теперь можно сосредоточиться на исследовании эффективности распараллеливания и не углубляться в тонкости программирования как такового.