每次尝试打印出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')吗?你的编译指示被忽略了吗?为什么在编译指示('\#pragma')之前有反斜杠? 'm'的大小是多少? – 2015-02-09 07:41:26