exponenta event banner

Ускорение моделирования беспорядка с использованием графического процессора и генерации кода

В этом примере показано, как имитировать загромождение на графическом процессоре (GPU) или посредством генерации кода (MEX) вместо интерпретатора MATLAB. Пример применяет алгоритм инверсии матрицы выборки (SMI), один из популярных методов пространственно-временной адаптивной обработки (STAP), к сигналу, принимаемому воздушным радиолокатором с 6-элементной однородной линейной матрицей (ULA). В этом примере основное внимание уделяется сравнению производительности моделирования беспорядков между GPU, генерацией кода и интерпретатором MATLAB. Подробные сведения о моделировании и алгоритме можно найти в примере Введение в пространственно-временную адаптивную обработку.

Полная функциональность этого примера требует Parallel Computing Toolbox™ и MATLAB Coder™.

Моделирование беспорядков

Инженерам радиолокационных систем часто приходится моделировать возврат беспорядка к алгоритмам обработки тестовых сигналов, таким как алгоритмы STAP. Тем не менее, генерация с высокой точностью возврата нагромождения включает в себя множество этапов и, следовательно, часто является дорогостоящей с точки зрения вычислений. Например, constantGammaClutter имитирует загромождение с помощью следующих шагов:

  1. Поделите всю местность на небольшие нагромождения. Размер сегмента зависит от диапазона азимута и разрешения диапазона.

  2. Для каждого сегмента вычислите соответствующие параметры, такие как случайная отдача, угол выпаса и коэффициент усиления антенной решетки.

  3. Объединение возвращаемых значений из всех фрагментов загромождения для создания полного возвращаемого значения загромождения.

Количество нагромождений зависит от покрытия местности, но обычно оно находится в диапазоне от тысяч до миллионов. Кроме того, все вышеперечисленные шаги должны выполняться для каждого импульса (при условии использования импульсного радара). Поэтому моделирование беспорядка часто является высоким полюсом в моделировании системы.

Для повышения скорости моделирования беспорядка можно воспользоваться преимуществами параллельных вычислений. Следует отметить, что обратная связь от более поздних импульсов может зависеть от сигнала, генерируемого в более ранних импульсах, поэтому некоторые параллельные решения, предлагаемые MATLAB, такие как parfor, не всегда применимы. Однако, поскольку вычисление на каждом участке не зависит от вычислений на других участках, оно подходит для ускорения GPU.

Если у вас есть поддерживаемый графический процессор и у вас есть доступ к Parallel Computing Toolbox, то вы можете воспользоваться преимуществами графического процессора при создании возврата загромождений с помощью gpuConstantGammaClutter вместо constantGammaClutter. В большинстве случаев с использованием gpuConstantGammaClutter Системный объект - это единственное изменение, которое необходимо внести.

Если у вас есть доступ к кодеру MATLAB, вы также можете ускорить моделирование загромождений, генерируя код C для constantGammaClutterкомпиляции и запуска скомпилированной версии. При работе в режиме генерации кода этот пример компилирует stapglutter с помощью команды codegen:

  codegen('stapclutter','-args',...
              {coder.Constant(maxRange),...
               coder.Constant(patchAzSpan)});

Все значения свойств constantGammaClutter должны передаваться как постоянные значения. Команда codegen генерирует файл mex, stapclutter_mex, который будет вызываться в цикле.

Сравнение времени моделирования беспорядка

Чтобы сравнить производительность моделирования беспорядков между интерпретатором MATLAB, генерацией кода и графическим процессором, запустите следующий графический интерфейс, введя stapcpugpu в командной строке MATLAB. Запущенный GUI показан на следующем рисунке:

Левая часть GUI содержит четыре графика, показывающие необработанный принятый сигнал, углово-доплеровский отклик принятого сигнала, обработанный сигнал и углово-доплеровский отклик весов обработки STAP. Подробности также можно найти в примере Введение в пространственно-временную адаптивную обработку. В правой части графического интерфейса управления можно управлять количеством фрагментов беспорядка, изменяя диапазон участков беспорядка в азимутальном направлении (в градусах) и максимальный диапазон (в км). Затем можно нажать кнопку «Пуск», чтобы начать моделирование, которое моделирует 5 интервалов когерентной обработки (CPI), где каждый CPI содержит 10 импульсов. Обработанный сигнал и углово-доплеровские характеристики обновляются один раз при каждом ИПЦ.

В следующем разделе показано время для различных прогонов моделирования. В этих моделированиях каждый импульс состоит из 200 выборок диапазонов с разрешением диапазона 50 м. Комбинации диапазона нагромождения и максимального диапазона загромождения приводят к различному количеству общих пятен нагромождения. Например, размах нагромождений 10 градусов и максимальный диапазон загромождений 5 км подразумевает 3600 нагромождений. Моделирование выполняется в следующих конфигурациях системы:

  • ЦП: Xeon X5650, 2,66 ГГц, 24 ГБ памяти

  • Графический процессор: Tesla C2075, 6 ГБ памяти

Результаты синхронизации показаны на следующем рисунке.

helperCPUGPUResultPlot

Figure contains 6 axes. Axes 1 contains 3 objects of type bar. Axes 2 contains 3 objects of type bar. Axes 3 with title Clutter Simulation Time Chart contains 3 objects of type bar. These objects represent MATLAB, MEX, GPU. Axes 4 contains 4 objects of type bar, line. Axes 5 contains 4 objects of type bar, line. Axes 6 contains 2 objects of type line. These objects represent GPU Speedup, MEX Speedup.

Из рисунка видно, что в целом ГПУ улучшает скорость моделирования в десятки раз, иногда даже в сто раз. Два интересных наблюдения:

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

  • После того, как количество заплат будет большим, данные больше не могут быть помещены в память графического процессора. Поэтому скорость, обеспечиваемая графическим процессором по сравнению с интерпретатором MATLAB, начинает уменьшаться. Однако для почти десяти миллионов заплат GPU по-прежнему обеспечивает ускорение более чем в 50 раз.

Улучшение скорости моделирования за счет генерации кода меньше, чем улучшение скорости GPU, но все еще является значительным. Создание кода для constantGammaClutter предварительно вычисляет собранное загромождение как массив постоянных значений. При большем количестве несбыточных исправлений размер массива становится слишком большим, что снижает скорость из-за накладных расходов на управление памятью. Создание кода требует доступа к кодеру MATLAB, но не требует специального оборудования.

Другие результаты синхронизации моделирования

Несмотря на то, что при моделировании, используемом в этом примере, вычисляются миллионы заплат, результирующий куб данных имеет размер 200x6x10, указывая только 200 выборок диапазона в каждом импульсе, 6 каналах и 10 импульсах. Этот куб данных мал по сравнению с реальными проблемами. В этом примере выбираются эти параметры, чтобы показать преимущества, которые вы можете получить от использования графического процессора или генерации кода, обеспечивая при этом выполнение примера в течение разумного времени в интерпретаторе MATLAB. Некоторые моделирования с большим размером куба данных дают следующие результаты:

  • 45-кратное ускорение с использованием графического процессора для моделирования, который генерирует 50 импульсов для 50-элементного ULA с 5000 выборками диапазона в каждом импульсе, то есть кубом данных 5000x50x50. Разрешающая способность радиолокатора составляет 10 м. Суммарный азимут радиолокатора составляет 60 градусов, с 1 градусом на каждом участке нагромождения. Максимальная дальность загромождения - 50 км. Общее количество нагромождений составляет 305 000.

  • 60-кратное ускорение с использованием GPU для моделирования, подобного описанному выше, за исключением 180-градусного азимутального охвата и максимальной дальности загромождения, равной дальности горизонта (около 130 км). В этом случае общее количество патчей беспорядка составляет 2 356 801.

Резюме

В этом примере сравниваются рабочие характеристики, достигаемые при моделировании возврата беспорядка с использованием либо интерпретатора MATLAB, либо графического процессора, либо генерации кода. Результат показывает, что графический процессор и генерация кода предлагают большие улучшения скорости по сравнению с интерпретатором MATLAB.