#include <iostream>
#include <conio.h>
#include <omp.h>
#include <pthread.h>
#include <assert.h>
using namespace std;
long long OmpFaktoriyel(short int sayi)
{
long long sonuc = 1;
#pragma omp parallel for shared(sayi, sonuc)
for (int i = 1; i <= sayi; i++)
{
#pragma omp atomic
sonuc *= i;
}
return sonuc;
}
float OmpPermutasyon(short int n, short int r)
{
assert(n >= r);
long long nFaktoriyel;
long long rnFaktoriyel;
#pragma omp parallel shared(n, r, nFaktoriyel, rnFaktoriyel)
{
#pragma sections
{
#pragma section
{
nFaktoriyel = OmpFaktoriyel(n);
}
#pragma section
{
rnFaktoriyel = OmpFaktoriyel(n-r);
}
}
}
return (float)nFaktoriyel / (float)rnFaktoriyel;
}
float OmpKombinasyon(short int n, short int r)
{
assert(n >= r);
long long nFaktoriyel;
long long rnFaktoriyel;
long long rFaktoriyel;
#pragma omp parallel shared(n, r, nFaktoriyel, rnFaktoriyel)
{
#pragma sections
{
#pragma section
{
nFaktoriyel = OmpFaktoriyel(n);
}
#pragma section
{
rnFaktoriyel = OmpFaktoriyel(n - r);
}
#pragma section
{
rFaktoriyel = OmpFaktoriyel(r);
}
}
}
return (float)nFaktoriyel / ((float)rnFaktoriyel*rFaktoriyel);
}
int main()
{
short int sayi = 0;
short int n, r;
cout << "\nOpenMP de faktoriyeli hesaplanacak sayiyi giriniz:"; cin >> sayi;
cout << endl << "\tOpenMP Faktoriyel Sonucu:" << OmpFaktoriyel(sayi);
cout << "\nOpenMP de Permutasyonu hesaplanacak N ve R sayilarini sirayla giriniz:"; cin >> n >> r;
cout << endl << "\tOpenMP Permutasyonu Sonucu:" << OmpPermutasyon(n,r);
cout << "\nOpenMP de Kombinasyonu hesaplanacak N ve R sayilarini sirayla giriniz:"; cin >> n >> r;
cout << endl << "\tOpenMP Kombinasyon Sonucu:" << OmpKombinasyon(n, r);
_getch();
return 0;
}
Teknoloji, programlama, oyun, kişisel deneyimler ve diğer konular hakkında tuttuğum günlük.
7 Nisan 2014 Pazartesi
OpenMP ile Paralelleştirerek Faktoriyel, Permütasyon, Kombinasyon hesabı
Visual Studio 2013 ile yalnızca OpenMP kullanarak Faktoriyel, Permütasyon ve Kombinasyon hesabı yapan program aşağıdadır. Kolay gelsin.
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder