folder Tahribat.com Forumları
linefolder Programlama Genel
linefolder Openmp Hakkında Birkaç Soru



Openmp Hakkında Birkaç Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    anubisx
    anubisx's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    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 counter
    

    yazı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          91
    

     

    bunun 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..


    http://yigitdemirag.com
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MaviGozluDev
    MaviGozluDev's avatar
    Kayıt Tarihi: 05/Eylül/2005
    Erkek

    süreler nerde hocam?

     


    .
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    anubisx
    anubisx's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    Süreleri kronometreyle tutunca, yazma gereği duymadım ama 1.000.000 e kadar saydırırken süreler aynıydı..


    http://yigitdemirag.com
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MaviGozluDev
    MaviGozluDev's avatar
    Kayıt Tarihi: 05/Eylül/2005
    Erkek

    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 


    .
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    anubisx
    anubisx's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    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..


    http://yigitdemirag.com
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    anubisx
    anubisx's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    up


    http://yigitdemirag.com
Toplam Hit: 1031 Toplam Mesaj: 6