Оптимизирующие препроцессоры для FORTRAN и C

Применение препроцессоров дает выигрыш в производительности в среднем от 8 до 18 процентов.

Препроцессоры KAP и VAST для компилятора FORTRAN реструктурируют исходный код на языке FORTRAN с целью более эффективного использования ресурсов процессоров семейства семейство POWER, POWER2 и PowerPC и иерархической структуры памяти. Существует также версия препроцессора KAP для программ на C. Препроцессоры выполняют оптимизацию управления памятью, арифметические преобразования, встраивание, межпроцедурный анализ и другие операции по повышению производительности приложений на FORTRAN и C.

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

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

  • В большинстве случаев программы, обработанные препроцессором, работают так же или даже более эффективно, чем их эквиваленты, настроенные вручную, причем это достигается без существенных затрат времени программиста. Для применения препроцессоров не требуется хорошо разбираться в системной архитектуре и приемах настройки, обсуждаемых в этой книге.
  • В некоторых случаях удается эффективно оптимизировать код просто за счет правильного выбора опций препроцессора в командной строке и добавления небольшого числа директив в исходный код программы. Если применение препроцессора не дает значительного эффекта, изучите его распечатки и определите, какие фрагменты кода препятствуют оптимизации.
  • Некоторые преобразования, выполняемые препроцессорами, приводят к значительному увеличению объема исходного кода. Хотя такое расширение повышает эффективность программы, выполнение его вручную сопряжено с высокой вероятностью ошибок и опечаток, ухудшением читаемости исходного кода и усложнением дальнейшей работы с программой.
  • Препроцессоры могут оптимизировать код с учетом особенностей конкретной архитектуры, даже отличной от платформ семейства семейство POWER, POWER2 и PowerPC. На основе одной версии исходного кода вы можете создать несколько различных версий для моделей компьютеров семейство POWER, POWER2 и PowerPC, а также для систем с другими характеристиками кэша и процессора.
  • Препроцессоры часто позволяют улучшить настроенный вручную код. Хотя вручную вы можете добиться такой же эффективности настройки, что и с помощью препроцессора, попытка выполнить вручную некоторые сложные преобразования почти наверняка приведет к ошибкам.