-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.n
eostrada.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@inews.gazeta.pl>
<4f50bea4$0$1268$65785112@news.neostrada.pl>
<jiqgak$2sv$1@inews.gazeta.pl>
<4f50f420$0$1231$65785112@news.neostrada.pl>
In-Reply-To: <4f50f420$0$1231$65785112@news.neostrada.pl>
Subject: Re: OpenMP - jest szybciej czy wolniej?
Date: Fri, 2 Mar 2012 20:11:08 +0100
MIME-Version: 1.0
Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=response
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: 116
Message-ID: <4f511b4b$0$1221$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 62.69.202.124
X-Trace: 1330715467 unt-rea-b-01.news.neostrada.pl 1221 62.69.202.124:62131
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.programming:195924
[ ukryj nagłówki ]
Użytkownik "slawek" <s...@h...pl> napisał w wiadomości grup
dyskusyjnych:4f50f420$0$1231$6...@n...neostrada
.pl...
> Wyniki, w sekundach, są takie jak niżej. Program taki jak jeszcze niżej.
>
> gfortran -Ofast test-omp.f95 CPU_TIME = 0.20312500
> gfortran test-omp.f95 CPU_TIME = 1.9062500
> gfortran -fopenmp test-omp.f95 CPU_TIME = 7.0000000
> gfortran -Ofast -fopenmp .... CPU_TIME = 1.0625000 - jeżeli
> wątki tworzy się tylko raz (tj. $omp parallel obejmuje CAŁY program)
Po przeniesieniu do C i kompilacji MSVC 2010 jest nieco lepiej - ale i tak w
rebusie
bez OpenMP jest np. 8 sekund
z OpenMP jest 12 sekund
(Program jest trochę inny, bo nie ma complex i pętle z większą ilością
iteracji.)
/***************************************************
****************************************************
************************
!
! Program test-omp
!
! /openmp
!
****************************************************
****************************************************
***********************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// stale matematyczne i fizyczne (CODATA 2006)
const double pi = 3.14159265358979323846264338327950288419716939938;
const double epsilon0 =
8.85418781762038985053656303171075026060837016660E-1
2; // przenikalnosc
elektryczna prozni [F/m]
const double c = 299792458.0;
// predkosc swiatla [m/s]
static int n, m;
void setup(double vec[])
{
int i;
for(i = 0; i < n; i++)
vec[i] = pi*c*epsilon0;
}
void solve(double v1[], double v2[])
{
int i;
#pragma omp parallel
{
#pragma omp for schedule(static,100)
for(i = 0; i < n; i++)
v2[i] = v1[i]/(c*c) + epsilon0 + pi;
}
}
int main(void)
{
clock_t stamp0; // pomiar czasu - stempel 0
clock_t stamp1; // pomiar czasu - stempel 1
// takie duze tablice sa
# define nmax 10000
// problem - nie ma typu complex w MSVC - zamiast
complex
// będzie używany double :(
double vec[2][nmax];
int i1,i2,i,j;
double sum;
stamp0 = clock();
n = 1000;
m = 1000000;
if(n < nmax)
{
i1 = 0;
i2 = 1;
setup(vec[i1]);
for(j = 0; j < m; j++)
{
solve(vec[i1],vec[i2]);
i1 = (i1+1) % 2;
i2 = (i2+1) % 2;
}
}
else
puts("error: dimension(s)");
stamp1 = clock();
printf("CPU time = %lf\n", (double)(stamp1-stamp0)/CLOCKS_PER_SEC);
sum = 0.;
for(i = 0; i < n; i++)
sum += 1./(1.+vec[i1][i]*vec[i1][i]);
printf("just for fun %lf\n",sum);
getchar();
return 0;
}
Następne wpisy z tego wątku
- 03.03.12 06:28
- 03.03.12 10:13 slawek
- 03.03.12 11:14 Roman W
- 03.03.12 12:30
- 03.03.12 12:49 slawek
- 03.03.12 12:57 slawek
- 03.03.12 13:12
- 03.03.12 13:32 slawek
- 03.03.12 14:39
- 03.03.12 15:08 slawek
- 03.03.12 15:44 Edek Pienkowski
- 03.03.12 15:49 Edek Pienkowski
- 03.03.12 15:53
- 03.03.12 16:12 slawek
- 03.03.12 16:29 Edek Pienkowski
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi
- 2024-12-20 Opole => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-20 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-20 Rzeszów => International Freight Forwarder <=
- 2024-12-20 Katowice => Key Account Manager (ERP) <=
- 2024-12-20 Ekstradycja
- 2024-12-20 Mikroskop 3D
- 2024-12-20 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-20 Warszawa => Analityk w dziale Trade Development (doświadczenie z Powe
- 2024-12-20 Warszawa => Full Stack .Net Engineer <=
- 2024-12-20 Warszawa => Programista Full Stack .Net <=
- 2024-12-19 Kamerka sam. na tył
- 2024-12-20 Jak być bezpiecznym z Li-Ion?