OpenMP编程学习笔记七
来源:互联网 发布:上知教育怎么样 编辑:程序博客网 时间:2024/05/22 17:05
在单核多线程程序中,对临界变量以及临界区的访问,是atomic方式的。在OpenMP中,由于是多个thread共同负责完成一个任务,所以必然有访问操作(回写)
同一个变量的情形,OpenMP引入atomic directive应对这种情形。
测试代码:
void testAtomic()
{
omp_set_num_threads( 4 );
int sum = 0;
#pragma omp parallel for
for(int i = 1; i <= 100; i++)
#pragma omp atomic
sum += i;
printf("sum = %d/n", sum);
}
测试结果:
sum = 5050
如果不使用atomic
void testAtomic()
{
omp_set_num_threads( 4 );
int sum = 0;
#pragma omp parallel for
for(int i = 1; i <= 100; i++)
//#pragma omp atomic
sum += i;
printf("sum = %d/n", sum);
}
那么结果是不对的,而且每次运行的结果可能不同。这种现象的原因跟单核多线程临界变量是相同的。这样看来,单核多线程的理论可以帮助更好更快的
理解OpenMP。
- OpenMP编程学习笔记七
- OpenMP编程学习笔记一
- OpenMP编程学习笔记二
- OpenMP编程学习笔记三
- OpenMP编程学习笔记四
- OpenMP编程学习笔记五
- OpenMP编程学习笔记六
- OpenMP编程学习笔记八
- OpenMP编程学习笔记九
- OpenMP Tutorial学习笔记(2)OpenMP编程模型
- OpenMP学习笔记
- openmp学习笔记
- OpenMP学习笔记
- OpenMP学习笔记
- OpenMP学习笔记
- OpenMP学习笔记<一>
- 多核编程学习笔记之OpenMP(一)
- OpenMP Tutorial学习笔记(1)OpenMP介绍
- Struts2中使用FreeMarker充当表现层
- OpenBootPROM的获得和使用!
- 梦想的勇气——把握今天 可口可乐前总裁唐纳德•R. 基奥在艾默里大学毕业典礼的演讲
- 从文档的编写问题引发的一些思考
- 转载被无数人转载的文章
- OpenMP编程学习笔记七
- 聪明来自学习和生活--西奥多·鲍威尔
- 数据库语法
- 诚信:信息技术时代的成功之道--艾伦·格林斯潘
- 找啊、找啊,找工作!!!
- Eval绑定多个字段问题asp.net
- Android移植: wifi设计原理(源码分析) [嵌入式]
- 自动更改发布的版本号
- 使用QT Creator开发qt应用程序