#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <cmath>
#include <omp.h>
#include "timer.h"
int array[100000];
int number;
int overall;void fill ( )
{
srand (time (NULL));
for (int i=0; i<100000; i++)
{
array[i] = rand()%10;
}
}void countOMP ( )
{
int i; omp_set_dynamic (0);
omp_set_num_threads (number); #pragma omp parallel for reduction(+:overall)
for (i=0; i<100000; i++)
{
if (array[i] == 3)
{
overall++;
}
}
}void count ( )
{
int i;
for (i=0; i<100000; i++)
{
if (array[i] == 3)
{
overall++;
}
}
}
int main (int argc, char** argv)
{
int i, j;
timer watch;
float total=0.0f;
number = i = 0; for (j=0; j<100000; j++)
{ fill ( );
overall = 0; watch.start ();
count ( );
watch.stop (); if (j>1000 && j<99000)
{
total += watch.read ();
}
}
printf ("%i\t%.3f\n", number, total/99000.0f); for (i=1; i<17; i++)
{
total = 0.0f;
number = i;
for (j=0; j<100000; j++)
{ fill ( );
overall = 0; watch.start ();
countOMP ( );
watch.stop (); if (j>1000 && j<99000)
{
total += watch.read ();
}
}
printf ("%i\t%.3f\n", number, total/99000.0f);
} return 0;
}