Linux за българи: Форуми

Linux секция за напреднали => Начини за увеличаване на бързодействието => Темата е започната от: vladou в May 28, 2004, 22:35



Титла: Intel Compiler Tests
Публикувано от: vladou в May 28, 2004, 22:35
Няколко дена тука седя и си играя, не че няма с какво друго, но ...

Та имаме следния сорс код:
Примерен код
#include <stdio.h>
#define SIZE 100
#define N    1000000
double sum = 0, a[SIZE], b[SIZE];
main() {
   int i, j;
   for (i = 0; i < SIZE; i++) {
      a[i] = 2.0;
      b[i] = 3.0;
   }
   for (j = 0; j < N; j++)
      for (i = 0; i < SIZE; i++)
         sum += a[i] * b[i];
   printf( "OK, dofp result = %e\n", sum);
}


При компилирне с GCC резултатите са следните :
OK, dofp result = 6.000000e+08
real    0m1.037s, user    0m1.040s,sys     0m0.000s

При компилиране с Intel C++ компилатор:
OK, dofp result = 6.000000e+08
real    0m0.067s,user    0m0.070s,sys     0m0.000s

Използванта конфигурация е:
Intel Pentium 4 2.8GHz/800MHz FSB/Dual Channel 1GB RAM(количеството няма значение)/някакъв хард диск.

GCC:
gcc version 3.2, Thread model: posix - SuSE 8.1 Pro.

Intel C++ compiler:
Intel® C++ Compiler for 32-bit applications, Version 8.0   Build 20031016Z Package ID: l_cc_p_8.0.055
Copyright © 1985-2003 Intel Corporation.  All rights reserved.
30 DAY EVALUATION LICENSE

Нещо като обобщение:
Резултатите говорят сами за себе си. Ако някои има идея за по-добри опимизации при GCC да пише, ще ги тестваме.


Титла: Intel Compiler Tests
Публикувано от: в May 29, 2004, 00:08
Не че въобще трябва да се отговаря на тази тема но все пак:
Intel Compiler поддържа ix86 (предполагам и IA64) а gcc (само един бърз поглед в/у supported platforms) поддържа над 15 платформи(процесора). Съвсем нормално е да не е толкова продуктивен. Пък и ако от Intel не могат да напишат най-оптимизирания код за своите си процесори ... тогава кой ?

Айде със здраве


Титла: Intel Compiler Tests
Публикувано от: zazzko в May 29, 2004, 00:11
Странно..на моя Duron 750 програмата дава следното:
real    0m1.820s
user    0m1.790s
Това е не е много повече от твоите времена, сравнимо с честотата на процесора (да не говорим за архитектурата). Това е с gcc 3.3.3.


Титла: Intel Compiler Tests
Публикувано от: Йордан в May 29, 2004, 12:37
а мислиш ли че само компилатора определя производителноста ...
мисълта ми е че ядрото файловата система и к'во ли още не може да влияе ... според мен не можете така да сравнявате компилаторите ...


Титла: Intel Compiler Tests
Публикувано от: vladou в May 29, 2004, 14:14
Цитат (GigaVolt @ Май 29 2004,13:37)
а мислиш ли че само компилатора определя производителноста ...
мисълта ми е че ядрото файловата система и к'во ли още не може да влияе ... според мен не можете така да сравнявате компилаторите ...

Ами точно в конктретния случай според мен няма никакво значение от по-горе изброените неща, защото тази програма не се влияе тях. Единственото изискване е да нямате натоварване на машината от други процеси, което не е трудно да се осигури.


Титла: Intel Compiler Tests
Публикувано от: vladou в May 29, 2004, 14:22
Цитат (zazzko @ Май 29 2004,01:11)
Странно..на моя Duron 750 програмата дава следното:
real    0m1.820s
user    0m1.790s
Това е не е много повече от твоите времена, сравнимо с честотата на процесора (да не говорим за архитектурата). Това е с gcc 3.3.3.

Ами да, но този програма пусната на Pentium II 400MHz дава следните резулатати:
real    0m0.922s
user    0m1.836s
sys     0m0.008s
На пръв поглед - да ти имам и Дюрона ;-)
На втори поглед - очевидно е, че ГЦЦ е спряло да се развива при 486 архитектурата и не използва съвременните архитектури оптимално.
Всеки, които има желание може да я изтегли от тук -  DOFP Static linked. Гарантирам, че няма висури или етц, но е голяма, защото са статични библиотеките.
Ще ми бъде интересно, ако видя повече резуктати тук.
В момента с Linux-BG TEAM обсъждаме идеята да се сравни общата производителност на система, компилирана изцяло с този компилатор. Аз работя по компилирането на Kernel 2.4.xx, Samba, Apache


Титла: Intel Compiler Tests
Публикувано от: vladou в May 29, 2004, 14:26
Цитат (Guest @ Май 29 2004)
Не че въобще трябва да се отговаря на тази тема но все пак:

ами аз съм я сложил темата да се коментира от всеки, който иска ;-)

Цитат (Guest @ Май 29 2004)
Intel Compiler поддържа ix86 (предполагам и IA64) а gcc (само един бърз поглед в/у supported platforms) поддържа над 15 платформи(процесора). Съвсем нормално е да не е толкова продуктивен. Пък и ако от Intel не могат да напишат най-оптимизирания код за своите си процесори ... тогава кой ?

Искам да дам и едно разяснение ICC е почти 100% съвместим с GCC.
Интересното е, че включително и AMD компилират тестовете си с този компилатор /нямат собствен/, за да постигнат по-добри резултати.


Титла: Intel Compiler Tests
Публикувано от: saturn_vk в May 29, 2004, 14:27
е какви опции си използвал за гцц? -O2 -march=pentium4 -pipe -funroll-loops са доста добри оптимизации, я пробвай да компилираш програмата с тях.

Примерен код

saturn_vk@sat:~$ time ./a.out
OK, dofp result = 6.000000e+08

real    0m0.275s
user    0m0.251s
sys     0m0.003s


на barton 2500+


Титла: Intel Compiler Tests
Публикувано от: vladou в May 29, 2004, 15:17
Цитат (saturn_vk @ Май 29 2004,15:27)
е какви опции си използвал за гцц? -O2 -march=pentium4 -pipe -funroll-loops са доста добри оптимизации, я пробвай да компилираш програмата с тях.

Добре, ето ги резултатите:
real    0m0.187s, user    0m0.190s, sys     0m0.000s

Разликата остава повече от 3 пъти.


Титла: Intel Compiler Tests
Публикувано от: n_antonov в May 29, 2004, 15:27
Ето един Athlon XP 1.7Ghz, 512 cache, SuSE 8.1, gcc version 3.2.2:

real    0m0.703s user   0m0.700s sys    0m0.000s

Ето и какво казва интелският компилатор:

real    0m0.232s user    0m0.220s sys     0m0.010s

Разликата е чувствителна.

И още едно сравнение, този път с Intel PIII 750Mhz, 32 cache, Debian Woody, gcc version 3.0.4:

real    0m1.630s  user    0m1.570s sys     0m0.030s

Същата система с интелския компилатор:

real    0m0.512s user    0m0.490s sys     0m0.000s





Титла: Intel Compiler Tests
Публикувано от: kostadinz в May 29, 2004, 16:19
oткъде ги вадите тези работи:
real    xxxxxxs   user   xxxxx   sys    xxxxxxxxxxxs


Титла: Intel Compiler Tests
Публикувано от: ray в May 29, 2004, 20:02
Здравейте,
Ето и мойте резултати /GCC/:
real    0m1.958s
user    0m1.149s
sys     0m0.004s

CPU: Duron-1100 MHz, GCC-3.3.3
Румен.

PS:отчитане време за изпълнение с: time ./a.out


Титла: Intel Compiler Tests
Публикувано от: Йордан в May 29, 2004, 22:06
a toq intelskiq kompilator kak se kazwa 4e ne6to mai go nqmam


Титла: Intel Compiler Tests
Публикувано от: zazzko в May 30, 2004, 00:02
Примерен код

gcc -march=athlon -funroll-loops  -ffast-math -pipe -mmmx -m3dnow -fomit-frame-pointer -O3 comp_test.c -o comp_test

Резултат:
real    0m0.601s
user    0m0.600s
Разликата спрямо старите ми резултати е 3 пъти.
И двете са при пуснато KDE.


Титла: Intel Compiler Tests
Публикувано от: vladou в May 31, 2004, 10:50
Цитат (GigaVolt @ Май 29 2004)
a toq intelskiq kompilator kak se kazwa 4e ne6to mai go nqmam

Ами за съжаление тои не е фрее. По принцип може да се изтегли от developer.intel.com


Титла: Intel Compiler Tests
Публикувано от: melwin в May 31, 2004, 10:55
Цитат (vladou @ Май 28 2004,23:35)
Нещо като обобщение:
Резултатите говорят сами за себе си. Ако някои има идея за по-добри опимизации при GCC да пише, ще ги тестваме.

ne znam koe za kakvo govori , no da testvash proizvoditelnost na kompilatori s podobna programa e .. meko kazano neseriozno !


Титла: Intel Compiler Tests
Публикувано от: vladou в May 31, 2004, 11:38
Цитат (melwin @ Май 31 2004,11:55)
ne znam koe za kakvo govori , no da testvash proizvoditelnost na kompilatori s podobna programa e .. meko kazano neseriozno !

Какво мога да ти кажа, млади господине, ако не знаеш, ще го отдадем на възрастта ти, а ако мислиш, че знаеш дай по-добър пример ;-)


Титла: Intel Compiler Tests
Публикувано от: vladou в May 31, 2004, 11:54
Виждам, че много малко хора са изтеглили програмата компилирана с ICC, за това ще повторя:

Всеки, които има желание може да я изтегли от  -  www.adsysgroup.com/dofp.bz2. Гарантирам, че няма висури или етц, но е голяма, защото са статични библиотеките.


Титла: Intel Compiler Tests
Публикувано от: melwin в May 31, 2004, 11:54
v /usr/src/linux go tursi primera !


Титла: Intel Compiler Tests
Публикувано от: vladou в May 31, 2004, 12:09
Цитат (melwin @ Май 31 2004,12:54)
v /usr/src/linux go tursi primera !

Ами да ;-) Не си далеко от истината. Според теб какъв ще е резултата? Аз вече го знам ;-))


Титла: Intel Compiler Tests
Публикувано от: в May 31, 2004, 13:52
http://www.netlib.org/benchmark/


Титла: Intel Compiler Tests
Публикувано от: zazzko в May 31, 2004, 17:32
Изтеглих я и да ти кажа резултата е много близък до програмата компилирана с gcc. Eто и резултатите:
real    0m0.585s
user    0m0.580s


Титла: Intel Compiler Tests
Публикувано от: vladou в Jun 01, 2004, 10:36
Цитат (Guest @ Май 31 2004,14:52)
http://www.netlib.org/benchmark/

Абе, мен, ти май не си разбрал за какво говорим тука. Аз въобще нямам идея даправя бенчмарк на процесори, а на компилатори! Малко по-късно днес ще ти покажа разликата м/у компилаторите в горепосочените от тебе тестове.
Ето и малко резултати само с ICC:
-без опции за оптимизиране
Loops: 1000000, Iterations: 1, Duration: 132 sec.
C Converted Double Precision Whetstones: 757.6 MIPS
- с опции за оптимизация -ipo -O2
Loops: 1000000, Iterations: 1, Duration: 15 sec.
C Converted Double Precision Whetstones: 6666.7 MIPS
- с опции за оптимизация -ipo -O2 -axN -openmp -parallel
Loops: 1000000, Iterations: 1, Duration: 4 sec.
C Converted Double Precision Whetstones: 25000.0 MIPS


Титла: Intel Compiler Tests
Публикувано от: Mecho_Puh в Jun 01, 2004, 21:03
Межете ли да ми дадете някакво сравнение с подобна програма между DJGPP и C++Builder


Титла: Intel Compiler Tests
Публикувано от: mironcho в Jun 01, 2004, 21:44
При мене разликата е много малка - почти нищожна ;)
Явно ако се компилира с подходящите опции, резултата е почти един и същ:

Примерен код
bash$ time ./dofp  
OK, dofp result = 6.000000e+08

real    0m1.144s
user    0m1.140s
sys     0m0.010s

Примерен код
bash$ time ./cccP2
OK, dofp result = 6.000000e+08

real    0m1.169s
user    0m1.160s
sys     0m0.000s


cccP2 е компилирана така:
Примерен код
gcc ccc.c -o cccP2 -O3  -march=pentium2 -pipe -funroll-loops


машинката ми е celeron на 333 mhz, GCC 3.3.2. Незнам до колко има значение, но gcc -то ми е компилирано за i686.


Титла: Intel Compiler Tests
Публикувано от: soulcollector в Jun 01, 2004, 22:08
$ gcc -O2 -march=athlon-tbird -mcpu=athlon-tbird -funroll-loops dofp.cpp

$ time ./a.out
OK, dofp result = 6.000000e+08

real    0m0.460s
user    0m0.460s
sys     0m0.000s

$ gcc --version
gcc (GCC) 3.2.2

CPU Athlon-Thunderbird 950MHz
gcc компилирано за i386


Титла: Intel Compiler Tests
Публикувано от: в Jun 11, 2004, 19:02
vladou,
icc se spravia otlichno s auto-vectorizaciata, i pri nalichie na SSE2(t.e. P4), e normalno poluchenia kod da e okolo 2 puti po-burz ot tozi na gcc.

Eto kakvo stava na moia P4-2.0Ghz(edna ot nai-starite versii na tozi cpu), 512Mb sdram - raboti na 133 Mhz:

//--------------------------------------------------
//--icc v8.0--> bez auto-vectorization(t.e. niama da
//--polzva SSE2 instr.)
$ /opt/intel_cc_80/bin/icc test.c -ipo -O3
$ time ./a.out
OK, dofp result = 6.000000e+08
real    0m0.332s
user    0m0.280s
sys     0m0.002s

//----------------------------------------------------
//--icc v8.0--> sus auto-vectorization(dobavih "-axW")
$ /opt/intel_cc_80/bin/icc test.c -ipo -O3 -axW
$ time ./a.out
OK, dofp result = 6.000000e+08
real    0m0.187s
user    0m0.097s
sys     0m0.003s

//---------------------
//----gcc version 3.3.2
$ gcc test.c -O3 -march=pentium4 -fssa-dce -fssa-ccp -fssa -funroll-all-loops
$ time ./a.out
OK, dofp result = 6.000000e+08
real    0m0.323s
user    0m0.269s
sys     0m0.001s


Vijda se che rezultata, i pri dvata kompilatora e mnogo blizuk(dori e v polza na gcc), PRI polojenie che se polzva samo scalrnia FP unit na P4 processora(t.e. bez SSE2 instr.).
Kato dobavia "-axW" ili puk "-xW", icc pokazva blizo 2 puti po-dobur rezultat.
Gcc zasega ne pozvoliava auto-vectorizacia... no dokolkoto sum chel, ima hora koito rabotiat po tova.

P.S. Otnosno tova dali icc e bezplaten ...
Ot site-a na Intel moje da se svali bezplatna versia na icc(samo za linux!!;) ... koiato, razbira se, ne vkliuchva *nikakva* poddrujka, no za smetka na tova licenzna e neogranichen. Ot izvestno vreme obache, za da stigna do linka, mi triabvat okolo 10 min borba sus site-a im.


Титла: Intel Compiler Tests
Публикувано от: в Jun 29, 2004, 10:25
Здравейте!
Случайно попаднах на тази статия. Може и на вас да ви бъде интересна.

http://www.citforum.ru/programming/C_comp/