eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOpenMP - jest szybciej czy wolniej?Re: OpenMP - jest szybciej czy wolniej?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin2!goblin.stu.neva.ru!porbandar.httrack.net!news.httrack.net!exab
    ot.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!nx02.iad01.newshost
    ing.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-
    spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    From: "slawek" <s...@h...pl>
    Newsgroups: pl.comp.programming
    References: <4f4feb4d$0$1271$65785112@news.neostrada.pl><jip3ao$9u9$...@n...news.atma
    n.pl><4f501330$0$26703$65785112@news.neostrada.pl><jip477$asl$...@n...new
    s.atman.pl><4f50b4a4$0$26698$65785112@news.neostrada.pl><jiqdm3$dvn$5@ine
    ws.gazeta.pl>
    <4f50bea4$0$1268$65785112@news.neostrada.pl><jiqfeg$dvn$...@i...gazeta.pl
    ><4f50c486$0$26685$65785112@news.neostrada.pl><jiqhqe$dvn$...@i...gazeta.
    pl>
    <jiqi0e$dvn$10@inews.gazeta.pl><4f50ddac$0$1279$6...@n...neostrada.p
    l> <jiqqlu$dvn$13@inews.gazeta.pl>
    In-Reply-To: <jiqqlu$dvn$13@inews.gazeta.pl>
    Subject: Re: OpenMP - jest szybciej czy wolniej?
    Date: Fri, 2 Mar 2012 17:27:00 +0100
    MIME-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    Importance: Normal
    X-Newsreader: Microsoft Windows Live Mail 14.0.8117.416
    X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8117.416
    Lines: 113
    Message-ID: <4f50f4d2$0$26694$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 62.69.202.124
    X-Trace: 1330705618 unt-rea-a-01.news.neostrada.pl 26694 62.69.202.124:64077
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:195917
    [ ukryj nagłówki ]


    Użytkownik "Edek Pienkowski" <e...@g...com> napisał w
    wiadomości grup dyskusyjnych:jiqqlu$dvn$1...@i...gazeta.pl...
    > Już się ktoś pytał: to na pewno ta pętla? Zmieniałeś jej rozmiar?

    Wysłałem właśnie przykładowy program - są co prawda 4 pętle, ale chyba widać
    o co chodzi.

    !***************************************************
    ****************************************************
    ************************
    !
    ! Program test-omp
    !
    !***************************************************
    ****************************************************
    ************************

    module main


    ! stale matematyczne i fizyczne (CODATA 2006)

    real*8, parameter :: pi =
    3.14159265358979323846264338327950288419716939938D0 ! pi
    real*8, parameter :: epsilon0 =
    8.85418781762038985053656303171075026060837016660D-1
    2 ! przenikalnosc
    elektryczna prozni [F/m]
    real*8, parameter :: c = 299792458.0D0
    ! predkosc swiatla [m/s]

    integer :: n,m;

    ! I/O units

    integer :: input = 11 ! tekstowy wejsciowy plik z danymi
    integer :: output = 12 ! tekstowy wyjsciowy plik z danymi

    contains

    subroutine setup(vec)
    implicit none
    complex*16, intent(out) :: vec(:)
    integer :: i
    do i = 1,n
    vec(i) = pi*c*epsilon0;
    enddo
    end subroutine setup

    subroutine solve(v1,v2)
    implicit none
    complex*16, intent(in) :: v1(:)
    complex*16, intent(out) :: v2(:)
    integer :: i

    !$omp do schedule(static,1000)
    do i = 1,n
    v2(i) = v1(i)/c**2 + abs(epsilon0) + pi
    enddo
    !$omp end do
    end subroutine solve

    end module main

    program testomp

    use main
    implicit none

    real*4 stamp0 ! pomiar czasu - stempel 0
    real*4 stamp1 ! pomiar czasu - stemper 1

    integer, parameter :: nmax = 10000 ! takie duze tablice sa

    complex*16 :: vec(nmax,2)
    integer :: i1,i2,i,j
    complex*16 :: sum


    call cpu_time(stamp0)


    n = 1000
    m = 100000

    if(n.le.nmax) then
    !$omp parallel

    i1 = 1
    i2 = 2

    call setup(vec(:,i1))
    do j = 1,m
    call solve(vec(:,i1),vec(:,i2))
    i1 = mod(i1,2) + 1
    i2 = mod(i2,2) + 1
    enddo
    !$omp end parallel
    else
    write(*,*) 'error: dimension(s)'
    endif


    call cpu_time(stamp1)
    write(*,*) 'CPU time = ', stamp1-stamp0

    sum = 0.D0
    do i = 1,n
    sum = sum + 1.D0/(1.D0+vec(i,i1)*vec(i,i1))
    enddo
    write(*,*) 'just for fun ', sum


    end program testomp



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: