Очень важно настроить код на целевую аппаратную архитектуру.Однако, если у вас нет много времени и ресурсов, это невозможно сделать для широкого спектра доступных систем.
Оптимизация следует правилу 80-20.Вы получаете 80% выгоды при 20% усилий.Кроме того, ваши доходы начнут уменьшаться.
Вот процесс, которому я следую: 1) Получить лучший компилятор для вашей целевой архитектуры.Иногда GNU может быть лучшим компилятором для конкретной платформы, не удивляйтесь.2) Прочитайте раздел «Оптимизация кода» для компилятора.3) Определите правильные флаги, чтобы сгенерировать лучший код для целевой платформы.Однако убедитесь, что вы проверяете результаты кода на каждом уровне оптимизации, который вы пробуете.Более высокие уровни оптимизации будут влиять на правильность кода.4) Убедитесь, что все необходимые библиотеки оптимизированы для этой системы.Например, библиотеки математики, библиотеки BLAS и т. Д. 5) Обратите особое внимание на аппаратные функции платформы, такие как SSE (SIMD), количество ядер или ускорителей.ВАМ может потребоваться изменить код или дать подсказки компилятору, чтобы оптимизировать код для этих функций.
Вы должны будете сделать это для каждой целевой платформы.К этому времени вы должны увидеть максимальную выгоду с минимальными усилиями.
Если вам нужно увеличить производительность, почти всегда требуется переписать код, чтобы убедиться, что аппаратные функции полностью задействованы.
Нет, для этого нет книг.Наиболее близкими являются «руководства по оптимизации», которые обычно предоставляются поставщиком бесплатно (IBM Redbooks, Intel, AMD, Cray).
Пример: support.amd.com/us/Processor_TechDocs/25112.PDF http://www.intel.com/products/processor/manuals/ http://www.ibm.com/developerworks/wikis/download/attachments/137167333/Power6_optimization.pdf?version=1
Это наиболее допустимые ресурсы для этих платформ.Вы должны стремиться найти такие ресурсы для вашей целевой платформы.