求大神指点,点进来看看,关于检查代码错误,有福利!

l22990500 2013-06-22 04:06:27
1: #include <stdio.h>
2: #include <omp.h>
3: static long num_steps = 10000 * 4;
4: double step;
5: double gsum1;
6: double gsum2;
7:
8: void SafeAdd(double sum1, double sum2, omp_lock_t &lock1,omp_lock_t &lock2 )
9: {
10: // lock gsum1 and update
11: omp_set_lock( &lock1 );
12: gsum1 += sum1;
13: // lock gsum2 and update
14: omp_set_lock( &lock2 );
15: gsum2 += sum2;
16: omp_unset_lock( &lock2 );
17: omp_unset_lock( &lock1 );
18:}
19:
20:int main()
21:{
22: int i;
23: double x1,x2;
24: omp_lock_t lock1, lock2;
25: gsum1=0.0;
26: gsum2=0.0;
27:
28: omp_init_lock(&lock1);
29: omp_init_lock(&lock2);
30: printf(“Calculating Pi ...\n”);
31: step = 1.0/(double) num_steps;
32: for (i=0;i< num_steps; i+=4)
33: {
34: double sum1,sum2;
35: #pragma omp parallel sections
36: {
37: #pragma omp section
38: {
39: // calculate first bar
40: x1 = (i+ 0.5)*step;
41: x1*=x1;
42: sum1 = 4.0/(1.0+x1);
43:
44: // calculate second bar
45: x2 = (i+ 1.5)*step;
46: x2*=x2;
47: sum2 = 4.0/(1.0+x2);
48: SafeAdd(sum1,sum2,lock1,lock2);
49: }
50: #pragma omp section
51: {
52: // calculate third bar
53: x1 = (i+ 2.5)*step;
54: x1*=x1;
55: sum1 = 4.0/(1.0+x1);
56:
57: // calculate fourth bar
58: x2 = (i+ 3.5)*step;
59: x2*=x2;
60: sum2 = 4.0/(1.0+x2);
61: SafeAdd(sum1,sum2,lock2,lock1);
62: }
63: }
64: }
65:
66: // calc value of pi
67: double pi = step * (gsum1+gsum2);
68: printf(“pi: %2.21f\n”,pi);
69: omp_destroy_lock( &lock1 );
70: omp_destroy_lock( &lock2 );
71:}
这样一份代码,有木有人帮忙用Inspector xe检测一下错误啊
小弟感激不尽,若有人帮忙,必有福利送上!
...全文
138 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧