OpenMP并行计算

1. OpenMP简介

  • 通过多线程实现并行
  • 开放式的多处理框架 Open Multi-Process
  • 统一内存访问 : 多个CPU共享同一片内存,pthread/OpenMP在CPU上执行,属于统一内存访问
  • 非统一内存访问: 每个CPU有单独的Memory, 如MPI,通过总线通信的方式获取内存信息

OpenMP与PThread

  • pthread需要明确指定每个线程的行为,openmp只需简单的生命代码段需要并行即可
  • pthread依赖pthreads库,能被任意C编译器使用,openmp依赖openmp库,还依赖编译器支持某些特定操作
  • pthread可通过编写代码明确线程执行的过程,而openmp难以对底层的线程交互进行编程

Fork与Join

  • Fork: 由主线程创建出一系列并行化执行的子线程(派生)
  • Join: 多个线程完成工作之后,进行同步与终止,回到主线程执行(合并)

2. OpenMP使用

  • OpenMP提供基于指令的共享内存API
  • 编译器需要支持pragma指令提示的语句编译
  • 在系统中加入预处理指令一般是用来允许不符合C语言基本规划的行为

OpenMP parallel 指定并发线程数目

  • 编译器指令: #pragma omp parallel num_thre
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值