Автоматический выбор оптимизации компилятора gcc с использованием модели логистической регрессии - PullRequest
1 голос
/ 13 февраля 2012

Я делаю проект, основанный на выборе вариантов оптимизации для компилятора gcc, используя алгоритм под названием LRM (модель логистической регрессии), основанный на этом документе ... http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5066672.

В этом алгоритме первый шаг заключается в создании обучающих данных из всех доступных комбинаций параметров оптимизации (в настоящее время около 65) путем компиляции и выполнения программы для каждой комбинации. Затем используйте эти данные, чтобы быстрее найти лучший набор параметров оптимизации для других кодов.

Может ли кто-нибудь помочь мне понять, как я должен хранить все эти данные. Я планировал создать двумерный массив и затем сохранить массив в двоичном файле. Есть лучший способ сделать это? Пожалуйста, помогите. И как мне продолжить использовать LRM, чтобы найти лучший набор из данных обучения. Любые предложения также будут приветствоваться.

Thankyou.

1 Ответ

1 голос
/ 12 июня 2012

Это двумерный массив, с одним столбцом для каждой опции и одним столбцом для результата (время выполнения стандартного тестового примера). Поскольку имеется 65 столбцов, параметры могут быть включены или выключены, есть 2 ^ 65 возможных комбинаций, что равно 36893488147419103232. Сортируйте его по столбцу результата, и это оптимальный набор параметров!

Я думаю, я бы пошел с файлом CSV ....

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

Но это смехотворно большое количество комбинаций опций!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...