你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 专家论坛
OpenMP的多核并行程序设计(五)
 

上面代码段使用循环分块技术创建了无循环迭代相关的循环m,并且预先计算出x[49]y[49]的初值,这样就可以正确地将循环并行化了。因此,在并行化的过程中,必须仔细分析循环之间的数据相关性,通过改写程序来消除数据相关。

34 数据共享

在多线程程序中,确定哪些数据需要被共享,哪些数据为私有数据是非常重要的,这对程序的正确性有很大的影响。在使用OpenMP时,开发人员应该告诉编译器哪一片存储区域应当在多个线程间共享,哪一片区域应该保持私有。当某存储单元被标识为共享,那么所有线程都能够访问该单元。但是,如果某存储单元被标识为私有,那么每个线程都拥有该变量的一个副本,可以私有地访问。当循环退出执行后,这些私有副本将变成未定义状态。

OpenMP使用数据作用域子句来指定变量的共享属性,分别是sharedprivatefirstprivatelastprivate

(1)shared子句,显式地定义一个变量的作用域是共享的。

(2)private子句,显式地定义一个变量的作用域是私有的。

(3)firstprivatelastprivate子句,分别对私有变量进行初始化操作和终结操作,firstprivate将串行的变量值复制到同名的私有变量中,且在每一个线程开始执行的时候初始化一次。而lastprivate则将并行执行中的最后一次循环的私有变量值复制到同名的串行变量中。

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089