Симплескалярная поддержка на LLVM - PullRequest
1 голос
/ 10 февраля 2012

Я хочу посмотреть профиль ИК-программ LLVM. Симплескалярный симулятор поддерживает LLVM? Есть ли другие симуляторы, чтобы сделать то же самое?

1 Ответ

2 голосов
/ 10 февраля 2012

Если Simplescalar поддерживает двоичные файлы ARM и x86 ELF, его можно использовать с программами, скомпилированными в LLVM.

Но если вы хотите выполнить простое профилирование (сколько времени занимает каждая часть программы при работе на реальном CPU)Вы можете проверить более известные профилировщики, такие как:

  • google-perftools или
  • callgrind / cachegrind или
  • oprofile.

Youне может просто запустить IR LLVM, потому что IR LLVM не поддерживается в SimpleScalar или в обычных профилировщиках.IR поддерживается lli и другими инструментами llvm.

Если вы хотите профилировать, какие ветви используются и как часто, существует профилирование LLVM для PGO (оптимизация на основе профилей).Есть утилита llvm-prof и utils/profile.pl скрипт для профилирования IR-программ LLVM.

Howto из utils/profile.pl source:

# Program:  profile.pl
#
# Synopsis: Insert instrumentation code into a program, run it with the JIT,
#           then print out a profile report.
#
# Syntax:   profile.pl [OPTIONS] bytecodefile <arguments>
#
# OPTIONS may include one or more of the following:
#     -block    - Enable basicblock profiling
#     -edge     - Enable edge profiling
#     -function - Enable function profiling
#     -o <filename> - Emit profiling information to the specified file, instead
#                     of llvmprof.out
#
# Any unrecognized options are passed into the invocation of llvm-prof

Внутренне это

  1. запуска opt с некоторым -insert-*-profiling Pass.вывод инструментируется IR
  2. запуск IR с помощью lli (с надеждой на использование JIT)
  3. запуск llvm-prof для преобразования llvmprof.out в читаемый текст

PS есть несколько исследовательских работ по профилированию LLLVM: llvm.org/pubs/2010-04-NeustifterProfiling.pdf

...