🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72564

Re: gcc i icc

#72564
From: Baranosiu
Date: Mon, 08 Oct 2012 13:38
54 lines
2439 bytes
Dnia 29.09.2012 Adam Majewski <adammaj1@o2.pl> napisał/a:
> Można pobrać przykładowy rozdział w pdf i tam jest ten przykład.
> Dla gcc czas = 1345 ms
> dla icc czas =  109 ms
>
> Czyli program skompilowany przez icc wykonywany jest 12 razy szybciej.
>
> Co o tym sądzicie ?

Kompilator Intela testowany na procesorze AMD :D
Nie mam procesora AMD, ale ustawienia kompilatora GCC
dużo zmieniają :D
Przykład ode mnie (wersja bez OpenMP) na procesorze Intel Q9550
(Core 2 Quad, 2.83GHz, 8G RAM, Debian 32-bitowy z kernelem 2.6.32)

$ gcc --version
gcc (Debian 4.4.5-8) 4.4.5

$ gcc tablice.c -o tablice
$ ./tablice 500 500 500
arg[0] = 500
arg[1] = 500
arg[2] = 500
Start
Czas: 1158 milisekund

$ gcc -O3 tablice.c -o tablice
$ ./tablice 500 500 500
arg[0] = 500
arg[1] = 500
arg[2] = 500
Start
Czas: 350 milisekund

Jedna opcja dodana do kompilatora wiele zmienia, pewnie jakbym
potuningował dokładniej, to dałoby się uzyskać coś więcej.
Dodatkowo widać, że autor programu się nie popisał znajomością
działania pamięci i sposobu w jaki kompilator C zamienia "wskaźnik
do wskaźnika" na odwołanie do tablicy dwuwymiarowej. Wystarczy
macierz 'b' trzymać w pamięci w postaci transponowanej a wtedy
w samym mnożeniu można zamienić kolejność indeksów, linia 59
będzie wtedy wyglądała tak (zamienione indeksy przy b[][]):
c[i][j] += a[i][k]*b[j][k];
i dostajemy:

$ gcc -O3 tablice.c -o tablice
$ ./tablice 500 500 500
arg[0] = 500
arg[1] = 500
arg[2] = 500
Start
Czas: 274 milisekund

Żaden kompilator nie zastąpi myślenia :D
Technical Details
Message-ID: <k4ul0s$glj$1@news.task.gda.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.task.gda.pl!not-for-mail
References: <k46i43$pte$1@news.dialog.net.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.task.gda.pl!not-for-mail
From: Baranosiu <rad_n@wp.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: gcc i icc
Date: Mon, 8 Oct 2012 13:38:37 +0000 (UTC)
Organization: CI TASK http://www.task.gda.pl/
Lines: 54
Message-ID: <k4ul0s$glj$1@news.task.gda.pl>
References: <k46i43$pte$1@news.dialog.net.pl>
Reply-To: Baranosiu <rad_n@wp.pl>
NNTP-Posting-Host: user-164-126-63-157.play-internet.pl
Mime-Version: 1.0
X-Trace: news.task.gda.pl 1349703517 17075 164.126.63.157 (8 Oct 2012 13:38:37 GMT)
X-Complaints-To: abuse@news.task.gda.pl
NNTP-Posting-Date: Mon, 8 Oct 2012 13:38:37 +0000 (UTC)
User-Agent: slrn/pre1.0.0-18 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit