Paralel Programlama - Faktoriyel Hesaplama

2-9 arasindaki sayilarin faktoriyelini ayri is parçaciklarina hesaplattirip sonuçlari master is parçaçigi tarafindan toplayan bir paralel program uygulamasini makale icerisinde paylasiyor olacagim.
Uygulamami OpenMP yardimiyla yaziyorum.
Bunun için visual studio ortaminda Win32 Console Application projesi olusturuyor ve içerisine cpp dosyasini ekliyorum. faktoriyel ismini verdigim cpp 'nin properties ayarlarindan OpenMP'nin ayarlarini gerçeklestiriyorum.
Amacimiz var olan 4 thread'i de ayni anda çalisiyor olmasidir.
Çözüm için Private Clause kullaniyorum. Bunun sebebi, paralel yapi içerisindeki her bir thread’e özel degiskenleri belirlemis olmamizdandir.
#pragma omp parallel for private (i)
ifadesinde aslinda i’den kaç tane varsa o kadar kopyala ve herkes kendi degiskeni ile calissin anlamina gelmektedir. Bir nevi hepsine özel bir degisken belirlemis oluyoruz.
faktoriyel.cpp kodu
#include <iostream>
#include <conio.h>
#include<stdio.h>
#include<omp.h>
using namespace std;
#define num 9
int main(){
int faktoriyel=1, i=2;
#pragma omp parallel for private(i)
for(i=2; i<=num; i++)
{
faktoriyel=faktoriyel*i;
printf("Thread no : %d i = %d icin faktoriyel = %d degeri\n",
omp_get_thread_num(),i,faktoriyel);
}
printf("Toplam faktoriyel degeri : %d",faktoriyel);
getche();
return 0;
}
Ekran Görüntüsü
Her bir thread'in farkli faktoriyel islemlerini yaptigini iki farkli örnekte inceleyebilirsiniz;
Keyifli calismalar dilerim.





Comments