Openmp bir shared memory(paylaşımlı hafıza) APİ dir.Son sürümün 2015 yılında openmp versiyon 4.5 olarak çıkmıştır.Openmp bir çok programlama dilini destekler.Bizde bu ders kapsamında C ile paralel programlar yazmaya çalışacağız.Bu yazdıklarım openmp tutorial sitesinde alınmıştır.
siteyi ziyaret etmek için tıkla.
Evet arkadaşlar hemen işe başlayalımmm.
öncelikle kodlarımız devC++ yada codeblocta derleyebiliriniz.Dev de derlerken nispeten derleyeciden kaynaklanan hatalarla karşılaşabilirsiniz ben herikisinide denedim.ama size tavsiyem http://www.openmp.org/resources/openmp-compilers/ sitesinde yazan derleyecileri kullanmanızdır.Devc++ içinde MinGW bulunmakta bu sayede #include <omp.h> yazarak kodlamaya başlayabilirsiniz.codeblock için ise MinGW kurulumunu yapmanız gerekmekte.
ozaman hemen ilk programımızı yazalım :)
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
int nthreads, tid;
#pragma omp parallel private(nthreads, tid) //omp komutları #pragma ile başlar.parallel demek bu küme parantezleri içindeki komutlar paralel yani bir kaç thread bir çalışacaktır anlmaı taşır.Private ise parantez içinde yazan değişkenlerin private olarak tanımlamasını sağlar.
{
tid = omp_get_thread_num();//tid değişkeni o anda çalışan threadın idsini tutmaktadır.
printf("Hello World from thread = %d\n", tid);//ekrana hello word yazarken hangi thread bu mesajı ekrana yazdırdığını anlamamız için tid değişkeninin değerinide ekrana yazdırıyoruz.
burada ise id numarası 0 olan yani thread0 nolu thread master thread dir.ilk oluşan thread her zaman master thread olur.diğer threadler master threadler tarafında oluşturulur ve sonlandırılır.Burada eğer tid==0 ise bu master thread dir sonucu çıkar.Buradanda nthreads değişkenine var olan threadlerin sayısını atıyoruz ve ekrana yazdırıyoruz.
if (tid == 0)
{
nthreads = omp_get_num_threads();
printf("Number of threads = %d\n", nthreads);
}
} /* All threads join master thread and disband */
}
dikkat:omp_get_num_threads();//bu fonksiyon threarların sayısını verir 20 ,30 ,50 kaç tane oluşturduysanız.Dinamik olarak thread sayısını oluşturacağımız örnekleride bir sonra ki derslerde yapacağız.
omp_get_thread_num() bu fonksıyon ise o anda çalışan threadın id sini verir.Birbirlerine benzedikleri için bu uyarıyı yapmak istedim.evet arkadaşlar gördüğünüz gibi ilk paralel çalışan programımızı openmp api sini kullanarak gerçekleştirdik.
programın ekran çıktısı farklı sonuçlar üretecek siz çalıştırdığınızda varsayılan olarak çeirdek sayınız kadar thread olşuracak ve ekrana 4 çekşrdeğiniz varsa 4 kez hello word yazacaktır.her derlediğinizde farklı şekilde threadlerin sıralandığınız göreceksiniz.Tamamiyle hangi threadin oluşması çalışması ile alakalıdır.
bu ve daha fazla örneğe buradan ulaşabilirisiniz.
Show Conversion Code Hide Conversion Code Show Emoticon Hide Emoticon