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() 获取当前线程编号。我的结果如下:

     

  • 相关阅读:
    hdu3709(数位dp)
    2012天津E题
    2012天津C题
    hdu1754(splay)
    赤裸裸的splay平衡树
    hdu(预处理+线段树)
    uva11922(强行用rope替代spaly)
    lightoj 1370 欧拉函数
    poj3294 出现次数大于n/2 的公共子串
    poj2774 后缀数组2个字符串的最长公共子串
  • 原文地址:https://www.cnblogs.com/make217/p/5305771.html
Copyright © 2011-2022 走看看