Необходимая ссылка: Аппаратная архитектура и улучшение производительности [HPC / Параллельные вычисления] - PullRequest
0 голосов
/ 25 апреля 2011

Существует несколько способов / методов для повышения производительности приложений HPC. Одним из методов является точная настройка приложения на основе аппаратной архитектуры. Этот вид тонкой настройки в основном выполняется на многоядерной архитектуре. Чтобы использовать этот метод, нужно действительно понимать базовую аппаратную архитектуру, такую ​​как память, количество сокетов, количество ядер на сокет, кэш L1 / L2, GFlops и т. Д. *

Несмотря на то, что эти технические термины выглядят знакомыми, у меня все еще нет четкого понимания того, что именно это означает с точки зрения производительности приложения.

Может кто-нибудь предложить хорошее место / книгу, откуда я могу понять аппаратную архитектуру с точки зрения производительности.

1 Ответ

3 голосов
/ 06 мая 2011

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

Оптимизация следует правилу 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

Это наиболее допустимые ресурсы для этих платформ.Вы должны стремиться найти такие ресурсы для вашей целевой платформы.

...