Article View: pl.comp.os.linux.programowanie
Article #72564Re: gcc i icc
From: Baranosiu
Date: Mon, 08 Oct 2012 13:38
Date: Mon, 08 Oct 2012 13:38
54 lines
2439 bytes
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-mailReferences:
<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