SAMPL представляет собой пакет инструментальных средств, предоставляющих возможность автоматической генерации параллельных библиотечных подпрограмм, нацеленных на высокопроизводительную обработку больших числовых матриц, для изделий на базе сигнальных процессоров семейства «Мультикор». SAMPL является разработкой компании НПЦ МиТ.
Каждая из сгенерированных библиотечных подпрограмм представляет собой набор файлов с исходными текстами, составленными на языке Си и языке ассемблера DSP-ядра. Для компиляции и сборки подпрограмм необходима среда MCStudio.
Приобретение пакета SAMPL позволяет разработчику получать высокопроизводительные реализации библиотечных подпрограмм обработки матриц выбранной конфигурации, адаптированные под особенности имеющегося изделия, в автоматическом режиме. При этом, использование SAMPL позволяет сократить маршрут проектирования и сосредоточиться на решении прикладной задачи, генерируя и подключая требуемую функциональность в проект по мере необходимости.
Основные преимущества SAMPL заключаются в следующем:
автоматическое распараллеливание вычислений между DSP-ядрами за счет применения тайловых (tile) алгоритмов с учетом имеющихся зависимостей между фрагментами решаемой задачи;
организация перекрытия вычислений и информационных обменов за счет множественной буферизации локальной памяти DSP-ядер, что позволяет сократить простои вычислительных ресурсов;
организация подкачки исходных данных и отвода результатов вычислений без нарушения целостности данных;
статический алгоритм распределения ресурсов и составления расписания, снижающий издержки на организацию процесса параллельной обработки данных;
высокая переносимость между разными аппаратными платформами, благодаря использованию автоматической структурной адаптации генерируемых программ и двоичной совместимости DSP-ядер (снизу-вверх);
возможность добавления новых подпрограмм в прикладную библиотеку.
Состав прикладной библиотеки
На данный момент SAMPL поддерживает автоматическую генерацию четырех подпрограмм библиотеки BLAS:
SGEMM (матрично-матричное умножение);
SGEMV (матрично-векторное умножение);
STRSM (решение СЛАУ с нижнетреугольной матрицей коэффициентов и несколькими правыми частями);
STRSV (решение СЛАУ с нижнетреугольной матрицей коэффициентов и одной правой частью).
Каждая из подпрограмм может быть выполнена в рамках изделия, построенного на базе любого из следующих процессоров: MC12, MC24, MC0226 и NVCom-02T.
Сценарий использования
Генерация подпрограммы является результатом выполнения единственной команды в командной строке. Ниже представлен пример команды, результатом выполнения которой является подпрограмма SGEMM, предназначенная для параллельной обработки данных на 2 DSP-ядрах процессора MC0226, для которой размерность матриц по всем измерениям составляет 15 элементов.
Таблица 1. Функциональные возможности SAMPL разных версий
В табл. 1 представлены доступные версии пакета SAMPL, а также их функциональные возможности. Примечания: 1 – SIMD-подпрограммы для DSP-ядер находятся в разработке; 2 – подпрограммы для DSP-ядер находятся в разработке; 3 - версия с подпрограммами для DSP-ядер, входящих в состав MC12, находится на стадии тестирования; 4 - механизмы обмена между DSP-ядрами через общую память находятся в разработке.
Поскольку DSP-ядра процессоров "Мультикор" совместимы снизу-вверх, пользователю предоставлена возможность использования пакета SAMPL для синтеза подпрограмм для процессоров более новых моделей (требуется соответствующая версия библиотеки поддержки времени исполнения и наличие XML-описания изделия), однако, при этом не будет задействован максимальный спектр возможностей вычислительной платформы. Так, например, версия для процессора MC12 может быть успешно использована для генерации подпрограмм для изделий, содержащих процессоры MC24, MC0226 и NVCom-02T, однако, при этом будет задействовано одно DSP-ядро, работающее в SISD режиме. Дополнительные подпрограммы для DSP-ядер другого поколения могут быть приобретены отдельно.
Помимо приобретения пакета SAMPL возможен заказ исходных текстов отдельных библиотечных подпрограмм.
Дополнительные материалы
Пример тестового проекта, содержащего сгенерированную подпрограмму матрично-матричного умножения (SGEMM), можно скачать здесь. Документацию к пакету SAMPL можно скачать здесь.
Научно-производственный центр «Микропроцессорные Технологии»