LINUX.ORG.RU

Оптимизация ПО для AMD «Bulldozer»

 , ,


0

1

AMD опубликовала «Руководство по оптимизации ПО на 15h», архитектуре процессоров, также известной под кодовым именем «Bulldozer».

В руководстве рассказывается о:

  • микроархитектуре новых процессоров;
  • оптимизациях для C/C++;
  • главных 64-битных улучшениях;
  • оптимизациях для кеша/памяти;
  • оптимизации декодирования инструкций;
  • оптимизации планировщика;
  • улучшения безопасности VM;
  • оптимизации NUMA.

>>> Прямая ссылка на PDF

☆☆

Проверено: anonymous_incognito ()
Последнее исправление: JB (всего исправлений: 5)

Ответ на: комментарий от anonymous

Про то, как хорошо с перегрева процессоры от AMD горели, напомнить?

ты, когда маленький был, тоже не всегда в горшок попадал.

mityash
()

Интересно, зачем вообще эта новость здесь? Чтобы развести очередной срач AMD vs Intel? Уж ЛОР-то точно не является целевой аудиторией этой документации.

Relan ★★★★★
()
Ответ на: комментарий от stalkerg

Успел урвать один из последних феномов 2 1100т. Имею 6 физических ядер вместо сферических 8. Рад, что ты поддержал своими финансами амд, что бы они потом мне бульдозера до вменяемого состояния допилили.

der_looser ★★
()
Ответ на: комментарий от der_looser

Успел урвать один из последних феномов 2 1100т.

Ой, да ладно, они ещё как минимум год продаваться будут. В нашей провинции купить не проблема, об Мск глянул в никсе — вполне в доступности.

Имею 6 физических ядер вместо сферических 8.

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

i-rinat ★★★★★
()
Ответ на: комментарий от true_admin

Пожалуй, многокомповые конфигурации это единственный случай когда разница даже в 20% производительности серьёзно решает. Тут уже экономия 60тыщ на каждом из сотни серверов будет значительной. Но 99% проектов этого не требуют и расчитаны на запуск на одном компе.

что за маркетинговый булшит?

xpahos ★★★★★
()

Whenever possible, use branches that are biased toward being not-taken over branches that are biased toward being taken.

When possible, align branch targets to a 32-byte boundary and limit the number of branches in a 32-byte boundary to one.

отличные подсказки для компиляторов

For each CALL to a subroutine, use a RET instruction to return to the caller.

прямым текстом сказано, что процессор поддерживает ещё один стек с адресами возврата (вне памяти) и использует его, а непарные call-ret заставляют его читать стек из памяти и это его сильно расстраивает

Use loop unrolling where appropriate to increase instruction-level parallelism

было бы похоже на общие слова, но они приводят чёткую границу — 10 инструкций, видимо пенальти ошибки 5-20 инструкций

Use the REP prefix judiciously when performing string operations

«используйте лучше циклы, они чаще быстрее, хоть и генерируют больше кода»

Derivation of Algorithm, Multiplier, and Shift Factor for Integer Division by Constants

Забавно — замена целочисленного деления умножением и сдвигом.

Store-to-Load Forwarding Restrictions

Целую страницу обсуждается как правильно писать в память так, чтобы последующее чтение было напрямую из буфера записи. Похоже, он у них настолько большой, что это становится важно

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Взял ради теста AMD FX-8120, погнался на плате автоматом на 3.9GHz. Запустил научный софт (конечно элементный/объёмный - CFX).

Вообщем результат (8 ядер против 4х у i7): С single точностью: На 12% быстрее, чем i7@930 (память 1333MHz трёхканальная). Тестовая (реальная задача) посчиталась за 36 минут против 40 минут на i7@930. С double: AMD FX на 1% медленнее, чем i7@930.

Походу сказывается один блок FPU на пару ядер. :(

Подозрение, что с количеством данных более млн элементов даёт о себе знать трёхканальная память.

Вывод: новый i7 с четырёхканальной памятью - будет очень быстр и явно обгонит FX, а если юзать ещё и 6 ядер у i7. :-/ Да ещё и при текущей стоимости 8Гб-х модулей, опять не в пользу AMD с их 4мя дырками в плате на последнем чипсете, против интеля, где есть платы по 6 и 8 дырок под память. :( В научном счёте актуально объём ОЗУ. А в АМД больше 16Гб реально не сейчас не запихать. :(

Тут дальше думать - цена/качество. FX машинка выйдет дешевле на заметную сумму, даже если брать старый i7. Так что с предыдущим поколением боремся вполне достойно, а вот новые камни от i7 вне конкуренции по производительности, надеюсь пока. Но уж очень они дороги в сравнении с fx. :(

ubik33
()
Ответ на: комментарий от ubik33

Угу, балид формулы 1 конечно быстрее почти любой обычной машины но и стоит куда больше... топовые процессоры intel быстрее топовых AMD но и цена куда выше. :)

stalkerg ★★★★★
()
Ответ на: комментарий от x905

как это «более надежны» ? при разгоне штоле ? или молотком по ним если бить ?

У intel процы крайне глюкавые гляньте сколько workaround в ядре на эту тему. Потом у них с чипсетами частенько лажа.

stalkerg ★★★★★
()
Ответ на: комментарий от i-rinat

Забавно — замена целочисленного деления умножением и сдвигом.

Емнип, у них просто нет реализации radix32 в железе. Смотри, что нашел:

http://ec2-122-248-210-243.ap-southeast-1.compute.amazonaws.com/mediawiki/ind...

But now lets turn on optimisaitons. Compiling with -O3 turns the tables - radix4 now takes 2:26 vs a 2:47 - the Radix-4 version was quicker than the CPU's IDIV!?

anonymous
()
Ответ на: комментарий от anonymous

как интелы сокеты до LGA плавили

Гугл выдал несколько ссылок на лютых ССЗБ, неправильно установивших проц в сокет. Очевидно, это бывшие амдфилы.

anonymous
()
Ответ на: комментарий от Napilnik

Говоришь так, словно компиляторы сейчас умеют распараллеливать код на приличном уровне.

Предлагаешь оптимизировать компиляторы не имея необходимого железа для проверки?

Тем не менее, поддержка новых процессоров Intel появляется в GCC и ядре заранее. Магия, не иначе.

Lighting ★★★★★
()
Ответ на: комментарий от Quasar

Itanium

Ну и к чему ты вспомнил серверную архитектуру, для разработки которой были веские причины? Это вам не x86 на серверах.

Lighting ★★★★★
()
Ответ на: комментарий от Bad_ptr

// Погодите-ка, где-то мы это уже слышали?

Во времена NetBurst. Но, тем не менее, даже со всеми недостатками они были хорошими процессорами, а уж после ухода с RAMBUS стали вообще отличными(для своего времени).

Lighting ★★★★★
()
Ответ на: комментарий от mityash

Но он ведь в 20 лет мимо горшка не промахивался.

Lighting ★★★★★
()
Ответ на: комментарий от stalkerg

топовые процессоры intel быстрее топовых AMD но и цена куда выше.

«Куда выше» - это около 30$.

Lighting ★★★★★
()

Почему о это процессоре столько разговоров и нужна какая-то специальная оптимизация?

vertexua ★★★★★
()
Ответ на: комментарий от true_admin

скажи не булшит

Зюзероутер на $10 дешевле! Налетай!

anonymous
()
Ответ на: комментарий от alx_me

Ничего такое феноменального в генту нет, просто имбицилов вокруг слишком много которым и 2 + 2 слишком сложно

а кто говорит про сложно? По мануалу генту и макака поставит.

Называть гентушников красноглазыми могут лишь те кто называет «ботанами»

так называемые «ботаны» все же получают реальные знания, которые им могут впоследствии пригодиться. Хотя бы для того, чтобы закосить от армии в ВУЗе.
В процессе компиляния генты никаких новых знаний в черепную коробку не проникает. Гентушники - никакие не «ботаны», а элементарные задроты, тратящие время и электроэнергию на бесполезную фигню.
Красноглазие в виде компеляние генты - болезнь, ничем не лучшая игры сутками в какой-нибудь WoW.

nu11 ★★★★★
()
Ответ на: комментарий от stalkerg

Купил 8120 разогнал до 3600Mhz (это больше чем у 8150) - радуюсь. :)

А можно мне выдачу «john --test» от версии 1.7.9, собранной как linux-x86-64-xop, linux-x86-xop (32-бит, но с 256-битным XOP), а также в сравнении с ней же для -avx сборок? И для OpenMP сборок отдельно тоже (раскомментарить OMPFLAGS в Makefile). А то этот код уже давно есть, но Bulldozer'ов у людей так мало, что код не проверен. (Phoronix якобы гонял benchmark'и John'а на Bulldozer - но, как я понял, без XOP, а может даже и без AVX.) Скачать можно на http://www.openwall.com/john/, результаты добавить на http://openwall.info/wiki/john/benchmarks (для Core i7-2600 с AVX там уже есть). Если есть время, то можно и -jumbo прогнать отдельно и даже сравнить все 160+ отдельных результатов для разных сборок/процессоров с помощью relbench (скрипт на Perl, лежит там же в архиве), хотя конкретно XOP там пока используется только для DES.

solardiz
()
Ответ на: комментарий от ubik33

Взял ради теста AMD FX-8120, погнался на плате автоматом на 3.9GHz.

Та же просьба, что и в моем предыдущем комментарии. Заранее спасибо!

solardiz
()
Ответ на: комментарий от Thero

ну бульдозер слил только из-за маркетологов... которым хватило ума сказать что мы порвём жопу всему миру...

прям как с итаником :)

annulen ★★★★★
()

Никак не могу понять, чем продиктован такой подход:

Preferred for Data that Falls Mostly Within the Range

if (a <= max && a >= min && b <= max && b >= min)

If most of the data falls within the range, the branches will not be taken, so the above code is preferred. Otherwise, the following code is preferred.

Preferred for Data that Does Not Fall Mostly Within the Range

if (a > max || a < min || b > max || b < min)

Ведь второй вариант будет нормально работать в обоих случаях.

А вот это вообще пять:

Avoid

double a, b, c, e, f;
e = a / c;
f = b / c;
Preferred
double a, b, c, e, f, t;
t = 1 / c;
e = a * t
f = b * t;

Каким образом ТРИ операции с плавающей точкой будут отрабатывать быстрее чем две? Да еще и потеря точности, в общем случае, от (1/c)*a будет намного больше чем от a/c.

Но дальше - больше, писатели руководства начинают противоречить сами себе:

3.17 Replacing Integer Division with Multiplication

...

Examples

Avoid code that uses two integer divisions:

int i, j, k, m;
m = i / j / k;
Instead, replace one of the integer divisions with the appropriate multiplication:
m = i / (j * k);

В остальном это просто, по большей части, набор советов от лучезарного КО.

A-234 ★★★★★
()
Ответ на: комментарий от anonymous

Емнип, у них просто нет реализации radix32 в железе.

Я сильно сомневаюсь, что intel делает больше или меньше 4-х бит за такт. А у бульдозера получатся 2 бита — в pdf-ке приведены задержки в тактах.

Смотри, что нашел

интересное чтиво

i-rinat ★★★★★
()
Ответ на: комментарий от ubik33

А в АМД больше 16Гб реально не сейчас не запихать. :(

Реально 32, в продаже есть 8Гб модули. Видел в юлмарте.

anonymous
()
Ответ на: комментарий от x905

Бывали случаи, когда огромный тяжёлый кулер с ненадёжным креплением на четырёх ножках чуть-чуть отходил. Последствия зависели от того, отходил ли также процеесор от сокета: если да, то дох от КЗ, если нет, то от перегрева. Но это бывает очень редко и «обычного пользователя», как правило, не касается.

Oleaster ★★★
()
Ответ на: комментарий от der_looser

Да чо там, мне и атлона 640 за глаза, мне крузисы не нужны, а для офисных работ и веснота (для чего, собственно, только и годится линупс) его мощь ещё лет пять будет избыточной, пока Марк юнити-3 или Мигелюшка гном-4 не выпустят...

хехехе

Oleaster ★★★
()
Ответ на: комментарий от solardiz

64 bit XOP

Benchmarking: Traditional DES [128/128 BS XOP-16]... DONE
Many salts:     4700K c/s real, 4709K c/s virtual
Only one salt:  4418K c/s real, 4418K c/s virtual

Benchmarking: BSDI DES (x725) [128/128 BS XOP-16]... DONE
Many salts:     156364 c/s real, 156364 c/s virtual
Only one salt:  152089 c/s real, 152089 c/s virtual

Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
Raw:    14602 c/s real, 14602 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw:    950 c/s real, 950 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short:  463667 c/s real, 463667 c/s virtual
Long:   1296K c/s real, 1296K c/s virtual

Benchmarking: LM DES [128/128 BS XOP-16]... DONE
Raw:    57514K c/s real, 57514K c/s virtual

Benchmarking: generic crypt(3) [?/64]... DONE
Many salts:     216595 c/s real, 216595 c/s virtual
Only one salt:  216787 c/s real, 216787 c/s virtual

Benchmarking: Tripcode DES [48/64 4K]... DONE
Raw:    364697 c/s real, 364697 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    67746K c/s real, 67746K c/s virtual

64 bit AVX

Benchmarking: Traditional DES [128/128 BS AVX-16]... DONE
Many salts:     3951K c/s real, 3959K c/s virtual
Only one salt:  3786K c/s real, 3786K c/s virtual

Benchmarking: BSDI DES (x725) [128/128 BS AVX-16]... DONE
Many salts:     138470 c/s real, 138470 c/s virtual
Only one salt:  135680 c/s real, 135680 c/s virtual

Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
Raw:    14636 c/s real, 14636 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw:    950 c/s real, 950 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short:  465920 c/s real, 465920 c/s virtual
Long:   1316K c/s real, 1316K c/s virtual

Benchmarking: LM DES [128/128 BS AVX-16]... DONE
Raw:    53934K c/s real, 53934K c/s virtual

Benchmarking: generic crypt(3) [?/64]... DONE
Many salts:     216633 c/s real, 216633 c/s virtual
Only one salt:  216844 c/s real, 216844 c/s virtual

Benchmarking: Tripcode DES [48/64 4K]... DONE
Raw:    362752 c/s real, 362752 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    76112K c/s real, 76112K c/s virtual

32 bit XOP

Benchmarking: Traditional DES [256/256 BS XOP]... DONE
Many salts:     2402K c/s real, 2402K c/s virtual
Only one salt:  2300K c/s real, 2300K c/s virtual

Benchmarking: BSDI DES (x725) [256/256 BS XOP]... DONE
Many salts:     84172 c/s real, 84172 c/s virtual
Only one salt:  82329 c/s real, 82329 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    8443 c/s real, 8443 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw:    464 c/s real, 464 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE
Short:  290082 c/s real, 290662 c/s virtual
Long:   918323 c/s real, 918323 c/s virtual

Benchmarking: LM DES [256/256 BS XOP]... DONE
Raw:    31951K c/s real, 31951K c/s virtual

Benchmarking: generic crypt(3) [?/32]... DONE
Many salts:     194342 c/s real, 194342 c/s virtual
Only one salt:  193708 c/s real, 193708 c/s virtual

Benchmarking: Tripcode DES [48/64 4K MMX]... DONE
Raw:    246732 c/s real, 246732 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    82383K c/s real, 82383K c/s virtual

32 bit AVX

Benchmarking: Traditional DES [256/256 BS AVX]... DONE
Many salts:     2583K c/s real, 2583K c/s virtual
Only one salt:  2468K c/s real, 2468K c/s virtual

Benchmarking: BSDI DES (x725) [256/256 BS AVX]... DONE
Many salts:     90265 c/s real, 90265 c/s virtual
Only one salt:  88166 c/s real, 88166 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    8457 c/s real, 8457 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE
Raw:    464 c/s real, 464 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE
Short:  290713 c/s real, 290713 c/s virtual
Long:   924467 c/s real, 924467 c/s virtual

Benchmarking: LM DES [256/256 BS AVX]... DONE
Raw:    33077K c/s real, 33077K c/s virtual

Benchmarking: generic crypt(3) [?/32]... DONE
Many salts:     194246 c/s real, 194246 c/s virtual
Only one salt:  193708 c/s real, 194096 c/s virtual

Benchmarking: Tripcode DES [48/64 4K MMX]... DONE
Raw:    247372 c/s real, 247372 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    82648K c/s real, 82648K c/s virtual

stalkerg ★★★★★
()
Ответ на: комментарий от solardiz

64 bit XOP OpenMP

Benchmarking: Traditional DES [128/128 BS XOP-16]... DONE
Many salts:     18527K c/s real, 2315K c/s virtual
Only one salt:  14247K c/s real, 1781K c/s virtual

Benchmarking: BSDI DES (x725) [128/128 BS XOP-16]... DONE
Many salts:     619315 c/s real, 77414 c/s virtual
Only one salt:  533299 c/s real, 66629 c/s virtual

Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
Raw:    87305 c/s real, 10913 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw:    5539 c/s real, 692 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short:  466329 c/s real, 466329 c/s virtual
Long:   1315K c/s real, 1315K c/s virtual

Benchmarking: LM DES [128/128 BS XOP-16]... DONE
Raw:    48044K c/s real, 6005K c/s virtual

Benchmarking: generic crypt(3) [?/64]... DONE
Many salts:     1302K c/s real, 162863 c/s virtual
Only one salt:  1262K c/s real, 157790 c/s virtual

Benchmarking: Tripcode DES [48/64 4K]... DONE
Raw:    365644 c/s real, 366377 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    67955K c/s real, 68091K c/s virtual

64 bit AVX OpenMP

Benchmarking: Traditional DES [128/128 BS AVX-16]... DONE
Many salts:     16442K c/s real, 2055K c/s virtual
Only one salt:  12792K c/s real, 1599K c/s virtual

Benchmarking: BSDI DES (x725) [128/128 BS AVX-16]... DONE
Many salts:     554717 c/s real, 69443 c/s virtual
Only one salt:  485376 c/s real, 60641 c/s virtual

Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
Raw:    87305 c/s real, 10913 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw:    5537 c/s real, 692 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short:  465725 c/s real, 464793 c/s virtual
Long:   1304K c/s real, 1304K c/s virtual

Benchmarking: LM DES [128/128 BS AVX-16]... DONE
Raw:    43692K c/s real, 5462K c/s virtual

Benchmarking: generic crypt(3) [?/64]... DONE
Many salts:     1303K c/s real, 162945 c/s virtual
Only one salt:  1260K c/s real, 157507 c/s virtual

Benchmarking: Tripcode DES [48/64 4K]... DONE
Raw:    364339 c/s real, 365069 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    66380K c/s real, 66380K c/s virtual

32 bit XOP OpenMP

Benchmarking: Traditional DES [256/256 BS XOP]... DONE
Many salts:     9017K c/s real, 1129K c/s virtual
Only one salt:  7969K c/s real, 994655 c/s virtual

Benchmarking: BSDI DES (x725) [256/256 BS XOP]... DONE
Many salts:     328499 c/s real, 41072 c/s virtual
Only one salt:  295958 c/s real, 37013 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    48947 c/s real, 6110 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32 X2]... DONE
Raw:    4080 c/s real, 509 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE
Short:  290355 c/s real, 290355 c/s virtual
Long:   909772 c/s real, 909772 c/s virtual

Benchmarking: LM DES [256/256 BS XOP]... DONE
Raw:    44315K c/s real, 5540K c/s virtual

Benchmarking: generic crypt(3) [?/32]... DONE
Many salts:     1177K c/s real, 147194 c/s virtual
Only one salt:  1138K c/s real, 142291 c/s virtual

Benchmarking: Tripcode DES [48/64 4K MMX]... DONE
Raw:    247731 c/s real, 247731 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    81033K c/s real, 81033K c/s virtual

32 bit AVX OpenMP

Benchmarking: Traditional DES [256/256 BS AVX]... DONE
Many salts:     9771K c/s real, 1222K c/s virtual
Only one salt:  8257K c/s real, 1032K c/s virtual

Benchmarking: BSDI DES (x725) [256/256 BS AVX]... DONE
Many salts:     344194 c/s real, 43035 c/s virtual
Only one salt:  309039 c/s real, 38649 c/s virtual

Benchmarking: FreeBSD MD5 [32/32]... DONE
Raw:    48849 c/s real, 6106 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32 X2]... DONE
Raw:    4071 c/s real, 509 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE
Short:  290560 c/s real, 290560 c/s virtual
Long:   907212 c/s real, 907212 c/s virtual

Benchmarking: LM DES [256/256 BS AVX]... DONE
Raw:    42572K c/s real, 5322K c/s virtual

Benchmarking: generic crypt(3) [?/32]... DONE
Many salts:     1179K c/s real, 147448 c/s virtual
Only one salt:  1135K c/s real, 141959 c/s virtual

Benchmarking: Tripcode DES [48/64 4K MMX]... DONE
Raw:    247116 c/s real, 247116 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    74637K c/s real, 74637K c/s virtual

uname -a
Linux sagita 3.2.0-gentoo-r1 #1 SMP PREEMPT Sun Jan 8 00:53:13 MSK 2012 x86_64 AMD FX(tm)-8120 Eight-Core Processor AuthenticAMD GNU/Linux

gcc -v
Используются внутренние спецификации.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.6.2/lto-wrapper
Целевая архитектура: x86_64-pc-linux-gnu
Параметры конфигурации: /var/tmp/portage/sys-devel/gcc-4.6.2/work/gcc-4.6.2/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --with-ppl --with-cloog --disable-ppl-version-check --with-cloog-include=/usr/include/cloog-ppl --enable-lto --enable-nls --without-included-gettext --with-system-zlib --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/python --enable-checking=release --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.6.2 p1.3, pie-0.5.0'
Модель многопоточности: posix
gcc версия 4.6.2 (Gentoo 4.6.2 p1.3, pie-0.5.0) 

cat /proc/cpuinfo 
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 21
model           : 1
model name      : AMD FX(tm)-8120 Eight-Core Processor           
stepping        : 2
microcode       : 0x6000609
cpu MHz         : 3600.000
cache size      : 2048 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 16
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 nodeid_msr topoext perfctr_core arat cpb npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bogomips        : 7200.07
TLB size        : 1536 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate [9]
stalkerg ★★★★★
()
Ответ на: комментарий от nu11

компиляция не отнимает личного времени

Компиляция генту может занять личное время только у идиотов, остальные способны занять себя чем-то более полезным, чем созерцание процесса компиляции.

anonymous
()
Ответ на: комментарий от stalkerg

Большое спасибо, очень полезные данные. 256-битный AVX и XOP почему-то сильно тормозит. (Возможно, потому что эти bitwise операции как-бы «floating-point», как 12 лет назад было с первым SSE на Pentium 3, который аналогично на таких операциях подтормаживал ниже MMX'а.) На Sandy Bridge такого нет (для AVX). Придется в 32-битной XOP сборке отказаться от использования 256-бит (перейти на 128), хотя на Sandy Bridge такая виртуальная 256-битность частично компенсировала нехватку количества регистров в 32-битном режиме.

В целом, все остальные результаты чуточку хуже, чем для Core i7-2600 на родной частоте (3.4 GHz базовая, Turbo Boost до 3.5 ... 3.8 GHz). Я надеялся на лучшее. Но и то, что XOP-код в принципе работает и обгоняет AVX (на этом же процессоре), уже радует.

А до разгона какая частота была видна в cpuinfo? Базовые 3.1 GHz? Или один из turbo режимов? Как я понимаю, у FX-8120 официально 3.1 GHz базовая, от 3.4 до 4.0 GHz turbo. Т.е. по идее и без всякого разгона он должен давать 4.0 GHz при использовании одного ядра, 3.4 при использовании всех четырех, если только не перегреется. Верно? Получается вопрос - какие у этого процессора теперь turbo частоты и каким частотам соответствуют полученные результаты?

solardiz
()
Ответ на: комментарий от solardiz

А до разгона какая частота была видна в cpuinfo? Базовые 3.1 GHz? Или один из turbo режимов? Как я понимаю, у FX-8120 официально 3.1 GHz базовая, от 3.4 до 4.0 GHz turbo. Т.е. по идее и без всякого разгона он должен давать 4.0 GHz при использовании одного ядра, 3.4 при использовании всех четырех, если только не перегреется. Верно? Получается вопрос - какие у этого процессора теперь turbo частоты и каким частотам соответствуют полученные результаты?

3.1 и показывал, отловить turbo я так и не смог, если он это делает то делает в фоновом режиме, систему не уведомляя. В Bios вроде turbo включён хотя могу и ошибаться. В целом он у меня не греется.

stalkerg ★★★★★
()
Ответ на: комментарий от solardiz

В целом, все остальные результаты чуточку хуже, чем для Core i7-2600 на родной частоте

Тут я ошибся - сравнивал по памяти. Сейчас посмотрел в таблицу на wiki. Выходит, что DES (XOP код на Bulldozer против AVX на i7-2600, оба в 64-битном режиме) на Bulldozer отстает примерно на 20% (как без OpenMP, так и с ним), но MD5 и Blowfish дают почти ровно такое же быстродействие без OpenMP и на 30% и 15% (соответственно) лучшее на Bulldozer в сборке с OpenMP (все-таки некое подобие 8 ядер имеет место - вот на столько процентов лучше, чем SMT в Sandy Bridge для ALU кода). Правда, надо учесть, что это сравнение с i7-2600 без разгона.

Думаю, преимущество для MD5 пропадет в -jumbo сборке, где есть SSE2 intrinsics (они же AVX если собирать с -mavx) для MD5 - т.е. там Sandy Bridge ускорится сильнее, чем Bulldozer.

solardiz
()
Ответ на: комментарий от solardiz

Думаю, преимущество для MD5 пропадет в -jumbo сборке, где есть SSE2 intrinsics (они же AVX если собирать с -mavx) для MD5 - т.е. там Sandy Bridge ускорится сильнее, чем Bulldozer.

А вам для чего всё это? И что за jumbo сборка?

stalkerg ★★★★★
()
Ответ на: комментарий от stalkerg

3.1 и показывал, отловить turbo я так и не смог

Да, это по cpuinfo может быть не видно. На i7-2600K, я встречал там 1.6 GHz, 3.4 GHz, 3.5 GHz - как повезет - но на сколько-нибудь длительные benchmark'и это никак не влияло (очевидно, частота повышалась до какой можно).

solardiz
()
Ответ на: комментарий от stalkerg

А вам для чего всё это?

Да вот начал этот проект около 16 лет назад и с тех пор поддерживаю. %-) Люди пользуются, для разных целей - в том числе вот и в качестве benchmark'а. Для чего это мне - это полу-философский вопрос, на который я мог бы дать ответы разной степени серьезности и в разном количестве, но здесь это не в тему.

И что за jumbo сборка?

Ветка John the Ripper, развиваемая с более активным участием сообщества - в ней есть код, который я по какой-либо причине или просто так пока не включил в основную ветку. В том числе вот SSE2 intrinsics для MD5. Есть там и много других полезностей, включая поддержку не-хешей - таких вещей как SSH-ключи, ZIP, RAR.

solardiz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.