《多核程序设计》PART6:OpenMP这种可移植的多线程解决方案,究竟有何独特之处?
- 内容介绍
- 文章标签
- 相关推荐
本文共计498个文字,预计阅读时间需要2分钟。
在OpenMP中,任务循环调度和分块对内存利用有较好的情况。尽管在负载均衡方面可能对同等的负载平衡策略有利,但也可能对访问性能不利。任务循环调度和分块策略+对内存利用。
OpenMP中的任务循环调度和分块对于内存利用比较好的情况下对于负载平衡可能是不利的同样有利于负载平衡的策略也有可能对访存的性能不利OpenMP中的任务循环调度和分块
对于内存利用比较好的情况下对于负载平衡可能是不利的同样有利于负载平衡的策略也有可能对访存的性能不利。因此在对性能优化时必须在优化内存利用和优化负载平衡之间进行折中通过对性能的测量找到能够得到最佳结果的方法。
在OpenMP for结构中使用schedule子句将循环调度和分开信息传达给编译器和运行时库
#pragma omp for schedule (kind [, chunk-size])
如果指定可选的chunk-size块大小则该参数必须是不随循环变化的正整数常量或整数表达式。
注调整块大小时要特别注意因为它可能对性能带来负面影响。随着块大小的减小线程用于从任务队列中获取任务的时间增加结果使访问任务队列的开销增加而降低性能并有可能抵消负载平衡带来的性能提升。
OpenMP的四种调度方案
调度类型 描述 static( 默认不指定块大小 将所有循环划分成大小相等的块或在循环迭代次数不能整除线程数与块大小的乘积时划分成尽可能相等大小的块。 dynamic 使用一个内部队列当线程可用时为其分配由块大小所指定的一定数量的循环迭代。线程完成分配后将从任务队列头取出下一组迭代。块默认大小为1.
注这种调度需要额外的开销
guided 与dynamic类似但块大小刚开始较大然后逐渐减少从而减少了线程用于访问任务队列的时间。chunk可指定所使用的块大小的最小值默认为1 runtime 在运行时使用OMP_SCHEDULE环境变量来确定使用上述三种调度策略中的某一种。More
《多核程序设计》
OpenMP中的任务调度blog.csdn.net/drzhouweiming/archive/2007/10/26/1844762.aspx
本文共计498个文字,预计阅读时间需要2分钟。
在OpenMP中,任务循环调度和分块对内存利用有较好的情况。尽管在负载均衡方面可能对同等的负载平衡策略有利,但也可能对访问性能不利。任务循环调度和分块策略+对内存利用。
OpenMP中的任务循环调度和分块对于内存利用比较好的情况下对于负载平衡可能是不利的同样有利于负载平衡的策略也有可能对访存的性能不利OpenMP中的任务循环调度和分块
对于内存利用比较好的情况下对于负载平衡可能是不利的同样有利于负载平衡的策略也有可能对访存的性能不利。因此在对性能优化时必须在优化内存利用和优化负载平衡之间进行折中通过对性能的测量找到能够得到最佳结果的方法。
在OpenMP for结构中使用schedule子句将循环调度和分开信息传达给编译器和运行时库
#pragma omp for schedule (kind [, chunk-size])
如果指定可选的chunk-size块大小则该参数必须是不随循环变化的正整数常量或整数表达式。
注调整块大小时要特别注意因为它可能对性能带来负面影响。随着块大小的减小线程用于从任务队列中获取任务的时间增加结果使访问任务队列的开销增加而降低性能并有可能抵消负载平衡带来的性能提升。
OpenMP的四种调度方案
调度类型 描述 static( 默认不指定块大小 将所有循环划分成大小相等的块或在循环迭代次数不能整除线程数与块大小的乘积时划分成尽可能相等大小的块。 dynamic 使用一个内部队列当线程可用时为其分配由块大小所指定的一定数量的循环迭代。线程完成分配后将从任务队列头取出下一组迭代。块默认大小为1.
注这种调度需要额外的开销
guided 与dynamic类似但块大小刚开始较大然后逐渐减少从而减少了线程用于访问任务队列的时间。chunk可指定所使用的块大小的最小值默认为1 runtime 在运行时使用OMP_SCHEDULE环境变量来确定使用上述三种调度策略中的某一种。More
《多核程序设计》
OpenMP中的任务调度blog.csdn.net/drzhouweiming/archive/2007/10/26/1844762.aspx

