Facebook
From Filip Wicha, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 318
  1. #include <iostream>
  2. #include <omp.h>
  3. #include <time.h>
  4. #include <chrono>
  5. #include <iomanip>
  6.  
  7. int main()
  8. {
  9.         double accuracy;
  10.         long numberOfLoops = 10;
  11.         std::cout << "Set accuracy: \n";
  12.         std::cin >> accuracy;
  13.         std::cout << " \n";
  14.         double harmon = 0;
  15.         long minTime = INFINITY;
  16.         long maxTime = 0;
  17.         long sq_time = 0;
  18.         long mt_time = 0;
  19.  
  20.         auto start = std::chrono::high_resolution_clock::now();
  21.         auto finish = std::chrono::high_resolution_clock::now();
  22.  
  23.  
  24.         //Sequenial
  25.         std::cout << "Sequential:\n";
  26.         {
  27.                 harmon = 0;
  28.                 start = std::chrono::high_resolution_clock::now();
  29.                 ////////////////////////
  30.                 for (double i = 1; i <= accuracy; i++)
  31.                 {
  32.                         harmon += (1 / (i));
  33.                 }
  34.                 ////////////////////////
  35.                 finish = std::chrono::high_resolution_clock::now();
  36.                 long currentTime = std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count();
  37.                 sq_time += currentTime;
  38.         }
  39.  
  40.         std::cout << "Time  = " << sq_time / numberOfLoops << "ns\n";
  41.         std::cout << "Harmonic number  =        " << std::setprecision(30) << harmon << "\n\n";
  42.         harmon = 0;
  43.  
  44.  
  45.         minTime = INFINITY;
  46.         maxTime = 0;
  47.  
  48.         //Parallel
  49.         std::cout << "Parallel:\n";
  50.         {
  51.                 harmon = 0;
  52.                 start = std::chrono::high_resolution_clock::now();
  53.                 ////////////////////////
  54. #pragma omp parallel for
  55.                 for (double i = 1; i <= accuracy; i++)
  56.                 {
  57.                         harmon += (1 / (i));
  58.                 }
  59.                 ////////////////////////
  60.  
  61.  
  62.                 finish = std::chrono::high_resolution_clock::now();
  63.                 long currentTime = std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count();
  64.                 mt_time += currentTime;
  65.         }
  66.  
  67.         std::cout << "Avg time  = " << mt_time / numberOfLoops << "ns\n";
  68.         std::cout << "Harmonic number  =        " << std::setprecision(30) << harmon << "\n\n";
  69.         harmon = 0;
  70.  
  71.  
  72.         std::cin.ignore(2);
  73.         return 0;
  74. }