Как я могу скомпилировать и запустить программу переменного тока (с OpenMP) в полной системе gem5?

Я студент, работающий над диссертацией о параллельном программировании. Я использую модель OpenMP. Теперь я хочу использовать gem5 для измерения производительности. Поэтому я успешно установил полную систему gem5 по следующей ссылке:

http://cearial01.kaist.ac.kr/index.php/2016/08/26/gem5-documentation/

Теперь я хочу скомпилировать и запустить AC-программу с OpenMP (matmul.c), используя gem5. Как я могу скомпилировать и запустить эту программу? Я имею в виду, в какой папке я хранил этот программный файл (matmul.c) для компиляции? Как мне создать объектный файл этой программы? Как я могу изменить не процессор, размер кеш-памяти, нет процессора во время работы и компиляции?

Я новый студент этого раздела. Вот почему мой список вопросов слишком большой! Надеюсь, никто не против.

С наилучшими пожеланиями, Литу

1 ответ

Как я могу скомпилировать и запустить эту программу? Я имею в виду, в какой папке я сохранил этот программный файл (matmul.c) для компиляции? Как я создаю объектный файл этой программы?

Способ кросс-компиляции для изображения не является специфическим для gem5, поэтому я буду краток.

Сначала вы должны получить кросс-компилятор для изображения.

Лучший способ сделать это - получить кросс-компилятор из того же источника, что и образ, чтобы обеспечить совместимость.

Мой предпочтительный подход заключается в использовании минимальных образов Buildroot. Buildroot:

  • создает для меня и кросс-компилятор, и образ, и, таким образом, обеспечивает совместимость
  • облегчает автоматизацию создания нового программного обеспечения с помощью системы пакетов
  • может создавать очень простые изображения, которые больше подходят для gem5 и архитектурных исследований

Это моя установка на GitHub. Он содержит минимальный приветный мир OpenMP, который я успешно запустил в gem5.

Еще один хороший вариант - использовать https://crosstool-ng.github.io/

Поскольку вам нужна поддержка OpenMP, вы должны собрать кросс-компилятор GCC с поддержкой.

Я думаю, что это сделано в GCC с:

./configure --enable-libgomp

или через опцию Buildroot:

BR2_GCC_ENABLE_OPENMP=y

И затем при компиляции вы должны передать -fopenmp возможность gcc,

Как изменить количество процессоров и объем кеш-памяти?

Лучший способ ответить на этот вопрос самостоятельно - использовать что-то вроде:

./build/ARM/gem5.opt configs/example/fs.py -h

и искать варианты.

Вы сталкиваетесь:

  • -n NUM_CPUS, --num-cpus=NUM_CPUS,

    Для ARM вам также необходимо пройти .dtb с соответствующим количеством ядер, например: ./system/arm/dt/armv7_gem5_v1_2cpu.dtb для 2 ядер.

  • кэши: вы легко найдете следующие опции:

     --caches --l1d_size=1024 --l1i_size=1024 --l2cache --l2_size=1024 --l3_size=1024
    

    Но имейте в виду, что:

Другие вопросы по тегам