OpenMP API 用户指南:https://docs.oracle.com/cd/E57201_01/html/E58572/docinfo.html#scrolltoc
一、OpenMP任务处理模型
1、OpenMP 任务执行
显式任务使用 task 构造指定,该构造可放置在程序中的任一位置。只要线程遇到 task 构造,就会生成一个新任务
允许线程在任务调度点暂停执行任务区域,以便执行另一任务
与任务关联的代码仅执行一次。如果代码从始至终都必须由相同的线程执行,则任务为绑定 (tied) 任务。如果代码可由多个线程执行,即由不同的线程执行任务代码的不同部分,则任务为非绑定 (untied) 任务
OpenMP 规范还介绍了隐式任务的概念。隐式任务是由隐式并行区域生成的任务,或是在执行期间遇到 parallel 构造时生成的任务。在后一种情况中,每个隐式任务的代码都是 parallel 构造内的代码。每个隐式任务分配给组中不同的线程,且为绑定 (tied) 任务。
2、 OpenMP 任务类型
1)不延迟 (undeferred) 任务是指相对于生成任务,不会延迟执行的任务
2)与不延迟 (undeferred) 任务不同,包括 (included)

本文深入探讨OpenMP任务处理模型,包括显式和隐式任务、任务类型如不延迟、合并和最终任务。通过递归斐波纳契数列计算的例子,展示了taskwait指令的使用和如何正确处理堆栈数据引用。
最低0.47元/天 解锁文章
1406

被折叠的 条评论
为什么被折叠?



