【发布时间】:2011-08-01 14:17:27
【问题描述】:
我的问题是我无法使用 openMP 进行并行化。
我的系统: Ubuntu 11.4 Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
编译器: g++ 版本:4.5.2 带有标志 -fopenmp
通过这段代码,我看到只有一个线程:
int nthreads, tid, procs, maxt, inpar, dynamic, nested;
// Start parallel region
#pragma omp parallel private(nthreads, tid) {
// Obtain thread number
tid = omp_get_thread_num();
// Only master thread does this
if (tid == 0)
{
printf("Thread %d getting environment info...\n", tid);
// Get environment information
procs = omp_get_num_procs();
nthreads = omp_get_num_threads();
maxt = omp_get_max_threads();
inpar = omp_in_parallel();
dynamic = omp_get_dynamic();
nested = omp_get_nested();
// Print environment information
printf("Number of processors = %d\n", procs);
printf("Number of threads = %d\n", nthreads);
printf("Max threads = %d\n", maxt);
printf("In parallel? = %d\n", inpar);
printf("Dynamic threads enabled? = %d\n", dynamic);
printf("Nested parallelism supported? = %d\n", nested);
}
}
因为我看到以下输出:
Number of processors = 4
Number of threads = 1
Max threads = 4
In parallel? = 0
Dynamic threads enabled? = 0
Nested parallelism supported? = 0
有什么问题?
有人可以帮忙吗?
【问题讨论】:
-
你设置了OMP_NUM_THREADS环境变量了吗?
-
嘿!不我没有。但是在做了 omp_set_num_threads(2);我得到以下输出:处理器数 = 4 线程数 = 1 最大线程数 = 2 并行? = 0 启用动态线程? = 0 支持嵌套并行? = 0 线程数仍为 1。