【并行计算】用OpenMP语句处理循环间的依赖关系
题目描述
如何通过两个线程实现并行加速下方循环体
1 | for (i = 2; i < 20; i++) |
提示:通过将循环分解为多个循环,使各循环间不存在这样的依赖关系。
做题分析
可以将该循环按奇偶数转化为两个循环:
// 偶数
a[2]=a[0]+4
a[4]=a[2]+4
a[6]=a[4]+4
......
// 奇数
a[3]=a[1]+4
a[5]=a[3]+4
a[7]=a[5]+4
......
于是就拆解成了如下两个循环:
1 | for (i = 2; i < 20; i = i+2) |
最终代码
1 |
|
头文件中:
用
<stdio.h>
时搜索的顺序:系统目录–>环境变量目录–>用户自定义目录
用
"stdio.h"
时搜索的顺序:用户自定义目录–>系统目录–>环境变量目录
至于这区别带来的影响就是效率问题。如果一个你自己定义的头文件,你用<>来包含,那么搜索这个头文件时,将会先从系统目录查找。其实这个头文件可能就在你的工程目录下,但是还是要把系统目录搜索一遍,这样,自然就降低效率了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 百里飞洋!
若存在错误或不当之处,还望兄台不吝赐教,期待与您交流!
评论