Wednesday, November 6, 2019

A3

AIM : Implement multithreading for Matrix Multiplication using pthreads.

#include<pthread.h>
#include<stdlib.h>
#include<stdio.h>
void *multi(void *r);
int a[30][30],b[30][30],c[30][30];
int row1,row2,col1,col2;
void main()
{
long i,j;
pthread_t thread[10];
printf("\n Enter number of Row in Matrix A\t");
scanf("%d",&row1);
printf("\n Enter number of Column in Matrix A\t");
scanf("%d",&col1);
printf("\n Enter Elements in Matrix A\t");
for(i=0;i<row1;i++)
{
for(j=0;j<col1;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("\n Enter number of Row in Matrix B\t");
scanf("%d",&row2);
printf("\n Enter number of Column in Matrix B\t");
scanf("%d",&col2);
printf("\n Enter Elements in Matrix B\t");
for(i=0;i<row2;i++)
{
for(j=0;j<col2;j++)
{
scanf("%d",&b[i][j]);
}
}
printf("\n Matrix A is \n\t");
for(i=0;i<row1;i++)
{
for(j=0;j<col1;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n\t");
}
printf("\n Matrix B is \n\t");
for(i=0;i<row2;i++)
{
for(j=0;j<col2;j++)
{
printf("%d\t",b[i][j]);
}
printf("\n\t");
}
if(row1==col2)
{
for(i=0;i<row1;i++)
{
pthread_create(&thread[i],NULL,multi,(void *)i);
}
for(i=0;i<row1;i++)
{
pthread_join(thread[i],NULL);
}
printf("\nRESULTANT Matrix is\n\t");
for(i=0;i<col2;i++)
{
for(j=0;j<col1;j++)
{
printf("%d\t",c[i][j]);
}
printf("\n\t");
}
}
else
{
printf("\n Error in matrix multiplication");
}
}
void *multi(void *r)
{
long z;
z=(long)r;
int k,j;
for(j=0;j<col2;j++)
{
c[z][j]=0;
for(k=0;k<col1;k++)
{
c[z][j]=c[z][j]+(a[z][k]*b[k][j]);
printf("Thread is executing in %d\n",j);
}
}
}

No comments:

Post a Comment

A7 B.2

7(B.2) #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<fcntl.h> #in...