没有OpenMP’#pragma’语句,总运行时间= 507秒
使用OpenMP’#pragma’语句指定1个内核,总运行时= 117秒
使用OpenMP’#pragma’语句指定2个内核,总运行时间= 150秒
使用OpenMP’#pragma’语句指定3个内核,总运行时间= 157秒
使用OpenMP’#pragma’语句指定4个核心,总运行时间= 144秒
我想我不知道为什么注释我的openmp行使程序在1个线程之间没有openmp和1个线程WITH openmp的速度减慢.
我正在改变的是:
//#pragma omp parallel for shared(segs) private(i,j,p_hough) num_threads(1) schedule(guided) and... #pragma omp parallel for shared(segs) private(i,p_hough) num_threads(1,2,3,4) schedule(guided)
无论如何,如果任何人有任何想法为什么会发生这种情况,请让我知道!
感谢任何帮助,
布雷特
我使用num_threads(1),num_threads(2)等.
经进一步调查,结果是根据代码中是否包含“计划(指导)”行,我的结果不一致.
– 当我使用计划(指导)行时,我生成最快的解决方案,不管线程数.
– 当我使用默认调度程序时,我的结果显着变慢和不同的值
– 随着线程增加,时间表(指导)的改进不会得到改善
– 没有计划(指导)我增加线程获得改进
我想我没有找到一个足够的描述,对于什么时间表(指导)对我来说,我明白,它试图拆分循环,以便最时间密集的迭代首先发生,这应该有最少的影响一个线程等待其他人完成迭代的时间量.
看来对于我的〜900迭代循环,当我使用schedule(引导),我只处理〜200次迭代,在那里没有进度(指导)我正在处理所有的900次迭代.有什么想法吗?
解决方法
原文地址:https://www.jb51.cc/c/113541.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。