【发布时间】:2017-01-16 00:40:33
【问题描述】:
我是 OpenMP 的新手,并且 我面临这样的情况:
int someArray[ARRAY_SIZE];
//outer loop
for(int i = 0; i < 100; ++i) {
//inner loop
for(int j = 0; i < ARRAY_SIZE; ++i) {
//calculaations in someArray (every cell can be calculated separately)
}
//some code that needs to be run by only one thread - for example sorting someArray
}
我想让内部循环并行,但我尝试过的想法(下面的代码)无效(单线程可以比多线程更快地做事)。我认为在这里反复创建多个线程需要很多时间。
我的错误解决方案:
int someArray[ARRAY_SIZE];
//outer loop
for(int i = 0; i < 100; ++i) {
#pragma omp parallel num_threads(THREADS_NUMBER) shared(someArray)
{
//inner loop
#pragma omp for
for(int j = 0; i < ARRAY_SIZE; ++i) {
//calculaations in someArray (every cell can be calculated separately)
}
}
//some code that needs to be run by only one thread - for example sorting someArray
}
你知道如何优化这个任务吗?
【问题讨论】:
标签: c multithreading parallel-processing synchronization openmp