Text (PDF):
Read
Download
Введение Имитационное моделирование, в отличие от других видов исследований, таких как натурный эксперимент или физическое моделирование, является наиболее гибким и эффективным с точки зрения временных и материальных затрат [1, 2]. Благодаря постоянному совершенствованию элементной базы современных персональных компьютеров и, одновременно, их удешевлению, последние становятся все более доступными широкому кругу пользователей. В настоящее время персональные компьютеры имеют мощные вычислительные ресурсы, способные эффективно обрабатывать большие объемы данных в реальном времени. Это достигается возможностью одновременной обработки множества данных на одном или нескольких вычислительных модулях, таких как центральный и графический процессоры. Садки аквакультуры состоят из множества однотипных элементов (рис. 1). Одним из методов моделирования таких объектов является дискретное моделирование. При данном виде моделирования, с учетом строения садка, его математическая модель условно разбивается на множество дискретных элементов, способных обрабатываться по одному алгоритму. Рис. 1. Садок аквакультуры при трехмерной постановке задачи При дискретном моделировании динамики поведения садка под влиянием различных факторов внешней среды (приливы/отливы, неравномерное течение, волнение) важную роль играет эффективность алгоритмов. Одним из трудоемких этапов расчета является вычисление мгновенных значений и направлений сил гидродинамического сопротивления, приложенных к каждому элементу садка. В связи с вышеизложенным предлагается метод оптимизации вычисления сил гидродинамического сопротивления, основанный на разложении функции компонентов их вектора от скорости (при трехмерной постановке задачи для каждой силы получаем три функции) в ряд Тейлора и применении для вычислений SIMD-инструкций центрального и графического процессоров. Постановка задачи Учитывая то, что элементы садка представляют собой сетные участки, проведем расчет сил гидродинамического сопротивления по аналогии с сетью [3]. В модели точечных масс [4] проекции сил гидродинамического сопротивления имеют следующие эвристические зависимости от проекций участка сети: , , , (1) где Rx, Ry, Rz - проекции сил гидродинамического сопротивления; c0 - гидродинамический коэффициент для сети, расположенной параллельно потоку воды; c90 - гидродинамический коэффициент для сети, расположенной перпендикулярно потоку воды; r - длина связи между узлами модели точечных масс; rx, ry, rz - длина проекции связи на оси прямоугольной декартовой системы координат, ось OX которой направлена по направлению вектора скорости перемещения узла относительно воды; v - абсолютное значение скорости перемещения узла относительно воды; ρ - плотность воды; S - площадь участка сети; Fo - сплошность сети. Гидродинамические коэффициенты находятся по следующим формулам: , , , (2) где Re - число Рейнольдса для сети; d - диаметр ниток сети; ϑ - кинематическая вязкость воды; b - коэффициент, учитывающий тип материала сети (b = 0,165 для капроновой сети, b = 0,16 для полиэтиленовой сети). Для вычисления гидродинамических коэффициентов в формулах (2) используется математическая операция возведения в степень. Данная операция достаточно трудоемка при вычислениях на персональном компьютере. Решение Рассмотрим метод оптимизации вычисления сил гидродинамического сопротивления, основанный на разложении функции компонентов их вектора от скорости (при трехмерной постановке задачи для каждой силы получаем три функции) в ряд Тейлора [5] и применении SIMD-инструкций [6] центрального и графического процессоров. Подставив (2) в (1), получим , (3) где R - одна из компонент сил гидродинамического сопротивления; k0, k1 - постоянные для участка сетной части садка коэффициенты, зависящие от параметров посадки и материала участка; χ - безразмерный параметр, определяющий ориентацию участка относительно вектора относительной скорости v (скорости движения воды относительно участка садка). Значения коэффициента k90 одинаковы, а значения коэффициента k0 различны для каждого компонента R. В декартовой прямоугольной системе координат при трехмерной постановке задачи для компонент ROY и ROZ, исходя из (1), получаем k0 = 0. Данные коэффициенты постоянны в течение всего процесса моделирования и должны вычисляться перед началом работы основного цикла алгоритма. Параметр χ является переменным и вычисляется на каждой итерации алгоритма моделирования для каждой компоненты R. В выражении (3) математические операции возведения переменной v в степень запишем в виде , (4) где p = 2 - b для k0 и p = 1,72 для k90. Разложим выражение (4) в ряд Тейлора четвертого порядка [5]. Общий вид разложения задается выражением , где f (i)(a) - значение производной i-го порядка разлагаемой функции в точке a. При a = 1 для разложения четвертого порядка получим (5) В выражении (5) используются только операции умножения, сложения и вычитания. Данные операции выполняются на современных процессорах аппаратным способом и быстро. Реализуем алгоритм вычисления (5) для персонального компьютера с одним или несколькими центральным и графическим процессорами с поддержкой SIMD-инструкций. В современном центральном процессоре архитектуры x86 и большинстве графических процессоров одна SIMD-инструкция способна одновременно обрабатывать четыре вещественных значения одинарной точности. Учитывая это и то, что в выражении присутствуют четыре группы однотипных последовательностей операций, попробуем оптимизировать данный алгоритм. При оптимизации необходимо учесть тот факт, что для вычисления трех компонент вектора силы гидродинамического сопротивления необходимо вычислить (5) дважды - для k0 и k90. Для анализа описанного алгоритма и определения его основных характеристик (области определения, скорости работы, погрешности вычислений) была разработана компьютерная программа. В программе был реализован предлагаемый алгоритм с использованием вычислительных ресурсов центрального процессора с набором инструкций SSE3. Ниже представлен программный код алгоритма на языках программирования С++ и Ассемблер. float _fastcall Func(float x, float y) { static float _one = 1.f; static float& vals = Values[0]; float v; asm { mov eax, vals movss xmm1, x subss xmm1, _one movsldup xmm0, xmm1 paddd xmm1, [eax+32] movlhps xmm0, xmm0 //x,x,x,x movlhps xmm1, xmm1 //x,1,x,1 mulps xmm1, xmm1 //x^2,1,x^2,1 mulps xmm1, xmm0 //x^3,x,x^3,x mulps xmm0, xmm1 //x^4,x^2,x^4,x^2 mulps xmm1, [eax+0] mulps xmm0, [eax+16] addps xmm0, xmm1 haddps xmm0, xmm0 addss xmm0, _one movss v, xmm0 } return v; } Эксперимент При помощи компьютерной программы был проведен численный эксперимент и определены скоростные характеристики оптимизированного алгоритма в сравнении с алгоритмом, использующим операцию возведения в степень. Замер времени выполнения производился для одного миллиарда узлов. В эксперименте использовался персональный компьютер с характеристиками, указанными в табл. 1. Результат замера показан в табл. 2. Таблица 1 Основные характеристики экспериментального оборудования Центральный процессор AMD Phenom II Количество ядер 4 Тактовая частота 3.2 ГГц Оперативная память 12 Гб Таблица 2 Параметры численного эксперимента Параметр Алгоритм Возведение в степень Оптимизированный Количество узлов 1000000000 Длительность вычислений 5 минут 41,2 секунды 9,7 секунды Максимальная относительная погрешность при v = [0,08 … 3,7] м/с - 5 % По данным табл. 2 можно сделать вывод, что скорость работы оптимизированного алгоритма оказалась в 35 раз выше. Графики зависимостей f(v) и относительной погрешности вычисления e(v) от относительной скорости v приведены на рис. 2. На графиках сплошной линией изображена зависимость, полученная алгоритмом возведения в степень, пунктирной линией - зависимость, полученная оптимизированным алгоритмом, а штрихпунктирной линией - зависимость относительной погрешности вычислений от v для оптимизированного алгоритма. Рис. 2. Графики зависимостей f(v) и e(v) при низких значениях скорости Обсуждение На рис. 3 видно, что в интервале значений скорости от 0,2 до 1,8 м/с погрешность минимальная и практически нулевая. В интервале значений скорости выше 1,8 до 3,7 м/с погрешность не превышает 5 %. В интервале значений скорости до 0,2 м/с при уменьшении скорости погрешность начинает увеличиваться. Более того, при значениях скорости менее 0,08 м/с (см. рис. 1) у оптимизированного алгоритма результат вычисления f(v) становится отрицательным. Данное обстоятельство следует учитывать в тех случаях, когда необходимо производить исследования при низких или нулевых значениях скорости. Рис. 3. Графики зависимостей f(v) и e(v) при значениях скорости до 3,7 м/с Одним из методов устранения указанного недостатка алгоритма является аппроксимация результата при значениях скорости ниже 0,2 м/с. Возможна аппроксимация линейным сплайном как между точками (0, 0) и (0,2, f(0,2)), так и между точками (0, f(0,2)) и (0,2, f(0,2)). Оба вида должны дать приемлемый результат. Заключение Сравнение скоростных характеристик оптимизированного алгоритма и результатов, полученных с применением алгоритма, использующего операцию возведения в степень, показало, что скорость работы оптимизированного алгоритма оказалась в 35 раз выше (замер времени выполнения производился для одного миллиарда узлов). Аппроксимация результата требуется только при скорости перемещения узла модели точечных масс ниже 0,2 м/с.