Как создать отчет анализа IACA для программы переменного тока?

Я хотел бы проанализировать эффект, если он есть,#pragma GCC unroll nимеет простую программу суммирования цикла for на C. Из своего исследования я узнал об инструменте IACA и загрузил его, но мне трудно получить отчет об анализе, как показано здесь.

Выпуск №1: Настройка IACA. Я заметил, что IACA — это приложение, а не набор библиотек, но приложение не открывается (должен ли я иметь возможность взаимодействовать с ним?). Я извлек файлы IACA в отдельную папку в ОС, и под ними не появилось волнистых линий.

      #include <iacaMarks.h>

Поэтому я предположил, что это был правильный путь, но когда я запускаю программу, я получаю следующую ошибку:

       a.c:2:23: fatal error: iacaMarks.h: No such file or directory
#include <iacaMarks.h>
                      ^
compilation terminated.

Проблема № 2: Какая командная строка создаст отчет об анализе? Из руководства IACA. Я собрал командную строкуiaca -trace filename.cкоторый я использовал в терминале, но получил ошибку:

       iaca : The term 'iaca' is not recognized as the name of a cmdlet..... most likely because it has not been integrated properly. 

Я немного запутался, и мне не помешала бы помощь.

  1. Что я здесь делаю неправильно?
  2. Есть ли более простой или другой способ анализа изменений производительности из-за развертывания цикла? У меня ограниченные возможности чтения ассемблерного кода, но смогу ли я получить из него какую-либо информацию о задержке и пропускной способности?

Я использую машину Windows с 64-разрядной операционной системой и процессором на базе x64. У меня есть компилятор GCC, и я использую vs-code для кода c и VS для кода сборки. Я не думаю, что с кодом C что-то не так, но ясно, что я не эксперт, так что вот он:

      #include <stdio.h>
#include <iacaMarks.h>

int main(){
int arr[50]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49};
int result=0;
#pragma GCC unroll 2
for(int i=0; i< 50; i++){
    IACA_VC64_START
result+=arr[i]; 

}
IACA_VC64_END

return 0;

}

Чтобы попытаться получить IACA по правильному пути, сделал следующее: я создал папку IACA в ОС и извлек туда файлы. В папке 2 элемента, первый — это приложение IACA, а второй — iacaMarks.c. Затем я добавил

      "C:\\iaca\\iaca-win64"

в разделе Включить путь в файл c_cpp_preperties.json.

0 ответов

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