c++ флаги - Компиляция с помощью g ++ с использованием нескольких ядер





с++ компилятор (6)


Нет такого флага, и если один из них работает против философии Unix, чтобы каждый инструмент выполнял только одну функцию и выполнял ее хорошо. Процессы создания нереста концептуально являются задачей системы сборки. Вероятно, вы ищете флаг -j (jobs) для GNU make, a la

make -j4

Или вы можете использовать pmake или аналогичные параллельные системы.

Быстрый вопрос: что такое флаг компилятора, позволяющий g ++ генерировать несколько экземпляров самого себя, чтобы быстрее скомпилировать большие проекты (например, 4 исходных файла за один раз для многоядерного процессора)?

Большое спасибо.




make сделает это за вас. Исследуйте ключи -j и -l на странице руководства. Я не думаю, что g++ параллелизуем.




Я не уверен в g ++, но если вы используете GNU Make, тогда make -j N (где N - количество создаваемых потоков) может заставить make запускать задания multple g ++ в одно и то же время (так долго так как файлы не зависят друг от друга).




Вы можете сделать это с помощью make - с gnu make это флаг -j (это также поможет на однопроцессорной машине).

Например, если вы хотите выполнить 4 параллельных задания:

make -j 4

Вы также можете запустить gcc в трубе с помощью

gcc -pipe

Это приведет к конвейерным этапам компиляции, что также поможет удержать ядра.

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




distcc также может использоваться для распространения компиляции не только на текущей машине, но и на других машинах фермы, на которой установлена ​​distcc.




Вы также можете быть заинтересованы в богатой литературе по предмету алгоритмической отказоустойчивости. Это включает в себя старое назначение: напишите сортировку, которая правильно сортирует ее вход, когда число постоянных сравнений будет терпеть неудачу (или немного более злая версия, когда асимптотическое число неудачных сравнений масштабируется как log(n) для n сравнений).

Место для начала чтения - статья Хуанга и Абрахама 1984 года « Точность отказоустойчивости на основе алгоритмов для матричных операций ». Их идея смутно похожа на гомоморфные зашифрованные вычисления (но это не совсем то же самое, поскольку они пытаются обнаружить / исправить ошибки на рабочем уровне).

Более поздним потомком этой статьи являются Bosilca, Delmas, Dongarra и Langou « Алгоритмическая отказоустойчивость, применяемая для высокопроизводительных вычислений ».





c++ compiler-construction makefile g++ multicore