Я пришел из этой темы: Ядро Intel FLOPS и тестирование его с помощью C (внутренний продукт)
Когда я начал писать простые тестовые сценарии, у меня возникло несколько вопросов.
Почему с плавающей запятой? Что такого важного в плавающей запятой, что мы должны учитывать? Почему не просто int?
Если я хочу измерить FLOPS, скажем, я делаю внутренний продукт двух векторов. Должны ли два вектора быть float[] ? Как изменится измерение, если я использую int[]?
Я не знаком с архитектурой Intel. Допустим, у меня есть следующие операции:
float a = 3.14159; float b = 3.14158; for(int i = 0; i < 100; ++i) { a + b; }
Сколько это "операций с плавающей запятой"?
Я немного запутался, потому что изучал упрощенную 32-битную архитектуру MIPS. Для каждой инструкции есть 32 бита, например, 5 бит для операнда 1 и 5 бит для операнда 2 и т. д., поэтому для архитектур Intel (в частности, той же архитектуры из предыдущего потока) мне сказали, что регистр может содержать 128 бит. Для ОДИНОЧНОЙ ТОЧНОСТИ с плавающей запятой, 32 бита на число с плавающей запятой, означает ли это, что для каждой инструкции, подаваемой в процессор, она может принимать 4 числа с плавающей запятой? Разве мы не должны также учитывать биты, используемые в операндах и других частях инструкции? Как мы можем просто передать процессору 4 числа с плавающей запятой без какого-либо конкретного значения?
Я не знаю, имеет ли смысл мой подход к мышлению всего по кусочкам. Если нет, то на какую «высоту» перспективы я должен смотреть?