OpenMP的三种线程与核绑定方式

之前看到OpenMP入门教程比较多,但是核绑定这部分比较少。把核绑定的语句先写在这里。

/*omp的三种核绑定方式*/
 #pragma omp parallel proc_bind(master)
 #pragma omp parallel proc_bind(close)
 #pragma omp parallel proc_bind(spread)
 /*有些服务器只支持以下这种语句*/
 #pragma omp proc_bind(master)
 #pragma omp proc_bind(close)
 #pragma omp proc_bind(spread

具体理解请移步:Oracle® Solaris Studio 12.4:OpenMP API 用户指南
或者OpenMP Application Programming Interface Examples
下面个人补充一些对于核绑定的理解

假设有一个处理器有4个核,共有两个处理器,核分别记为p0,p1,p2…p7

spread

这是一种比较稀疏、均匀的绑定方式。如果有M个线程,N个处理器,那么在并行线程开始时首先会从串行线程运行的那个核开始分布,每个核上运行M/N个线程。
如果串行线程在p1上运行,而并行线程有4个线程,则分别分布在
p1、p3、p5、p7。
如果如果串行线程在p0上运行,而并行线程有16个线程,则会分别分布在p0上有线程0和线程1,p1上运行线程2和线程3,p3上运行线程4和线程5,p4上运行线程6和线程7,…,p7上运行线程14和线程15。

close

这是一种紧密的绑定方式。这种方式优先分配与串行线程相临近的核。当并行线程数超过核数时,分配方式与spread相近。
如果串行线程在p1上运行,进入并行线程时有4个线程,则分别分布在p1,p2,p3,p4。

master

master的意思是继承串行线程部分的核绑定,即全部由运行串行线程的那个核来运行所有的线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值