并行计算共享存储并行程序设计.pptVIP

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * 与X3H5 相比,OpenMP提供了更灵活的功能特性以控制数据环境。例如:程序中的REDUCTION( + , sum)子句支持归约操作,它为每一个线程创建了归约变量sum的私有拷贝。按照归约操作符+,私有拷贝初始化为0。每个线程计算产生一个私有结果。 在PARALLEL DO的末端,运算符 + 将归约变量sum更新为sum的原先值与私有结果的组合结果值。 OpenMP 的自动检测特性是DEFAULT子句。子句DEFAULT (PRIVATE) 将并行区段中的所有变量指定为私有的,除非它已为其他显式SHARED 子句所重写。 * * * * * * * * * * * * int pthread_mutex_trylock ( pthread_mutex_t *mutex ) :当mutex已锁,则例程返回EBUSY;当mutex还未锁时,则该例程对其加锁并随后返回0。 * * * * * * * * * * * * * * * * * * * * * * 多数并行系统对障碍同步没有直接的硬件支持。 * * * * * * * * * * * C语言中的预处理器很像这里的孤立行制导。 如:C预处理器中 #define A 1000 #include “文件名” 告诉编译程序用 “文件名” 副本取代该行, 查当前目录。 #include 文件名 告诉编译程序用 “文件名” 副本取代该行, 查标准目录。 * * * * * * * 当一分离线程终止时,它就被撤消并释放它拥有的资源 (主)线程 : : pthread_create( ); : pthread_create( ); : pthread_create( ); : : 线程 终止 线程 终止 线程 终止 说明一个分离线程的参数 Pthreads 中的基本线程管理原语: 1、int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*routine) (void*), void * arg) 功能:创建一个属性为 attr,参数为 arg 的新线程 thread,新线程执行例程 routine。 2、 void pthread_exit (void *status) 功能:终止并退出当前线程。 3、int pthread_join(pthread_t thread, void **status) 功能:等待指定线程 thread 的终止。 4、pthread_t pthread_self ( void ) 功能:返回调用线程的 ID 值。 线程安全的例程 如果一个系统调用(或库例程)同时被多个线程调用总能得到正确的结果,则称该系统调用为线程安全的。 标准 I/O 操作就是线程安全的。如:当存在着多个打印线程时,不会因此使被打印的内容交错在一起。 当某个系统调用不是线程安全的时候,则需要特殊的处理来保证线程的安全性。 如:对共享数据的访问需使用临界段。 Pthreads中对线程间的同步和共享数据的访问提供了很多方法: 互斥锁 信号量 条件变量 … 跳过此部分 Pthreads实现锁机制的例程 在Pthreads中是利用互斥锁变量来实现锁机制的。 pthread_mutex_lock(mutex1); 临界段 pthread_mutex_unlock(mutex1); 如果一个线程到达互斥锁处,并且发现它被锁住,则该线程等待互斥锁打开。 若有多于一个的线程等待锁打开,当锁打开时系统将选择一个线程进入临界段。 系统仅允许对互斥锁上锁的线程进行开锁操作。 Pthreads 中的互斥锁例程 功能 含义 int pthread_mutex_init ( pthread_mutex_t *mutex, pthread_mutexattr_t *attr ) 用指定的属性attr初始化互 斥锁mutex int pthread_mutex_destroy ( pthread_mutex_t *mutex ) 撤消一个互 斥锁 mutex int pthread_mutex_lock ( pthread_mutex_t *mutex )

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档