Поделиться через


A.23 Примеры директивы ordered

Можно иметь разделах упорядоченные кратным with a for задана ordered предложение. В первом примере noncompliant поскольку api-интерфейсы определяет следующее:

"Итерация цикла with a for конструкция не должна выполнять эти же ordered директива несколько раз, и она не должна выполняться несколько ordered директива". (См. Раздел 2.6.6 на странице 22)

В этом noncompliant примере выполняются все итерации 2 приказанных раздела:

#pragma omp for ordered
for (i=0; i<n; i++) 
{
    ...
    #pragma omp ordered
    { ... }
    ...
    #pragma omp ordered
    { ... }
    ...
}

Следующий пример показывает цикл, совместимый с for с более чем одним упорядоченным разделе:

#pragma omp for ordered
for (i=0; i<n; i++) 
{
    ...
    if (i <= 10) 
    {
        ...
        #pragma omp ordered
        { ... }
    }
    ...
    (i > 10) 
    {
        ...
        #pragma omp ordered
        { ... }
    }
    ...
}