Что такое OpenMP? - PullRequest
       16

Что такое OpenMP?

6 голосов
/ 19 августа 2010

Что такое общее описание OpenMP?

В статье Википедии говорится, что "OpenMP (Open Multi-Processing) - это интерфейс прикладного программирования (API), который поддерживает многоплатформенностьМногопроцессорное программирование с общей памятью на C, C ++ и Fortran на многих архитектурах, включая платформы Unix и Microsoft Windows. Оно состоит из набора директив компилятора, библиотечных подпрограмм и переменных среды, которые влияют на поведение во время выполнения ».Что?

Как это соотносится с другими подходами к параллелизму, такими как потоки, пулы потоков и кража работы?

1 Ответ

5 голосов
/ 19 августа 2010

Это набор расширений, которые предоставляют C / C ++ возможность выполнять определенные части кода параллельно, без явного управления (создания, уничтожения, назначения) потоков.

Это в основном абстрагирует вас от сложности управления вашими потоками, позволяя вам декларативно выполнять определенные части вашего кода параллельно. Пример кода всегда поможет:

# pragma omp parallel \
  shared ( n, x, y ) \
  private ( i ) \
  reduction ( + : xdoty )

# pragma omp for

  for ( i = 0; i < n; i++ )
  {
    xdoty = xdoty + x[i] * y[i];
  }
...