每次嘗試打印出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