Write Prefix sum using MPI and PThreads You can use your cod
Solution
#include <stdio.h>
 #include <pthread.h>
 #define array_size 1000
 #define no_threads 10
int a[array_size];
 int global_index = 0;
 int sum = 0;
 pthread mutex_t mutex1;
void *slave(void *ignored)
 {
 int local_index, partial_sum = 0;
 do {
 pthread mutex lock(&mutex1);
 local_index = global_index;
 global index++;
 pthread mutex unlock(&mutex1);
if (local_index < array_size)
 partial_sum += *(a + local_index);
 } while (local_index < array_size);
pthread mutex lock(&mutex1);
 sum += partial_sum;
 pthread mutex unlock(&mutex1);
return();
 }
main()
 {
 int i;
 pthread_t thread[10];
 pthread_mutex_init(&mutex1, NULL);
for (i = 0; i < array_size; i++)
 a[i] = i+1;
for (i = 0; i < no_threads; i++)
 if (pthread create(&thread[i], NULL, slave, NULL) != 0)
 perror(\"Pthread create fails\");
for (i = 0; i < no_threads; i++)
 if (pthread join(thread[i], NULL) != 0)
 perror(\"Pthread join fails\");
printf(\"The sum of 1 to %i is %d\ \", array_size, sum);
 }

