Openmp Hakkında Birkaç Soru
-
Merhaba arkadaşlar fortranda elimde bir döngü var diyelim 1-100 e kadar sayıyor. Bunu paralelleştirmek için
PROGRAM counter USE omp_lib INTEGER :: i,j,a !$OMP PARALLEL PRIVATE(i) !$OMP DO DO i=1,100 WRITE(*,*)omp_get_thread_num(), i END DO !$OMP END DO !$OMP END PARALLEL END PROGRAM counteryazıyorum. Ama bunun çalışma süresiyle hiç openmp kullanmamamın verdiği süre aynı. Bu neden oluyor anlamıyorum ..
Ayrıca programın çıktısı da
0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 4 53 4 54 4 55 4 56 4 57 4 58 4 59 4 60 4 61 4 62 4 63 4 64 4 65 7 92 7 93 7 94 7 95 7 96 7 97 7 98 7 99 7 100 3 40 3 41 3 42 3 43 3 44 5 66 5 67 5 68 5 69 5 70 5 71 5 72 5 73 5 74 5 75 5 76 5 77 5 78 3 45 3 46 3 47 3 48 3 49 3 50 3 51 3 52 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 2 27 2 28 2 29 2 30 2 31 2 32 2 33 2 34 2 35 2 36 2 37 2 38 2 39 6 79 6 80 6 81 6 82 6 83 6 84 6 85 6 86 6 87 6 88 6 89 6 90 6 91bunun gibi oluyor. Threadler işlemcilere dağıldı. Her işlemci uygun olduğu zamanda sayıyor ve tekrarlanma olmuyor. Ancak neden sıralı değiller. Bu bir do döngüsü ve sıralı olmaları gerekmez mi.. Unuttuğum yer neresi..
Ve son olarak i değerini private yaparsam her işlemciye özel olacaktı. Sadece her işlemciye özelse, kendi cache lerinde tutuluyor bu sayede diğerleri onu okuyamıyor diye düşünmüştüm. Ancak arada sayılarda tekrarlanma olmadığına göre, kimin nerede olduğunu bütün işlemciler biliyor. Bu nasıl mümkün oluyor, yanlış olduğum yer neresi..
Yardımlarınız için şimdiden teşekkürler.. Gece gece olmadı openMP..
-
süreler nerde hocam?
-
Süreleri kronometreyle tutunca, yazma gereği duymadım ama 1.000.000 e kadar saydırırken süreler aynıydı..
-
openMP hiç kulannamadım ama mpi programlama ile paralel denemeleri yapmıştık, kaça kadar sayılacaksa belirtilen çekirdek sayısına bölüp arrayler ile o işlemclere yoluuuyodu,
öyle bişeyler deneybilirsin istersen -
hocam mpi kullanırken bizde allocate edip bölüp gönderiyorduk ancak burada durumun farklı olacağını düşünüyorum. Message send değil de threadler üzerine çalışılınca hız farkı nasıl olaak onu inceliyordum bende..
-
up
