OpenMP对于嵌套循环应该添加多少个parallel for

     一个原则是:应该尽量少的使用parallelfor, 因为parallel for也需要时间开销。即:

    (1)如果外层循环次数远远小于内层循环次数,内层循环较多时,将parallel for加在内层循环。

示例代码:

int a=0;
int b=0;
inline void openmpTest2(int thread_num)
{
    for(int i=0;i<100;i++)
	{
	   #pragma omp parallel for num_threads(thread_num)
	   for(int j=0;j<1000000000;j++)
	   { 
		a++;
	   }
	   #pragma omp parallel for num_threads(thread_num)
	   for(int j=0;j<1000000000;j++)
	   {
		b++;
	   }
	}
}

    4个线程,运行时间是:89ms。

(2)否则将parallel for 加在最外层循环,一般情况都是这样。二者在实际情况可对比性能进行选择。

示例代码:

int a=0;
int b=0;
inline void openmpTest1(int thread_num)
{ 
   	
    #pragma omp parallel for num_threads(thread_num)
    for(int i=0;i<1000000000;i++)
	{
	 for(int j=0;j<1000000000;j++)
	   {
		a++;
	   }
	 for(int j=0;j<1000000000;j++)
	   {
		b++;
	   }
	}
}

    4个线程,运行时间是:119ms。如果将以上三个for循环前都加上parallel for,性能极差。

备注:不显示设置线程数,默认的线程数为本机能够并行的最大线程数,即omp_get_max_threads()返回值;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海说

深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符

  本文的内容其实可以成为汇编语言的基础,因为汇编语言大部分时候是在操作一些我们平时开发看不到的东西,因此本文的目的就是搞清楚,汇编语言都是在操作些什么东西。或...

13940
来自专栏程序员宝库

Java 异常处理的 9 个最佳实践

在 Java 中,异常处理是个很麻烦的事情。初学者觉得它很难理解,甚至是经验丰富的开发者也要花费很长时间决定异常是要处理掉和抛出。 所以很多开发团队约定一些原则...

35890
来自专栏有趣的django

1.python简介

简介 1、python语言介绍 python的创始人:Guido Van Rossum 2、python是一门什么样的语言 编程语言主要从以下几个角度进行分类:...

43450
来自专栏文大师的新世界

Java面试

自己经验有限,篇幅也有限,这里只是记录一些比较容易混淆或有难度和一些易忘的技术知识点,里面有一些也是面试阿里经常会被问到的问题,但是不保证答案全部正确,有错误的...

27130
来自专栏CSDN技术头条

知名互联网公司 Java 开发岗面试知识点解析

互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试 +1 轮 HR 面试。

17620
来自专栏java一日一条

java提高篇之异常(上)

在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失。同样的道理,计算机的世界也是不完美的,...

12620
来自专栏海说

深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer14.html

15350
来自专栏彭湖湾的编程世界

【javascript】异步编年史,从“纯回调”到Promise

异步和分块——程序的分块执行 一开始学习javascript的时候, 我对异步的概念一脸懵逼, 因为当时百度了很多文章,但很多各种文章不负责任的把笼统的描述混杂...

23880
来自专栏青玉伏案

设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)

今天是五.四青年节,祝大家节日快乐。看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火。这两道菜大部分人都应该吃过,特别是醋溜土豆丝,...

18690
来自专栏北京马哥教育

Python入门教程:超详细1小时学会Python

1.Hello world 安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。 我们写下...

47050

扫码关注云+社区

领取腾讯云代金券