使用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/
至于如何分配,缺省是平均分配,两个核就二分,四个核就各自按照顺序拿四分之一。 如果出现不同核负载不均衡,计算量不均的现象,可以考虑采用动态的分配方式
对于程序员而言,这个分配过程是透明的,一般情况下你只可以控制数据分配到某个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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28