1

Я пытаюсь сравнить быстродействие i5-3210M @ 2,5 ГГц с оперативной памятью 6 ГБ и i7 970 @ 3,2 ГГц с оперативной памятью 24 ГБ. Результаты настолько неожиданны, что я предполагаю, что либо делаю что-то очень неправильное, либо что-то не так с i7.

В качестве справочной информации, информация на следующем сайте показывает, что i7 лучше во всех отношениях (кроме того, что он был более старой моделью процессора примерно на 2 года).

http://www.cpubenchmark.net/compare.php?cmp[]=840&cmp[]=815

Операционные системы на обоих компьютерах идентичны (Arch Linux x86_64). Оба компьютера одинаково стабильны и никогда не выходят из строя.

Я использую xlinpack_xeon64, который я получил здесь https://aur.archlinux.org/packages/linpack/

Этот тест «... использует параллелизм SMP и по умолчанию генерирует столько потоков выполнения, сколько число процессоров в системе SMP». Я могу убедиться, что это происходит, посмотрев top/htop. Кроме того, когда я явно устанавливаю переменную среды OMP_NUM_THREADS в переменное число потоков, я могу наблюдать с помощью top/htop, что указанные числа используются.

Используя это, я обнаружил, что i5 быстрее, чем i7, иногда в 1,2 раза. Я вставил результаты для обоих полностью ниже.

Первоначально я ожидал, что в этих очень параллельных тестах i7 превзойдет i5, возможно, в три раза (у i7 6 физических ядер, а у i5 2).

Я использовал системный тест, чтобы увидеть, есть ли здесь что-то особенное в linpack, и это дало почти идентичные результаты (i5 быстрее примерно в 1,2 раза).

Наконец, я проверил записанные gflops для двух процессоров, о которых сообщалось на этом сайте http://www.intel.com/support/processors/sb/CS-017346.htm

Здесь, указанный gflops для i5 составляет 40. Так что более менее точно, что показывают результаты linpack. С другой стороны, указанный gflops для i7 составляет около 79. И я получаю около половины этого.

Я сбит с толку, но я предполагаю, что i7 (будь то сам процессор, или оперативная память, или mb) работает со сбоями. Действительно, изменчивость результатов для i7, а также полное отсутствие изменчивости для i5 также свидетельствует о том, что с i7 что-то не так.

Любое понимание было бы очень полезно.

-m

======= Результаты =================

============================================================================
========== i7 linpack test =================================================
============================================================================

 Input data or print help ? Type [data]/help :

Number of equations to solve (problem size): 20000
Leading dimension of array: 20000
Number of trials to run: 4
Data alignment value (in Kbytes): 4
Current date/time: Wed May 21 23:51:14 2014

CPU frequency:    3.206 GHz
Number of CPUs: 1
Number of cores: 6
Number of threads: 12

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 20000
Leading dimension of array                  : 20000
Number of trials to run                     : 4    
Data alignment value (in Kbytes)            : 4    

Maximum memory requested that can be used=3200404096, at the size=20000

=================== Timing linear equation system solver ===================

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
20000  20000  4      149.874    35.5909  3.288586e-10 2.911119e-02   pass
20000  20000  4      135.832    39.2701  3.288586e-10 2.911119e-02   pass
20000  20000  4      142.117    37.5334  3.288586e-10 2.911119e-02   pass
20000  20000  4      121.434    43.9262  3.288586e-10 2.911119e-02   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
20000  20000  4       39.0801  43.9262 

Residual checks PASSED

End of tests

============================================================================
========== i5 linpack test =================================================
============================================================================

Input data or print help ? Type [data]/help :

Number of equations to solve (problem size): 20000
Leading dimension of array: 20000
Number of trials to run: 4
Data alignment value (in Kbytes): 4
Current date/time: Wed May 21 23:54:15 2014

CPU frequency:    3.092 GHz
Number of CPUs: 1
Number of cores: 2
Number of threads: 4

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 20000
Leading dimension of array                  : 20000
Number of trials to run                     : 4    
Data alignment value (in Kbytes)            : 4    

Maximum memory requested that can be used=3200404096, at the size=20000

=================== Timing linear equation system solver ===================

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
20000  20000  4      125.668    42.4461  4.097986e-10 3.627616e-02   pass
20000  20000  4      125.602    42.4686  4.097986e-10 3.627616e-02   pass
20000  20000  4      125.551    42.4856  4.097986e-10 3.627616e-02   pass
20000  20000  4      125.550    42.4861  4.097986e-10 3.627616e-02   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
20000  20000  4       42.4716  42.4861 

Residual checks PASSED

End of tests

1 ответ1

1

Мой ответ приходит с небольшим опозданием, но, поскольку я только что провел тест HPL (высокопроизводительный linpack), я также могу записать свой ответ.

Чтобы понять результат вашего эксперимента, вам нужно знать, что Linpack рассчитывает и стремится к сравнительному анализу. Linpack использует вычисления линейной алгебры с плотной матрицей для измерения производительности вычислений с плавающей точкой высокой плотности. Результаты в некоторой степени отражают максимальную теоретическую пропускную способность ЦП FLOPS из-за доминирующих операций умножения матриц. (Конечно, существуют и другие факторы - память, операции с дополнительной памятью и т.д.), Которые не позволяют достичь полного теоретического FLOPS ЦП; но традиционно 70-80% полных FLOPS вполне достижимы, если вы посмотрите на списки TOP500 .)

Могу поспорить, что ваш исполняемый файл Linpack использует Intel MKL (Math Kernel Library). В более старой архитектуре (до Sandy Bridge, к которой принадлежит ваш i7), единственным доступным "быстрым" модулем обработки с плавающей запятой является модуль SSE, который обрабатывает 2 числа с плавающей запятой за раз. Ваш новый процессор i5 имеет архитектуру Ivy Bridge, которая имеет модуль AVX, который может обрабатывать 4 числа с плавающей запятой за раз. (На самом деле, если вы посмотрите более внимательно на аппаратные возможности, число операций с плавающей запятой удваивается, потому что они могут одновременно выполнять сложение и умножение, таким образом, 4 FLOP/ цикл и 8 FLOP/ цикл для каждого модуля SSE и AVX соответственно).

Таким образом, теоретическое соотношение производительности одноядерных процессоров i7 (3,2 ГГц) и i5 (2,5 ГГц) будет:

(2.5) * 2 / (3.2) = 1.56

(Фактор 2, учитывающий разницу SSE-AVX.) Но если вы используете все ядра без гиперпоточности, вы должны получить:

(2.5) * 2 * 2 / (3.2 * 6) = 0.52

Теперь я не могу полностью объяснить ваши наблюдения, тогда! Разве если 6-ядерный расчет действительно истощает процессор данных для вычисления? Тот факт, что i5 быстрее, может указывать на другие улучшения, которые не связаны только с быстродействием процессора и вычислительными возможностями.

Wirawan

PS: использование Intel терминов "i7" и "i5" всегда сбивает меня с толку; Хотя "i7", конечно, лучше, чем "i5", не совсем ясно, какое преимущество в производительности дает и сколько.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .