How To Write a C Program To Multiplying 100*100 matrix using threads and also produce the sum of the diagonal elements in another matrix in C Programming Language ?
Solution For Multiplying 100*100 matrix using threads and also produce the sum of the diagonal elements in another matrix :
#include <omp.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
long int a[100][100],c[100][100],b[100][100],d[100][100],i,k,j,val;
int id,ids;
#pragma omp parallel for private(i,j) shared(a)
for(j=0;j<100;j++)
{
for(i=0;i<100;i++)
{
a[i][j]=rand()%999;
}
}
#pragma omp parallel for private(i,j) shared(b)
for(j=0;j<100;j++)
{
for(i=0;i<100;i++)
{
b[i][j]=rand()%999;
}
}
val=0;
#pragma omp parallel for private(i,j,k) shared(a,b,c)
for(k=0;k<100;k++)
{
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
} }
}
/*
for(j=0;j<100;j++)
{
for(i=0;i<100;i++)
{
printf("%ld\n",a[i][j]);
}
}
for(j=0;j<100;j++)
{
for(i=0;i<100;i++)
{
printf("%ld\n",b[i][j]);
}
}
*/
#pragma omp parallel for private(i,j) shared(c)
for(j=0;j<100;j++)
{
for(i=0;i<100;i++)
{
printf("%ld\n",c[i][j]);
}
}
#pragma omp critical
#pragma omp parallel for private(i,j) shared(id)
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
ids=omp_get_num_threads();
id=omp_get_thread_num();
if(id%2!=0)
{
while(id%2!=0)
{
ids=omp_get_num_threads();
id=omp_get_thread_num();
}
}
else
{ if(id%2==0)
{
printf("Thread number is %d\n",id);
d[i][j]=a[i][j]+b[i][j];
printf("%ld\n",d[i][j]);
}
else
{
while(id%2!=0)
{
ids=omp_get_num_threads();
id=omp_get_thread_num();
}
}
}
}
}
return 0;
}
Tags: Multiplying 100*100 matrix using threads and also produce the sum of the diagonal elements in another matrix, matrix multiplication example, matrix addition, matrix vector multiplication, matrix multiplier, matrix division, matrix multiplication rules, matrix transpose, matrix inverse.
Learn More :
C Program
- Using Bash to input stuff into c program
- Difficult C Programming Questions
- Write a c program to find largest among three numbers using binary minus operator three numbers using binary minus operator
- PRINTING ASCII VALUE USING C PROGRAM
- MULTIPLICATION OF TWO MATRICES USING C PROGRAM
- FIND OUT SUM OF DIAGONAL ELEMENTS OF A MATRIX USING
- Write A C Program To Find Out Transport Of A Matrix
- Factorial of 100 in C Program
- Multiplication of large numbers in c
- Division of Large Numbers in C Program
- BINARY SEARCH USING C PROGRAM
- BINARY SEARCH THROUGH RECURSION USING C PROGRAM
- FIND FACTORIAL OF A NUMBER USING RECURSION IN C PROGRAM
- FIND GCD OF A NUMBER USING RECURSION IN C PROGRAM
- FIND SUM OF DIGITS OF A NUMBER USING RECURSION USING C PROGRAM
- FIND POWER OF A NUMBER USING RECURSION USING C PROGRAM
- REVERSE A NUMBER USING RECURSION IN C PROGRAM
- SWAP TWO VARIABLES WITHOUT USING THIRD USING C PROGRAM VARIABLE
- Write A C Program For Swapping Of Two Arrays
- SWAPPING OF STRINGS USING C PROGRAM
- CONVERSION FROM DECIMAL TO OCTAL USING C PROGRAM
- CONVERSION FROM DECIMAL TO OCTAL USING C PROGRAM
- CONVERSION OF DECIMAL TO BINARY USING C PROGRAM
- CONVERSION OF FAHRENHEIT TO CENTIGRADE USING C PROGRAM
- C or C++ Program To Find Bonus Amount