Автоматический выбор вариантов оптимизации GCC с использованием генно-взвешенного генетического алгоритма - PullRequest
3 голосов
/ 06 ноября 2011

Я делаю проект для автоматической обработки параметров оптимизации компилятора gcc без указания программиста.Я решил использовать алгоритм Traveling salesman и GA для выбора наилучшей оптимизации, основанной на скорости выполнения.Это приложение будет принимать проблему (код C ++) в качестве входных данных и выполнять комбинацию перестановок для всех доступных параметров оптимизации в компиляторе GCC и хранить время, необходимое для выполнения.

Теперь возможно ли это запрограммировать в командной консолиСценарий?или мне нужно программировать на самом С ++?

Вот ссылка на базовый документ.http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4625477

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Проект Milepost Ctuning работал именно над этим (Григорий Фурсин, Альберт Коэн, оба из INRIA), используя методы машинного обучения для настройки оптимизации GCC.

Вы можете использовать GCC MELT расширения, чтобы сделать так же.

0 голосов
/ 06 ноября 2011

Я думаю, что это категорически доказывает давнее предложение о том, что у GCC слишком много вариантов.

Что касается ответа на ваш конкретный вопрос, я думаю, вы собираетесь сделать что-то, что, в конце концов,не имеет большого значения.Одна из основных проблем заключается в том, что ваш полученный ген будет полезен только для конкретной архитектуры, среды и версии gcc.

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

Я не имею в виду дождь на вашем параде или что-то еще, это, безусловно, интересное техническое / интеллектуальное упражнение.Я написал бы программу на C / C ++, которая выводит скрипт / командную строку оболочки, затем запускает результирующий скрипт / командную строку, рассчитывает время и сохраняет время, необходимое для выполнения , и правильность результата .Некоторые оптимизации могут привести к тому, что определенный код будет выполняться по-разному, что приведет к неверному результату.Убедитесь, что ваш тест-кейс выводит числовые данные, чтобы вы могли рассчитать, насколько ваша оптимизированная программа приблизилась к ожидаемому результату.

Здесь ваши тест-кейсы никогда не пройдут достаточно, и ваша фитнес-функцияэто будет главным образом догадки (поскольку это будет во многом зависеть от того, какие другие процессы выполнялись на машине в то время и что они делали).Это займет долго время, чтобы развиться.

...