zoukankan      html  css  js  c++  java
  • VS2010+OpenMP的简单使用

    OpenMP是把程序中的循环操作分给电脑的各个CPU处理器并行进行。比如说我要循环运行100次,我的电脑有两个处理器,那OpenMP就会平均分给两个处理器并行运行,每个处理器运行50次。
    使用方法
    1. 在工程中的解决方案资源管理器中,工程右键——属性——配置属性——C/C++——语言,把其中的OpenMP支持设置为是。

    2. 在代码中添加头文件:

    #include <omp.h>

    3. 在需要并行的for循环代码上添加代码

    #pragma omp parallel for
    for(int i=0;i<50;i++)
    {
    }

    另外,用int num=omp_get_num_procs();获取可以使用的处理器个数。
    结果
    在四个处理器的电脑上,未使用之前,每个处理器的使用率大概在35%左右,使用后,使用率可以达到90%多,运行时间减少42.66%。
    在八个处理器的电脑上,未使用之前,每个处理器的使用率大概在30%左右,使用后,使用率可以达到100%左右,运行时间减少76.63%。
    注意
    1. 使用OpenMP后,循环运行不是按顺序运行的,比如在循环中打印i的值,就会发现打印出来的值不是按顺序打印的。
    2. 使用OpenMP时,循环的次数必须是确定的。
    3. for循环中的操作必须是确定的,也就是说不论i值是多少,都可以确切运行循环中的操作,比如不能出现a[i]=a[i-1]+a[i+1]之类的操作。
    4. 注意循环中的内存处理,不要有冲突。

  • 相关阅读:
    java学习阶段一 方法和文档注释
    java学习阶段一 二维数组
    java学习阶段一 一维数组
    java学习阶段一 循环结构
    java学习阶段一 选择结构
    java学习阶段一 运算符
    oracle学习笔记:修改表空间文件位置
    oracle学习笔记:重建临时表空间
    oracle等待事件1:Failed Logon delay等待事件
    oracle数据库删除归档日志
  • 原文地址:https://www.cnblogs.com/gloria-zhang/p/9045613.html
Copyright © 2011-2022 走看看