LINUX.ORG.RU

На одной и той же системе -march=native и -march=amdfam10 отличаются - почему?

 , ,


1

1

Пытаюсь посмотреть, какие флаги будут активированы в случае -march=native и -march=amdfam10. Почему флаги native и amdfam10 дают настолько разные результаты на одном и том же процессоре?

http://stackoverflow.com/questions/5470257/how-to-see-which-flags-march-nativ...

# gcc -march=native -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p'
-march=amdfam10 -mcx16 -msahf -mno-movbe -mno-aes -mno-pclmul -mpopcnt -mabm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -mno-sse4.2 -mno-sse4.1 -mlzcnt -mno-rtm -mno-hle -mno-rdrnd -mno-f16c -mno-fsgsbase -mno-rdseed -mprfchw -mno-adx -mfxsr -mno-xsave -mno-xsaveopt --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=1024 -mtune=amdfam10 -fno-strict-overflow -fPIE -fstack-protector-all -fstack-check=specific

Видно, что первый вариант уже включает в себя march=amdfam10. Тогда почему следующий вывод такой куцый?

# gcc -march=amdfam10 -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p'
-fno-strict-overflow -march=amdfam10 -fPIE -fstack-protector-all -fstack-check=specific

Дело в том, что мне надо указывать конкретную архитектуру в -march для distcc, и native не подойдет.

Если ты не заметил, у тебя там в выхлопе ещё 42 параметра, кроме -march=.

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

Заметил, в том и вопрос, почему в другом выхлопе такого нет, ведь процессор один и тот же, на одной и той же системе. Я предполагаю, что и выводы должны совпадать.

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

В amdfam10 входит не всё, что умеет твой проц. Так понятнее? Копируй выхлоп -march=native полностью.

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

Это понятно, но не понятно, почему в хэндбуке и других разделах wiki в Gentoo рассказывают о возможности указания как -march=native, так и -march=<конкретное_название>, как будто это равносильно. При этом не упоминается тот факт, что набор флагов, применяемых компилятором, будет _настолько_ отличаться.

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

В amdfam10 входит не всё, что умеет твой проц.

Хотя у него есть несколько флагов, которые, видимо, не входят по умолчанию в -march=amdfam10 и конкретные размеры линий кэша, большая часть флагов у него -mno-*. Есть разве какой-то смысл в этих -mno-* при указании -march и -mtune?

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 1)

Проще говоря -march=amdfam10 лишь создаст бинарник который гарантированно на этом fam10 запустится, -march=native же его ещё и безопасно оттюнингует. Потому то собственно -march=native и является рекомендуемой по умолчанию опцией.

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

Хотя у него есть несколько флагов, которые, видимо, не входят по умолчанию в -march=amdfam10

/thread

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

собственно -march=native и является рекомендуемой по умолчанию опцией

это в каком же школодистре так рекомендуют делать?

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

меня-то устраивает, но ни в одном дистре, что я видел, не рекомендуют так делать.

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

Не верю что ты не понимаешь разницу между настройками по умолчанию и опциональной ручной оптимизацией, короч прекращай троллить.

haku ★★★★★
()

Тогда почему следующий вывод такой куцый?

Потому что у тебя куча флагов уже включена в состав amdfam10 и не надо их ещё раз указывать
Сравни:

gcc -Q -v --help=target -march=native
и
gcc -Q -v --help=target -march=amdfam10

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от haku

Below is a list of CFLAGS which are to be considered «safe» for the given processors. These are the settings that should be used, especially when unsure which CFLAGS the processor needs.

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