Giriş
Şu satırı dahil ederiz.
#parallel for
N'e kadar olan döngü şöyle paralelleştirilir. Her thread döngünün belli bir kısmını çalıştırır. Örneğin ilk thread 1-100 , ikinci thread 101 - 200 arası vs. gibi.Şu satırı dahil ederiz.
#include <omp.h>
#parallel ve #parallel for Fakı Nedir
#pragma omp parallel blok içindeki aynı kodu N tane thread tarafından çalıştırır. Şeklen şöyledir
#pragma omp parallel for döngüyü N tane thread'e böler. Şeklen şöyledir. Burada chunk olarak 1 veriliyor. Dolayısıyla her thread 1 tane eleman işleyip, 4 tane eleman atlıyor.
#pragma omp parallel for
for(int i = 0; i < N; i++)
{
...
}
#parallel for ile C++11Eğer v random access iterator sağlıyorsa şöyle yaparız.
#pragma omp parallel for
for (it = v.begin(); it < v.end(); it++)
{
...
}
#parallel for ile thread sayısıŞöyle yaparız.
#pragma omp parallel for num_threads(2)
for (i = 0; i < N; i++)
{
...
}
#parallel for içinde critical
Şöyle yaparız.
#pragma omp parallel for
for (int i = 20; i < 1000; i++)
{
...
#pragma omp critical
{
...
}
}
#parallel for içinde atomicŞöyle yaparız.
int iteration = 0;
#pragma omp parallel for
for (int i = 0; i < num_voxels; i++)
{
...
#pragma omp atomic
iteration++;
...
}
Hiç yorum yok:
Yorum Gönder