+ -
当前位置:首页 → 问答吧 → 使用OpenMP如何让指定让处理器做相应的任务

使用OpenMP如何让指定让处理器做相应的任务

时间:2011-11-26

来源:互联网

我想将一个数组分块,每个处理器处理几行,那应该如何设定让某个处理器处理几行呢?这个编译指导语句应该如何写

作者: avrilvv521   发布时间: 2011-11-26

首先必须明确的是,如果用parallel for的话,OMP 运行库自动生成的线程,在每个处理器/核上运行的程序代码是完全一样的, 区别只是在于原先的数组会根据下标变量分成几块,然后分配到不同的处理器/核上运行。

至于如何分配,缺省是平均分配,两个核就二分,四个核就各自按照顺序拿四分之一。 如果出现不同核负载不均衡,计算量不均的现象,可以考虑采用动态的分配方式 

对于程序员而言,这个分配过程是透明的,一般情况下你只可以控制数据分配到某个OMP线程,而不是具体的物理的处理器/核。

当然,一些OMP 运行库的实现还可以支持处理器绑定(affinity),可以提高数据的局部性。但只能指定某个OMP线程运行在某个指定的操作系统提供的逻辑处理器/核 (OS Proc )上。 关于Intel OMP RTL 更详细的例子,可以参考 Intel Software Network: http://software.intel.com/en-us/articles/using-kmp_affinity-to-create-openmp-thread-mapping-to-os-proc-ids/ , 还有

http://software.intel.com/en-us/articles/intel-thread-affinity-environment-variable-for-openmp/

作者: intel_iclifort   发布时间: 2011-11-29

热门下载

更多