Шлопает ядро ​​Intel и тестирует его с помощью C (innerproduct)

  1. У меня есть некоторые неправильные представления об измерении флопов, на архитектуре Intel, является ли FLOP одним дополнением и одним умножением вместе? Я читал об этом где-то в Интернете, и нет никаких дебатов, которые могли бы отвергнуть это Я знаю, что FLOP имеет разные значения для разных типов процессоров.

  2. Как рассчитать мой теоретический пик FLOPS? Я использую процессор Intel® Core Core ™ Duo E7400 с частотой 2,80 ГГц. Какая связь между ГГц и FLOPS? (даже запись в Википедии о FLOPS НЕ определяет, как это сделать)

  3. Я буду использовать следующие методы для измерения фактической производительности моего компьютера (в терминах флопов): Внутреннее произведение двух векторов: для двух векторов размера N число флопов 2n(n -1) (если одно дополнение или одно умножение считается 1 флопом). Если нет, то как мне рассчитать это?

Я знаю, что есть лучшие способы сделать это, но я хотел бы знать, верны ли мои предложенные расчеты. Я где-то читал о LINPACK в качестве эталона, но мне все равно хотелось бы узнать, как это делается.

4 ответа

Что касается вашего второго вопроса, теоретический расчет FLOPS не слишком сложен. Это можно разбить примерно на:

(Количество ядер) * (Количество исполнительных блоков / ядро) * (циклов / секунда) * (Операции блока операций / цикл) * (операции с плавающей запятой на регистр / Операция блока выполнения)

Core-2 Duo имеет 2 ядра и 1 исполнительный модуль на ядро. регистр SSE имеет ширину 128 бит. Число с плавающей точкой 32 бит, поэтому вы можете хранить 4 числа с плавающей запятой в каждом регистре. Я предполагаю, что исполнительный блок выполняет 1 операцию SSE за цикл. Так и должно быть:

2 * 1 * 2,8 * 1 * 4 = 22,4 GFLOPS

что соответствует: http://www.intel.com/support/processors/sb/cs-023143.htm

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

FLOP расшифровывается как операция с плавающей точкой.

Это означает то же самое в любой архитектуре, которая поддерживает операции с плавающей запятой, и обычно измеряется как сумма операций, которые могут иметь место в любую секунду (как в FLOPS; операций с плавающей запятой в секунду).

Здесь вы можете найти инструменты для измерения FLOPS вашего компьютера.

В этой статье показана теория чисел FLOPS для процессоров x86. Это только до Pentium 4, но, возможно, вы можете экстраполировать.

Таблицы данных Intel содержат номера GFLOPS, а ваш процессор имеет заявленные 22,4

http://www.intel.com/support/processors/sb/CS-023143.htm

Поскольку ваша машина двухъядерная, это означает 11,2 Гфлопс на ядро ​​при 2,8 ГГц. Разделите это, и вы получите 4. Таким образом, Intel утверждает, что каждое их ядро ​​может делать 4 FLOPS за цикл.

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