Каждый раз, когда я пытаюсь распечатать threadID
, и независимо от того, где я поставил оператор печати, он всегда печатает threadId = 0
. Похоже, что создается только один поток, но почему? Я не вижу, что я делаю неправильно. Кроме того, я проверил и num_t = 16
. Я также убедился, что при компиляции я использую -fopenmp
.Получение openmp для создания нескольких потоков
omp_set_num_threads(num_t);
#pragma omp parallel shared(a,b,c) private(i,j,k) num_threads(num_t)
{
#pragma omp for schedule(static)
for (int i = 0; i < m; i++)
{
std::cout << omp_get_thread_num()<< "\n";
for (int j = 0; (j < n); j++)
{
c[i + j*m] = 0.0;
for (int k = 0; k < q; k++)
{
c[i+j*m] += a[i*q + k]*b[j*q + k];
}
}
}
}
Вы просмотрели предупреждения компилятора (например, с помощью '-Wall')? Не игнорируется ли ваше прагматическое положение? Почему у вас есть обратная косая черта перед прагмой ('\ # прагма')? Какой размер 'm'? –