Шлопает ядро ​​Intel и тестирует его с C (innerproduct) - PullRequest
6 голосов
/ 08 октября 2009
  1. У меня есть некоторые неправильные представления об измерении флопов, на архитектуре Intel, является ли FLOP одним дополнением и одним умножением вместе? Я читал об этом где-то в Интернете, и нет никаких дискуссий, которые могли бы отвергнуть это. Я знаю, что FLOP имеет разные значения на разных типах процессоров.

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

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

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

Ответы [ 4 ]

9 голосов
/ 08 октября 2009

Что касается вашего второго вопроса, теоретический расчет 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

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

2 голосов
/ 08 октября 2009

A FLOP означает операцию с плавающей запятой.

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

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

2 голосов
/ 08 октября 2009

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

0 голосов
/ 08 октября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...