Утилита elcorecl-run

Утилита elcorecl-run предназначена для запуса DSP-кернелов в Linux. Утилита elcorecl-run построена на базе ELcoreCL API.

Утилита elcorecl-run устанавливается в Buildroot по умолчанию и доступна в Linux на отладочном модуле по имени.

Формат запуска утилиты elcorecl-run:

elcorecl-run -e elf_file [опции утилиты] [-- аргументы вызываемого DSP-кернела]

Утилита elcorecl-run запускает на DSP функцию main() или main_with_share_mem() ELF-файла elf_file, передавая в функцию аргументы, указанные после --.

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

Описание опций утилиты:

-h

Вывод help.

--core=<list_of_cores>

Список DSP, разделенный запятыми или диапазон, например, 0,4-6,9. Для запуска на всех DSP — all. По умолчанию используются глобальные очереди, т.е. выполнение кернел будет осуществляться на первом свободном DSP.

-s <bytes>

Размер общей памяти, передаваемой в качестве параметра в кернел при запуске на нескольких DSP. При этом вместо функции main() будет вызвана функция main_with_share_mem(). Значение по умолчанию: 0.

Сигнатура вызываемой функции:

int main_with_share_mem(int argc, char *argv[], char *shmem_ptr, uint32_t shmem_size)

argc, argv — параметры, аналогичные параметрам функции main();

shmem_ptr — указатель на разделяемую память;

shmem_size — размер разделяемой памяти в байтах.

-t

Использовать spawn/sync модель запуска DSP-кернела. DSP, имеющий минимальный порядковый номер, является основным и выполняет основной код DSP-кернела. Остальные DSP являются вспомогательными и подключаются к выполнению параллельных ветвей DSP-кернела.

В рамках пакета elcorecl-extra в Buildroot собираются кернелы для запуска с помощью утилиты elcorecl-run. Кернелы доступны в Linux на отладочном модуле в директории /usr/share/elcore50-extra.

Примеры запусков:

elcorecl-run -e /usr/share/elcore50-extra/tinymembench
elcorecl-run -e /usr/share/elcore50/coremark --core=all
elcorecl-run -t -e /usr/share/elcore50/coremark-multicore --core=all
elcorecl-run -e /usr/share/elcore50-extra/ramspeed --core=1 -- -b 2