Параллельный решатель уравнения Лоренца на FPGA

Параллельный решатель уравнения Лоренца на FPGA

Отрасли, категории, применение: Научные исследования

Краткое описание:

Работа посвящена детальной проверке применимости существующих в настоящий момент инструментальных программно-аппаратных средств NI для решения перечисленных выше задач и созданию быстродействующего решателя на FPGA Xilinx, выполняющего численное интегрирование обыкновенных дифференциальных уравнений (ODE) параллельным алгоритмом Рунге-Кутта второго порядка точности (PRK2).

Организация

СПбГЭТУ (ЛЭТИ), г. Санкт-Петербург

Описание решения

Постановка задачи

Широкий круг важных с практической и теоретических точек зрения задач, описываемых непрерывными математическими зависимостями, часто может быть решен лишь с помощью вычислительных устройств, которые обладают одновременно весьма противоречивыми свойствами. Особенно сложные требования предъявляются к вычислительным устройствам, которые должны применяться для построения встраиваемых систем управления высокоскоростными динамическими объектами и быстро протекающими непрерывными процессами, а также к вычислительным устройствам для точного моделирования сложных динамических систем с изменяющимися параметрами в реальном масштабе времени. Для целей управления и моделирования наибольшее значение имеют, как правило, точность (4-5 десятичных знаков включительно), быстродействие и аппаратурные затраты. Кроме этого, в системах управления и в моделях, работающих с реальной аппаратурой или взаимодействующих с реальной внешней средой, необходимо осуществлять решение задач в натуральном масштабе времени или даже в ускоренном масштабе при необходимости прогнозирования поведения тех или иных объектов.

Работа посвящена детальной проверке применимости существующих в настоящий момент инструментальных программно-аппаратных средств NI для решения перечисленных выше задач и созданию быстродействующего решателя на FPGA Xilinx, выполняющего численное интегрирование обыкновенных дифференциальных уравнений (ODE) параллельным алгоритмом Рунге-Кутта второго порядка точности (PRK2).

Решение

В качестве тестового уравнения выбрано нелинейное дифференциальное уравнение третьего порядка (аттрактор Лоренца). Аттрактор Лоренца был найден в численных экспериментах Лоренца, исследовавшего поведение траекторий нелинейной системы:

при следующих значениях параметров: σ=10, r=28, b=8/3.

Эта система вначале была введена как первое нетривиальное галеркинское приближение для задачи о конвенции морской воды в плоском слое, чем и мотивировался выбор значений σ, r и b, но она возникает также и в других физических системах и устройствах:

  • в радиотехнике нелинейные динамические системы с хаотическим поведением
  • для описания динамики процессов, происходящих в квантовых генераторах
  • в автогенераторах с инерционной обратной связью системах фазовой автоподстройки частоты
  • в системах стабилизации и нагрева плазмы
  • в конфиденциальных системах связи, использующих хаотические сигналы
  • в системах фазовой автоподстройки частоты, являющихся основой построения многих устройств в системах связи и радиолокации
  • в качестве формирователей псевдослучайных сигналов

Исследовательская и экспериментальная части работы включают три этапа. На первом этапе произведен анализ существующих стандартных методов численного интегрирования ODE с фиксированным шагом, используемых в ядре LabVIEW и Control Design & Simulation Module. Для тестирования выбран виртуальный прибор ODE Solver.vi из палитры функций

Mathematics>Differential Equations>Ordinary Differential Equations и ODE Solver Runge-Kutta 2 в меню Configurate Simulation Parameters.
Блок-диаграммы виртуальных приборов представлены на Рис.1 и Рис.2.


Для вычисления времени реализаций ВП использована структура Flat Sequence и два блока Tick Count(ms) из палитры Timing.

Результаты выполнения этих ВП показывают совпадение точности решения уравнения Лоренца до 13 десятичного знака и большее время реализации для LorenzDif_LV_RK2.vi.

На втором этапе создан ПВП в основе, которого положен новый параллельный вычислительный алгоритм численного интегрирования Рунге-Кутта 2 (PRK2) [1]. Блок-диаграмма ВП представлена на Рис.3. Время получения решения практически уменьшилось в 1000 раз при сохранении точности по сравнению с представленными выше реализациями.

Следующий этап работы посвящен переходу на целевую платформу LabVIEW RIO Evaluation Kit на базе sbRIO 9636 [2].

Отладочная плата предоставляет возможность выполнять ВП на процессоре PowerPC фирмы FreeScale под управлением операционной системы реального времени RTOS или ПЛИС Xilinx Spartan 6 LX45.

Проект Lorenz_Dif_Project.lvproj (окно представлено ниже) включает пять файлов, выполняемых на PowerPC. Файлы в именах содержат символы RT и расположены в нижней части окна Project Explorer.

По результатам выполнения ВП можно сделать следующие выводы:

  1. Наибольшее время компиляции и объем оперативной памяти соответствует Lorenz_Dif_LV_RK2_RT.vi и Lorenz_Dif_SM_RT.vi
  2. Время выполнения для всех ВП возросло более чем в десять раз
  3. Наименьшее время выполнения имеет параллельный решатель Lorenz_Dif_RT.vi
  4. В параллельном решателе Lorenz_Dif_LV_V2_I32_Final_RT.vi данные представлены в формате I32. Для зависимых переменных применено
  5. масштабирование [3,4], которое потребовало включения в блок-диаграмму дополнительных арифметических блоков (Quotient & Remainder), а также блоков преобразования форматов данных (I32).

На последнем этапе, выполненного проекта внесено изменение в ВП Lorenz_Dif_LV_V2_I32_Final_RT.vi для выполнения его на FPGA Target. Арифметический блок целочисленного деления (Quotient & Remainder) заменен на блок (Logical Shift) и добавлен новый блок FIFO_z1. Блок реализует стек для хранения значений зависимой переменной x исходного уравнения (z1=x). Приложение LorenzDif_Fifo.vi осуществляет чтение значений переменной z1 и вычисляет максимальную относительную и абсолютную погрешности. Значения погрешностей соответственно равны 2,99506*10^-5 и 5,86113*10^-4. За точные значения переменной z1 приняты значения, полученные из решения уравнения параллельным методом Рунге-Кутта 2 при представлении числовых данных в формате DBL. Блок-диаграмма ВП для выполнения на FPGA Target представлена на рис.5.

На основе данных, представленных в таблице можно сделать окончательные выводы:

  1. Все ВП обеспечивают на PC процессоре решения в ускоренном масштабе времени, так как tfin=3000 ms
  2. NI решатели ODE Solver и Simulation Module позволяют получить решения в замедленном масштабе времени Elapsed Time >tfin
  3. На всех целевых процессорах решатель, построенный на основе параллельного алгоритма Рунге-Кутта 2 , обеспечивает значительное превосходство в быстродействии
  4. Стандартные решатели NI не переносятся на FPGA Target.

Используемое оборудование и программное обеспечение

Решение поставленных задач осуществлялось в среде программирования NI LabVIEW 2013 с модулями расширения Control Design & Simulation Module, LabVIEW RT, Math Script RT, FPGA Module. Целевая платформа включает ПК с процессором Intel Core i5430M и отладочный модуль LabVIEW RIO Evaluation Kit на базе sbRIO 9636

Внедрение и его перспективы

Разработанный параллельный решатель успешно внедрен в авторизованном NI и Quanser учебно-научном центре "Технологии встраиваемых систем управления" СПбГЭТУ (ЛЭТИ). Планируется создание модуля расширения модельного проектирования и быстрого прототипирования встраиваемых систем.

Список литературы

1. Жуков К.Г. Алгоритм реализации параллельных вычислений по формулам численного интегрирования Рунге-Кутта // Научно-технические ведомости СПбГПУ. - 2011. - № 6.
2. http://www.ni.com/white-paper/7783/en/
3. http://matlab.exponenta.ru/fixedpoint/default.php.
4. Жуков К.Г. Модельное проектирование встраиваемых систем в LabVIEW.-М:ДМК Пресс,20011.

 

 

 

Решения опубликованы на основании докладов из сборников трудов ежегодной конференции "Инженерные , научные и образовательные приложения на базе технологий National Instruments" с 2011 по 2014 гг.



 

© 2017 National Instruments Russia. All rights reserved.
Яндекс.Метрика