Как создать отчет анализа 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.
Я немного запутался, и мне не помешала бы помощь.
- Что я здесь делаю неправильно?
- Есть ли более простой или другой способ анализа изменений производительности из-за развертывания цикла? У меня ограниченные возможности чтения ассемблерного кода, но смогу ли я получить из него какую-либо информацию о задержке и пропускной способности?
Я использую машину 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.