#define X1 4
#define Y1 2
#define X2 2
#define Y2 5
int matris1[X1][Y1], matris2[X2][Y2], sonucMatrisi[X1][Y2];
int getchToInt()
{
char ch = _getch();
switch (ch)
{
case '0': return 0; break;
case '1': return 1; break;
case '2': return 2; break;
case '3': return 3; break;
case '4': return 4; break;
case '5': return 5; break;
case '6': return 6; break;
case '7': return 7; break;
case '8': return 8; break;
case '9': return 9; break;
}
}
void MatrisCarp(void)
{
cout << "Birinci Matris:[" << X1 << "][" << Y1 << "]\n";
int i, j, k;
for (i = 0; i < X1; i++)
{
for (j = 0; j < Y1; j++)
{
cout << ", " << i << j << ":";
matris1[i][j] = getchToInt(); cout << matris1[i][j];
}
cout << "\n";
}
cout << "Ikinci Matris:[" << X2 << "][" << Y2 << "]\n";
for (j = 0; j < X2; j++)
{
for (k = 0; k < Y2; k++)
{
cout << ", " << j << k << ":";
matris2[j][k] = getchToInt(); cout << matris2[j][k];
}
cout << "\n";
}
#pragma omp parallel for shared(sonucMatrisi,matris1,matris2)
for (i = 0; i < X1; i++)
{
for (j = 0; j < Y2/*X2*/; j++)
{
sonucMatrisi[i][j] = 0;
for (k = 0; k < Y1; k++)
#pragma omp atomic
sonucMatrisi[i][j] += matris1[i][k] * matris2[k][j];
}
}
cout << "Sonuc Matrisi:[" << X1 << "][" << Y2 << "]\n";
for (i = 0; i < X1; i++)
{
for (k = 0; k < Y2; k++)
{
cout << ", " << sonucMatrisi[i][k];
}
cout << "\n";
}
}
Teknoloji, programlama, oyun, kişisel deneyimler ve diğer konular hakkında tuttuğum günlük.
7 Nisan 2014 Pazartesi
OpenMP matris çarpımı ile ilgili basit bir örnek.
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder