Как я могу скомпилировать и запустить программу переменного тока (с 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
Но имейте в виду, что:
- ядро Linux не видит размеры кеша правильно по состоянию на fbe63074e3a8128bdbe1a5e8f6509c565a3abbd4 Как переключить модели процессора в gem5 после восстановления контрольной точки и затем наблюдать разницу?
- кэши влияют только на определенные типы процессоров, обычно более подробные, такие как ARM
HPI
и х86DerivO3CPU
, но нетAtomicSimpleCPU
,