作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有这部分代码。
#pragma omp parallel for num_threads(4)
for (it = 0; it < itime; it++){
for (i = 0; i < N; i++){
do something1..
for (j = 0; j < N; j++){
do something2..
}
}
do something3..
}
带有 it
计数器的 for 循环迭代 20 次 (0-19)。N
的值此时并不重要。发生的情况是迭代“分布”在 4 个线程上。
thread #0 gets [0,1,2,3,4]
thread #1 gets [5,6,7,8,9]
thread #2 gets [10,11,12,13,14]
thread #3 gets [15,16,17,18,19]
我想做的就是按照我自己的顺序传播迭代,例如:线程 #0 [0,4,8,10,16]
等...
有什么方法可以使用 openmp 实现此目的吗?
最佳答案
这是一个简单的解决方案。
int numbers[] = { 0,4,8,10,16,1,2,3,5,6,7,9,11,12,13,14,15,17,18,19 };//define as u wish
#pragma omp parallel for num_threads(4)
for (int it = 0; it < 20; it++) {
//cout <<"Thread "<< omp_get_thread_num() << " gets :" << numbers[it] << endl;
int num = numbers[it];//use this instead of "it"
}
这可能不是最好的解决方案。
关于c - openMP 线程和迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50306944/
我是一名优秀的程序员,十分优秀!