同步结构 ●同步结构Synchronization Constructs 避免线程竞争,其包含的代码同一时刻只能有一个线程 critical 执行 障碍同步:用在并行域内,所有线程执行到barrier都要 barrier 停下等待,直到所有线程都执行到barrier,然后再继续 往下执行 确保一个特殊存储单元只能原子更新,即不允许多线程 atomic 同时去写,只能用于单一赋值语句等特殊情况 确保线程存储的临时视图与共享存储中的数据一致,并 flush 且保证一个变量在共享存储中的读/写顺序 ordered 指定并行域的循环按迭代顺序执行 taskwait 可配合task结构使用,创建任务调度点 http://math.ecnu.edu.cn/-jypan 16
http://math.ecnu.edu.cn/~jypan 16 同步结构 同步结构 Synchronization Constructs critical 避免线程竞争,其包含的代码同一时刻只能有一个线程 执行 barrier 障碍同步:用在并行域内,所有线程执行到 barrier 都要 停下等待,直到所有线程都执行到 barrier,然后再继续 往下执行 atomic 确保一个特殊存储单元只能原子更新,即不允许多线程 同时去写,只能用于单一赋值语句等特殊情况 flush 确保线程存储的临时视图与共享存储中的数据一致,并 且保证一个变量在共享存储中的读/写顺序 ordered 指定并行域的循环按迭代顺序执行 taskwait 可配合 task 结构使用,创建任务调度点
数据环境 ●数据环境指令Data Environment Constructs 将一个或多个私有变量声明为全局的,即在 多个并行域中使用时,保留私有变量在上次 threadprivate(list) 并行域中的值; 可以与copyin子句联合使用,将主线程的 值广播给其他线程。 http://math.ecnu.edu.cn/~jypan 17
http://math.ecnu.edu.cn/~jypan 17 数据环境 数据环境指令 Data Environment Constructs threadprivate(list) 将一个或多个私有变量声明为全局的,即在 多个并行域中使用时,保留私有变量在上次 并行域中的值; 可以与 copyin 子句联合使用,将主线程的 值广播给其他线程