原文地址:http://blog.csdn.net/augusdi/article/details/8807541
这是里把OpenMP常用的数据环境construct用代码示例的方法写出来了,主要包括private,firstprivate,lastprivate和copyin。注释部分对这几种construct作用和区别描述已经很详细了,这里就补多说,相信演示代码会有更好的效果。
下面是程序的输出结果:
- --------------------------------private--------------------------------
- threadnum = 0, px = 1000
- threadnum = 2, px = 1003
- threadnum = 0, px = 1001
- threadnum = 3, px = 1004
- threadnum = 1, px = 1002
- 串行 threadnum = 0, px = 100
- --------------------------------firstprivate--------------------------------
- threadnum = 0, fpx = 100
- threadnum = 0, fpx = 101
- threadnum = 2, fpx = 105
- threadnum = 0, fpx = 103
- threadnum = 2, fpx = 111
- threadnum = 3, fpx = 107
- threadnum = 3, fpx = 115
- threadnum = 1, fpx = 103
- threadnum = 1, fpx = 107
- 串行 threadnum = 0, fpx = 100
- --------------------------------lastprivate--------------------------------
- threadnum = 0, lpx = 1000
- threadnum = 1, lpx = 1003
- threadnum = 0, lpx = 1001
- threadnum = 1, lpx = 1004
- threadnum = 0, lpx = 1002
- threadnum = 3, lpx = 1007
- threadnum = 3, lpx = 1008
- threadnum = 2, lpx = 1005
- threadnum = 2, lpx = 1006
- 串行 threadnum = 0, lpx = 1008
- --------------------------------copyin parallel first--------------------------------
- threadnum = 0, cpx = 1000
- threadnum = 1, cpx = 100
- threadnum = 3, cpx = 100
- threadnum = 2, cpx = 100
- 串行 cpx=1000
- --------------------------------copyin parallel second--------------------------------
- copyin,threadnum = 1, original cpx = 1000
- after change,threadnum = 1, copyin: cpx = 1
- copyin,threadnum = 3, original cpx = 1000
- after change,threadnum = 3, copyin: cpx = 3
- copyin,threadnum = 2, original cpx = 1000
- copyin,threadnum = 0, original cpx = 1000
- after change,threadnum = 2, copyin: cpx = 2
- after change,threadnum = 0, copyin: cpx = 0
- 串行 cpx=0
- --------------------------------copyin parallel third--------------------------------
- threadnum = 0, cpx = 0
- threadnum = 1, cpx = 1
- threadnum = 3, cpx = 3
- threadnum = 2, cpx = 2
- 串行 cpx=0