Утилита 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