Posts

Program 5

#include <mpi.h> #include <stdio.h> int main(int argc, char** argv) {     int rank, size;     int number;     MPI_Init(&argc, &argv);                   MPI_Comm_rank(MPI_COMM_WORLD, &rank);     MPI_Comm_size(MPI_COMM_WORLD, &size);     if (size < 2) {         if (rank == 0) {             printf("This program requires at least 2 processes.\n");         }         MPI_Finalize();         return 0;     }     if (rank == 0) {         number = 100;           printf("Process 0 sending number %d to Process 1\n", number);         MPI_Send(&number, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);     } else if (rank == 1) {         MPI_Recv(&number, 1, MPI...

Program 4

#include <stdio.h> #include <stdlib.h> #include <math.h> #include <omp.h> int is_prime(int num) {     if (num <= 1)         return 0;     if (num == 2)         return 1;     if (num % 2 == 0)         return 0;     int limit = (int)sqrt(num);     for (int i = 3; i <= limit; i += 2) {         if (num % i == 0) return 0;     }     return 1; } int main() {     int n;     printf("Enter the upper limit (n): ");     scanf("%d", &n);     if (n < 2) {         printf("There are no prime numbers <= %d\n", n);         return 0;     }       double start_serial = omp_get_wtime();     int* primes_serial = (int*)malloc((n + 1) * sizeof(int));     int count_serial = 0;     for (int ...

Program 3

#include <stdio.h> #include <stdlib.h> #include <omp.h>   int fib(int n) {     int x, y;     if (n <= 1) return n;     #pragma omp task shared(x)         x = fib(n - 1);     #pragma omp task shared(y)         y = fib(n - 2);     #pragma omp taskwait     return x + y; } int main() {     int n;     printf("Enter the number of Fibonacci numbers to calculate: ");     scanf("%d", &n);     if (n <= 0) {         printf("Please enter a positive integer.\n");         return 0;     }     printf("First %d Fibonacci numbers using OpenMP tasks:\n", n);     double start = omp_get_wtime();     #pragma omp parallel     {         #pragma omp single         {             for ...

Program 2

#include <stdio.h>  #include <omp.h>  int main() {      int num_iterations;      printf("Enter the number of iterations: ");      scanf("%d", &num_iterations);       printf("\nUsing schedule(static,2):\n\n");      #pragma omp parallel      {          int tid = omp_get_thread_num();          #pragma omp for schedule(static, 2)          for (int i = 0; i < num_iterations; i++) {              printf("Thread %d : Iteration %d\n", tid, i);          }      }      return 0;  }  run commands g cc -fopenmp prg.c -o prg ./prg

Program 1

#include <stdio.h>   #include <stdlib.h>  #include <omp.h>  #include <time.h>  void merge(int* arr, int l, int m, int r) {      int i, j, k;      int n1 = m - l + 1;      int n2 = r - m;      int* L = (int*)malloc(n1 * sizeof(int));      int* R = (int*)malloc(n2 * sizeof(int));      for (i = 0; i < n1; i++)         L[i] = arr[l + i];      for (j = 0; j < n2; j++)         R[j] = arr[m + 1 + j];      i = 0; j = 0; k = l;      while (i < n1 && j < n2) {          arr[k++] = (L[i] <= R[j]) ? L[i++] : R[j++];      }      while (i < n1) arr[k++] = L[i++];      while (j < n2) arr[k++] = R[j++];      free(L);      free(R);  }  void mergeSo...