#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;
}
#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;
}