zoukankan      html  css  js  c++  java
  • Visual Studio 2015 OpenMP: (1) 初涉江湖

    环境:Windows 10 + Visual Studio 2015 Community

    第一步:新建win32 console project

    第二步:新建cpp文件,填入类似hello world的代码:

     1 #include <iostream>
     2 #include <time.h>
     3 #include <omp.h>
     4 
     5 void sumintegrers()
     6 {
     7     int a = 0;
     8     for (int i = 0; i < 1e8; ++i)
     9     {
    10         ++a;
    11     }
    12 }
    13 
    14 
    15 int main()
    16 {
    17     clock_t t1 = clock();
    18 
    19 #pragma omp parallel for
    20     for (int i = 0; i < 8; ++i)
    21     {
    22         sumintegrers();
    23     }
    24 
    25     clock_t t2 = clock();
    26 
    27     std::cout << "time: " << t2 - t1 << std::endl;
    28 }

    第三步,打开工程属性->C/C++下Language页面,将Open MP Support状态修改为Yes (/openmp).

    即可。在我的电脑上运行时间是200ms.

    对于这个例子, #include <openmp.h> 可以不要。

    此外,还有一个很好玩的可以测试线程执行顺序的代码:

    1 int NUMofProcs = omp_get_num_procs();
    2 fprintf(stdout, "Number of Processors: %3d
    ", NUMofProcs);
    3 
    4 #pragma omp parallel for
    5     for (int i = 0; i < NUMofProcs; ++i)
    6     {
    7         fprintf (stdout, "ID of the curret thread: %d
    ", omp_get_thread_num());
    8         fprintf(stdout, "%5d
    ", i);
    9     }

    其中, omp_get_num_procs() 获取计算单元总个数, omp_get_thread_num() 获取当前线程编号。我的结果如下:

     

  • 相关阅读:
    【H5】01 入门 & 概述
    【Mybatis + Spring】 Mybatis
    【Mybatis】Bonus01 笔记资料
    【Spring】06 Aop切面功能
    【Spring】05 注解开发
    【Spring】04 注解实现自动装配
    【Spring】03 XML配置
    【Spring】02 过程分析
    【Mybatis】11 注解的使用
    【Mybatis】10 实现分页 & 分页插件
  • 原文地址:https://www.cnblogs.com/make217/p/5305771.html
Copyright © 2011-2022 走看看