Многомерный DSP с ускорением графического процессора


Цифровая обработка сигналов (DSP) — это повсеместно распространенная методология научных и инженерных вычислений. На практике задачи DSP часто бывают не только одномерными. Например, данные изображения представляют собой двумерный сигнал, а радар — трехмерный сигнал. В то время как количество измерений увеличивается, время и/или сложность хранения обработки цифровых сигналов резко возрастают. Поэтому решение многомерных задач DSP в режиме реального времени чрезвычайно сложно.

Современные графические процессоры общего назначения (GPGPU) обладают превосходной производительностью при выполнении векторных операций и числовых манипуляций за счет высокой степени параллельных вычислений. Обработка цифровых сигналов, особенно многомерных сигналов, часто включает в себя серию векторных операций над огромным количеством независимых выборок данных. В настоящее время GPGPU широко используются для ускорения многомерного DSP, такого как обработка изображений , видеокодеки , анализ радиолокационных сигналов , обработка сигналов сонара и т. д. ультразвуковое сканирование . Концептуально GPGPU значительно снижают сложность вычислений по сравнению с центральными процессорами (ЦП) .цифровые сигнальные процессоры (DSP) или другие ускорители FPGA .

Обработка многомерных сигналов является распространенной проблемой в научных исследованиях и/или инженерных расчетах. Как правило, вычислительная сложность задачи DSP растет экспоненциально с увеличением количества измерений. Тем не менее, при высокой степени сложности времени и хранения чрезвычайно сложно обрабатывать многомерные сигналы в режиме реального времени. Хотя многие быстрые алгоритмы (например , БПФ ) были предложены для одномерных задач цифровой обработки сигналов, они по-прежнему недостаточно эффективны, чтобы их можно было адаптировать к многомерным задачам цифровой обработки сигналов. Поэтому по-прежнему сложно получить желаемые результаты вычислений с помощью цифровых сигнальных процессоров (DSP) . Следовательно, для ускорения многомерных вычислений DSP необходимы более совершенные алгоритмы и аппаратная архитектура.

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

Импровизированное решение для достижения требований реального времени в многомерных DSP-приложениях заключается в использовании более низкой частоты дискретизации, что может эффективно уменьшить количество выборок, обрабатываемых за один раз, и, таким образом, уменьшить общее время обработки. Однако это может привести к проблеме алиасинга из-за теоремы выборки и некачественных выходных данных. В некоторых приложениях, таких как военные радары и медицинские изображения, мы стремимся получать очень точные и точные результаты. В таких случаях использование более низкой частоты дискретизации для уменьшения объема вычислений в многомерной области DSP не всегда допустимо.

Цифровые сигнальные процессоры разработаны специально для обработки векторных операций. Они широко использовались в вычислениях DSP на протяжении десятилетий. Однако большинство цифровых сигнальных процессоров способны выполнять параллельно лишь несколько операций. Такой конструкции достаточно для ускорения обработки звука (одномерные сигналы) и обработки изображений (двухмерные сигналы). Однако при большом количестве выборок данных многомерных сигналов этого недостаточно для получения результатов вычислений в режиме реального времени.


Рисунок, иллюстрирующий блок SIMD/векторных вычислений в GPGPU.
Модель вычислений GPGPU/SIMD.
Иллюстрация потока выполнения программы/ядра OpenCL
Поток выполнения программы OpenCL