Matrix Multiplication – Using Multicore Programming (C++)
April 24, 2016
Categorised in: C++ Codes, OOMP Codes
/*
Write a program for Matrix Multiplication using multicore programming.
*/
#include<iostream>
#include<pthread.h>
using namespace std;
int MAT1[10][10],MAT2[10][10],MAT3[10][10];
int r1=3,c1=3,r2=3,c2=3;
void *multi(void *p)
{
int i=0;
i= (int &)p;
for(int j=0;j<3;j++)
{
//MAT3[i][j]=0;
for(int k=0;k<3;k++)
{
MAT3[i][j]=MAT3[i][j]+(MAT1[i][k]*MAT2[k][j]);
}
}
}
void read_mat(int MAT[10][10], int r, int c)
{
cout<<"Enter the elements in matrix...: "<<endl;
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
{
cout<<"Enter the elements for row and column here: "<<endl;
cin>>MAT[i][j];
}
}
}
void print_mat(int MAT[10][10], int r, int c)
{
cout<<"\n";
for(int i=0;i<r;i++)
{
cout<<"\n";
for(int j=0;j<c;j++)
{
cout<<MAT[i][j]<<"\t";
}
cout<<"\n";
}
}
main()
{
pthread_t tid[3];
read_mat(MAT1,r1,c1);
read_mat(MAT2,r2,c2);
cout<<"MATRIX 1"<<endl;
print_mat(MAT1,r1,c1);
cout<<"MATRIX 2"<<endl;
print_mat(MAT2,r2,c2);
for(int i=0;i<3;i++)
{
pthread_create(&tid[i],NULL,multi,(void *)i);
}
for(int i=0;i<3;i++)
{
pthread_join (tid[i],NULL);
}
cout<<"FINAL MATRIX"<<endl;
print_mat(MAT3,r1,c2);
}
Pratik Kataria is currently learning Springboot and Hibernate.
Technologies known and worked on: C/C++, Java, Python, JavaScript, HTML, CSS, WordPress, Angular, Ionic, MongoDB, SQL and Android.
Softwares known and worked on: Adobe Photoshop, Adobe Illustrator and Adobe After Effects.