Оптимизация C++ compiliation для определенной машины

Существует интересная часть Debian GNU/Linux FAQ, посвященный этому вопросу. В особенности выбор зависит от

  • соображения безопасности/устойчивости
  • экспертные знания пользователя
  • потребность в более новых версиях программного обеспечения
  • поддержка новых аппаратных средств

Я хотел бы указать на следующий отрывок от той страницы:

  • Стабильный горное тело. Это не повреждается.

  • Тестирование повреждений менее часто, чем Нестабильный. Но когда это повреждается, требуется много времени для вещей, которые будут исправлены. Иногда это могло быть днями, и это могли время от времени быть месяцы.

  • Нестабильные изменения много, и это может повредиться в любой точке. Однако фиксирует, исправлены во многих случаях за несколько дней, и это всегда имеет последние релизы программного обеспечения, упакованного для Debian.

3
27.09.2011, 10:02
3 ответа

Использовать -mtune. -march используется для определения позволенной системы команд, тогда как -mtune должен использоваться для настройки производительности кода (как всегда, посмотрите man gcc). В зависимости от точного типа ЦП Вы могли бы также рассмотреть значения кроме core2. И если Вы используете недавнюю версию GCC (по крайней мере, 4.4, Я думаю), Вы могли бы лучше всего использовать native вместо этого.

7
27.01.2020, 21:10
  • 1
    Как я могу сказать, какой тип ЦП я имею? Я пытался использовать собственный переключатель, но компилятор не знает это... –  Yotam 27.09.2011, 19:54
  • 2
    На системной стороне, cat /proc/cpuinfo даст Вам достаточно информации. Используя это, можно погуглить для -march/-mtune рекомендации. Но более оптимальный вариант мог бы быть, чтобы просто обновить Ваш GCC и использование -march=native -mtune=native. –  rozcietrzewiacz 27.09.2011, 20:28
  • 3
    , обновляющий gcc, не является опцией, так как я не корень машины (или кластер). –  Yotam 27.09.2011, 20:43
  • 4
    у меня есть 4 основных процессора с: model name : Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz. Я пытался использовать corei7, но он не скомпилирует. gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html –  Yotam 27.09.2011, 20:49
  • 5
    Лучше сначала считайте то, к чему Вы обращаетесь. Источник, который Вы связали, четко дает понять, что соответствует компиляторам (GCC) версия 4.7.0. Если native не работает, этому должно быть несколько лет, значительно старше, чем процессор. Попросите у администратора обновления при реальной необходимости в такой главной производительности. –  rozcietrzewiacz 27.09.2011, 21:28

Лучшая вещь состоит в том, чтобы прочитать руководство для Вашего компилятора и посмотреть на опции оптимизации. Обратите внимание, что некоторая оптимизация не даст Вам очень, таким образом, необходимо будет протестировать код после того, как это было скомпилировано. Обратите внимание, что можно заметить ошибки в коде в зависимости от того, какие опции Вы выбираете.

При использовании ICC можно удостовериться в некоторых #pragma опциях в коде, что параллелизировали некоторые циклы.

1
27.01.2020, 21:10

Если Ваши вычисления включают много векторов, можно хотеть рассмотреть Intel Math Library. Проект я иду для работы, использует ее, и они клянутся ею.

1
27.01.2020, 21:10

Теги

Похожие вопросы