У меня следующая проблема:
В приведенном ниже коде я жду такое же количество итераций, но это не так. Часто у меня 45 итераций (ожидаемое количество), иногда 67, иногда 23 итерации. Как работает #pragma omp parallel for collapse(2)
, а может я неправильно использовал #pragma omp critical
?
#include <iostream>
#include <omp.h>
#include <vector>
int main() {
std::vector<int> vec(45);
int k = 0;
#pragma omp parallel for collapse(2)
for (int i = 0; i < 10; ++i) {
for (int j = i + 1; j < 10; ++j) {
auto tmp = big_calc();
#pragma omp critical
vec[k++] = tmp;
}
}
return 0;
}