openmp 并行 速度更慢_c – 简单的OpenMP并行循环比串行计算慢

我是并行化的新手,我希望我不浪费任何人的时间.我已经问了一些已经使用过openMP的朋友,但他们无法帮助我.所以我猜我的情况对其他人来说也很有意思,至少在教育方面是这样,我试着把它记录得尽可能好.这是两个例子,其中一个100%来自Tim Mattson在youtube上的教程,另一个以某种方式简化,但我认为仍然是一种标准方法.在这两种情况下,计算时间与几次迭代的线程数量成比例,但是对于非常大量的迭代,计算时间似乎收敛到相同的数量.这当然是错误的,因为我希望计算时间在几次迭代中是相似的,并且真正针对大量迭代进行了优化.

这里有两个例子,都是用编译的

g -fopenmp main.cpp -o out

线程模型:posix

gcc版本4.8.4(Ubuntu 4.8.4-2ubuntu1~14.04),在Ubuntu 14.04上

并使用以下标题:

#include

#include

#include

#include

#include

using namespace std;

#define NUMBER_OF_THREADS 2

static long num_steps = 1000000000;

现在,我正在使用的计算机上的核心数量是8(intel i7),所以在2到4之间的任何线程数我都希望在计算时间方面带来一些很大的优势.

例1:

int main() {

omp_set_num_threads(NUMBER_OF_THREADS);

double step = 1.0/(double) num_steps, pi=0.0;

auto begin = chrono::high_resolution_clock::now();

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值