2008-09-26 2 views
14

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

+0

Вы имеете в виду высокую пропускную способность обработки в больших серверах или сокращения потребления ресурсов в малом (ПК или меньше) машин? – 2008-09-26 23:08:40

+0

Я имею в виду большие серверы – axs6791 2008-09-29 02:16:13

ответ

8

практически весь код HPC, о котором я слышал, предназначен для решения систем линейных уравнений или БПФ. Heres некоторые ссылки, чтобы начать Вас по крайней мере, в библиотеках, используемых:

  • BLAS - стандартный набор процедур для линейной алгебры - вещи, как умножение матриц
  • LAPACK - стандартный набор выше уровня линейных процедур алгебры - вещи, как LU decomp.
  • ATLAS - оптимизированная реализация BLAS
  • FFTW - оптимизированная реализация FFT
  • PBLAS - BLAS для распределенных процессоров
  • SCALAPACK - распределенная реализация LAPACK
  • MPI - библиотеки коммуникации для распределенных систем.
  • PETSc - масштабируемый нелинейный и линейные решатели (пользователь расширяемого интерфейс гораздо выше)
1

Посмотрите на The ADAPTIVE Communication Environment (ACE). Это библиотека шаблонов и объектов для высокопроизводительных приложений на C++. Он имеет отличные кросс-платформенные примитивы для нарезания резьбы, сетей и т. Д.

2

Первое, что может быть прочитано около MPI(Message Passing Interface), которое является стандартом де-факто в межкомпонентных узлах HPC.

2

Trilinos набора библиотек и пакетов предлагают широкий спектр промежуточных программных библиотек для HPC, включая редкие, итерационные линейные решатель; нелинейные решатели; собственные решатели; ODE & Интеграторы DAE, включая анализ чувствительности; оптимизация (как инвазивный, так и черный ящик); интерфейсы конечных элементов; сетчатые интерфейсы; переобуславливатели; и т. д. Все эти пакеты разработаны с использованием довольно современных методов C++ (есть API-интерфейсы Python, а также некоторые C и Fortran). С большим успехом использовались в очень больших масштабах параллельные (5000+ CPU) симуляции исключительных последствий (дизайн ядерного оружия). Эти пакеты предлагают большой набор возможностей, которые намного выше, чем BLAS и т. Д.

2

Несмотря на то, что 14 лет, новаторская работа Expression Templates по-прежнему считается одной из самых исключительных работ на C++ за многие годы. Быстро, эффективно, безопасно ... Я использовал методы, и они действительно замечательные.

Edit: В случае выше ссылка остается неработающей, вот alternate reference for Expression Templates. Эта статья DDJ цитирует оригинальную работу Veldhuizen.

4

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

(Нет: я не работаю для Intel, но счастливым своим заказчиком.)

1

Независимо от того, что вы пишете, и сколько вы разрабатываете для производительности с самого начала, шансы довольно хорошие, это принесет пользу от настройки производительности. Обычно чем больше программа, тем больше она приносит пользу. THIS - простой и эффективный способ сделать эту настройку. Он основан на «глубокой выборке», методе, который дает точность диагностики при децентрализации измерения.

Вы также можете посмотреть на http://en.wikipedia.org/wiki/Performance_analysis#Simple_manual_technique

2

Отъезд Eigen Vector/Matrix library. Api очень изящна, и полученные программы быстро растут (из-за явной векторизации для архитектур SSE2).