Exp 3 HPC
Exp 3 HPC
Implement Min, Max, Sum and Average operations using Parallel Reduction
1. max.c
#include <stdio.h>
#include <omp.h>
int main()
{
double arr[10];
omp_set_num_threads(4);
double max_val=0.0;
int i;
for( i=0; i<10; i++)
arr[i] = 2.0 + i;
#pragma omp parallel for reduction(max : max_val)
for( i=0;i<10; i++)
{
printf("thread id = %d and i = %d \n", omp_get_thread_num(),i);
if(arr[i] > max_val)
{
max_val = arr[i];
}
}
printf("\nmax_val = %f", max_val);
}
Output:
#include <stdio.h>
#include <omp.h>
int main()
{
double arr[10];
omp_set_num_threads(4);
double min_val=9.0;
int i;
Output:
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
/* Some initializations */
n = 3;
for (i=0; i < n; i++)
a[i] = b[i] = i * 1.0;
sum = 0.0;
Output:
#include<iostream>
#include<omp.h>
using namespace std;
int main()
{
int a[100],n,i;
cout<<"enter the number of elements in array: ";
cin>>n;
cout<<"\nenter array elements : ";
for(i=0;i<n;i++)
{
cin>>a[i];
}
cout<<"\narray elements are:\t";
for(i=0;i<n;i++)
{
cout<<a[i]<<"\t";
}
float avg=0,sum=0;
#pragma omp parallel
{
int id=omp_get_thread_num();
#pragma omp for
for(i=0;i<n;i++)
{
sum=sum+a[i];
cout<<"\nfor i = " <<i<<" thread "<<id<<" is executing "<<endl;
}
}
avg=sum/n;
cout<<"output = "<<avg<<endl;
}
Output: