Сообщение об ошибке OpenMP - PullRequest
1 голос
/ 22 июля 2010

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

номер потока: 0

номер потока: 1

Неустранимая пользовательская ошибка 1002: цикл for выполняется с несовместимыми параметрами между потоками

Моя программа выполняет следующие действия:

    omp_set_dynamic(0);
    omp_set_num_threads(2);

    int i = 0;
    int start_pos   = 0;
    int end_pos     = 0;

#pragma omp parallel default(none) private(i, start_pos, end_pos)
    {
        int nThreadNum = omp_get_thread_num();
        printf("thread number: %d\n", nThreadNum);
        start_pos   = 0;
        end_pos     = (number_of_model_points / 2 + 1);
        if (nThreadNum != 0) {
            start_pos   = (number_of_model_points / 2) + 1;
            end_pos     = (number_of_model_points);
        }

#pragma omp for
        for(i = start_pos; i < end_pos; i++) {
                      ...some code here...
        }
}

В чем здесь проблема?Пожалуйста, исправьте меня, если я допустил ошибку.

1 Ответ

1 голос
/ 07 августа 2010

Так почему же есть дополнительная прагма для цикла for? Вы уже сделали свои процессы. Если вы действительно хотите снова разветвляться (не делайте этого, пожалуйста!), Тогда «i» нужно снова установить в приватное состояние. Однако я думаю, что вы просто хотели бы удалить прагму "omp for".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...