Advertisement
Guest User

Untitled

a guest
Mar 27th, 2013
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <omp.h>
  4.  
  5. static void delay(int loops)
  6. {
  7.   long i;
  8.   for (i = loops; i >= 0 ; i--)
  9.     ;
  10. }
  11.  
  12. int main(void)
  13. {
  14.   unsigned long long loops_per_sec = 1;
  15.   unsigned long long ticks;
  16.   int result = -1;
  17.   printf("Calibrating delay loop.. ");
  18.   fflush(stdout);
  19.   unsigned long long allMips = 0;
  20.   int threads = 1;
  21. #pragma omp parallel firstprivate(loops_per_sec,ticks)
  22.   for (;(loops_per_sec <<= 1);){
  23.     threads = omp_get_num_threads();
  24.     ticks = clock();
  25.     delay(loops_per_sec);
  26.     ticks = clock() - ticks;
  27.     if (ticks >= CLOCKS_PER_SEC) {
  28.       loops_per_sec = (loops_per_sec / ticks) * CLOCKS_PER_SEC;
  29.       printf("\nok - %Lu.%02Lu BogoMips per thread",
  30.          loops_per_sec/500000*threads,
  31.          (loops_per_sec/5000*threads) % 100
  32.          );
  33.       allMips += loops_per_sec/500000*threads;
  34.       result = 0;
  35.       break;
  36.     }
  37.   }
  38.   #pragma omp end parallel
  39.   printf("\nresult: %Lu BogoMips\nthreads: %d\n",allMips,threads);
  40.   if (result != 0)
  41.     printf("\nfailed\n");
  42.   return result;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement