В настоящее время всё большую популярность в области высокопроизводительных вычислений приобретают аппаратные средства, основанные на архитектурах для параллельных вычислений.
Эффективность использования аппаратных средств с параллельной архитектурой в решении инженерных задачах, таких, как компьютерное моделирование физических процессов, не имеет линейной зависимости от количества процессоров. Ошибочно полагать, что при решении сложных инженерных задач перенос расчета с одного ядра CPU на четыре ядра даст четырехкратный прирост скорости. Аналогично, перенос вычислений на графические ускорители с сотнями ядер не дает стократного прироста в скорости.
В первую очередь ограничение в приросте скорости при использовании параллельных расчетов налагают вычислительные алгоритмы. Алгоритмы, обладающие низкой степенью параллелизации, нерационально использовать на суперкомпьютерах и высокопроизводительных рабочих станциях. Понятие «эффективность параллелизации» поясняется законом Амдала, согласно которому если хотя бы 1/10 часть программы исполняется последовательно, то невозможно получить более 10 кратного ускорения вне зависимости от числа используемых вычислительных ядер.
Яркими примерами ограниченности эффективности распараллеливания алгоритмов для решения инженерных задач являются относительно слабые результаты мировых лидеров в области программного обеспечения для инженерного анализа (CAE) – компаний Abaqus и Ansys.
Так, в пакете SIMULIA’s от Abaqus перевод вычислений с двух ядер CPU на четыре ядра CPU дал прирост в скорости в 1,7 раза. Перевод этих же алгоритмов на архитектуру CUDA при расчете на 448 ядрах графического ускорителя Nvidia Tesla C2075 с совместным использованием 4-х ядер CPU показал прирост скорости всего в 3,5 раза [Источник].
![]() |
![]() |
Прирост скорости в SIMULIA’s от Abaqus при переходе с 2-х до 4-х ядер CPU |
Прирост скорости в SIMULIA’s от Abaqus при совместном использовании 4-х ядер CPU и 448 ядер GPU |
Соизмеримую с Abaqus эффективность распараллеливания алгоритмов достигла и компания Ansys. При увеличении количества расчетных ядер CPU с двух до восьми, пакет Ansys Mechanical 15.0 показал прирост скорости в 3 раза. Совместное использование двух ядер CPU и 2880 ядер видеоускорителя Nvidia Tesla K40 дало прирост скорости в 3,5 раза по сравнению с использованием только двух ядер CPU [Источник].
Прирост скорости в Ansys Mechanical 15.0 при использовании параллельных архитектур
Более эффективное распараллеливание вычислительных алгоритмов и использование параллельных архитектур демонстрируют математические решатели, заложенные в программное обеспечение «Frost 3D Universal».
Для сравнения скоростей параллельных вычислений на CPU и GPU была использована модель добывающих скважин.
В качестве расчетного аппаратного обеспечения были выбраны доступные на сегодняшний день для широкого круга пользователей такие вычислительные ресурсы, как центральный процессор Intel Core i7 и графический ускоритель Nvidia Titan.
Intel Core i7-3770 | Nvidia GeForce GTX Titan |
![]() |
![]() |
Основные характеристики | Основные характеристики |
Число ядер: 4 ядра | Число ядер: 2688 ядер |
Базовая тактовая частота: 3.4 GHz | Базовая тактовая частота: 836 MHz |
Тактовая частота с ускорением: 3.9 GHz | Тактовая частота с ускорением: 876 MHz |
Потребление энергии: 77 W | Потребление энергии: 250 W |
Рекомендованная цена: 305$ | Рекомендованная цена: 1080$ |
Трехмерная модель была дискретизирована с разным пространственным шагом. В итоге были получены расчетные сетки, количество элементов в которых составляло ~ 2млн., 4 млн., 8 млн. и 16 млн. Каждая расчетная сетка была запущена на расчет на одном ядре Inlel Core i7, четырех ядрах Inlel Core i7 и на видеоускорителе GeForce GTX Titan. Ниже представлены результаты расчетов для двухлетнего прогноза.
Количество ячеек | Время расчета, с | Прирост скорости | ||||
1 ядро Intel Core i7 | 4 ядра Intel Core i7 | GeForce GTX Titan | 4 ядра Intel Core i7 к 1 ядру | GeForce GTX Titan к 4-м ядрам Intel Core i7 | GeForce GTX Titan к 1 ядру Intel Core i7 | |
2 000 000 | 9,62 ч
(34 632 с) |
5,97 ч
(21 504 с) |
34,11 мин
(2047 с) |
1,61x | 10,50x | 16,91x |
4 000 000 | 18,16 ч
(65 388 с) |
10,63 ч
(38 287 с) |
57, 65 мин
(3459 с) |
1,70x | 11,06x | 18,90x |
8 000 000 | 34,33 ч
(123 600 с) |
19,22 ч
(69 221 с) |
1,62 ч
(5844 с) |
1,78x | 11,84x | 21,14x |
16 000 000 | 61,14 ч
(220 104 с) |
32,98 ч
(118 736 с) |
2,62 ч
(9456 с) |
1,85x | 12,55x | 23,27x |
За 1x взята скорость работы одного ядра процессора Intel Core i7
Следует отметить, что при сравнении скоростей вычислений на многоядерных архитектурах значительное влияние на рост ускорения оказывают параметры самой модели. Основными такими параметрами являются:
- количество материалов;
- количество граничных условий;
- равномерность расчетной сетки;
- кратность количества элементов в сетке количеству вычислительных ядер;
- однотипность теплофизических свойств материалов.
А это означает, что максимальный прирост скорости на параллельных архитектурах получают самые простые модели с регулярной расчетной сеткой, с минимальным количеством материалов и граничных условий.
Как правило, на практике расчетные модели являются более сложными, поэтому для объективного анализа скоростей расчетов и была выбрана модель добывающих скважин.
Выводы:
- Вычислительные алгоритмы с низкой степенью параллелизации неэффективно использовать на многоядерных процессорах и графических ускорителях.
- Программное обеспечение для инженерного анализа от крупных производителей содержит в себе много последовательного кода, что налагает существенное ограничение на ускорение в параллельных вычислениях. Этот факт можно объяснить возрастом создания алгоритмов для математических решателей от этих производителей. В то время еще не было таких «молодых» технологий, как CUDA, и соответственно код не «проектировался» с учетом его дальнейшего распараллеливания под эти технологии.
- Математические алгоритмы в расчетном программном обеспечении последнего поколения написаны с учетом технологий параллельных вычислений, что позволяет достигать ускорения в десятки раз при переносе вычислений с одного ядра CPU на многоядерные графические ускорители.