- A hozzászóláshoz be kell jelentkezni
- 3143 megtekintés
Hozzászólások
flto kurva jol hangzik, tesztelni kene.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
VC-nél már van valami ilyen. Ott ér valamit?
(LLVM-nél is van ilyen, de ezzel együtt is lassabb mint a gcc, így nem tudom mennyit számít...)
Ha az ember inline-ol ahol lehet (meg ahol a nyelv engedi), akkor nem hiszem hogy bármit gyorsít.
Persze ha az inline nem járható út, akkor sokat hozhat.
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Ma nem lesz ra idom tesztelni, de van ahol elfeljtik az inline csodait:
Ezt a tesztet kicsit inline-osabra irva egy ket teszt gyorsabb lett, erdemes lenne ezert megnezni javul -e a dolog ezzel az opcioval. (valami random.c? filet siman includeoltam)
Ha valakinek van ideje kezdheti ezzel :)
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
erdekelne a tapasztalatod
mellesleg holnap siraly? :)
---
Egy jól megállapított probléma félig megoldott probléma.
- Charles Kettering
- A hozzászóláshoz be kell jelentkezni
Holnap a Furediben leszek.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
-O3
Composite Score: 761.13
FFT Mflops: 646.02 (N=1024)
SOR Mflops: 708.44 (100 x 100)
MonteCarlo: Mflops: 308.55
Sparse matmult Mflops: 907.07 (N=1000, nz=5000)
LU Mflops: 1235.60 (M=100, N=100)
-O3 -flto
Using 2.00 seconds min time per kenel.
Composite Score: 837.87
FFT Mflops: 636.58 (N=1024)
SOR Mflops: 711.05 (100 x 100)
MonteCarlo: Mflops: 692.74
Sparse matmult Mflops: 913.39 (N=1000, nz=5000)
LU Mflops: 1235.60 (M=100, N=100)
Tobb mint dupla, mukodik :)
Gentooban ugy nez ki default lehet majdan.
A kernelen is sokat gyorsithat, filesystem ill. network kodoknal gyakran jol johet, foleg ha nem modulos kernelt gyart az ember.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Egyedül a MonteCarlo dupla. Ott a MonteCarlo_integrate is inline nálad?
A többi meg szerintem mérési hibahatáron belül van. Főleg, hogy az FFT gyorsabb -flto nélkül...
Meg persze kérdés, hogy mekkora object file-t generál (VC rohadt nagyot), illetve a végeredmény mekkora...
(Félre ne értsd, szerintem ez egy jó feature, de csodát senki ne várjon.)
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
A tobbi peldanak majdnem mindegy, kvazi egy-egy file, meresi hiba.
A kodon nem modositottam, ahogy a -O3 szereti, ugy van inline-olva.
A MonteCarlo.c intenziven hasznalja a kulon C fileban implementalt apro fuggvenyeket a Random.c-bol.
En sokat varok tole, a mai Objektum orientalt szemlelt miatt sokszor van a hivasi lancban 1-2 soros fuggveny kulon fileban implementalva. Ami Persze Ordoban mindegy, vegen nagy konstans szorzo lehet :)
Nem veletlen, hogy ez elott az emberek akkor is templatet hasznaltak amikor nem kellett, vagy inline fuggvenyeket tettek header fileba, esetleg #define.
Ujra le lehet szokni az ilyen csunya dolgokrol :)
Meretek: (x86_64, linux)
not
stripped stripped
-O3 23588 18544
-O3 -flto 27394 22640
Osszes object merete:
111592/35464 byte
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Csak arra lettem volna kiváncsi, hogy tényleg csak az inline "kiváltására" jó, vagy talál valami plusz optimalizációt ami nem látszik elsőre.
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Ez jo kerdes :) Siman csak fuggveny bemasolasanal tobbet kell csinalnia 2x gyorsulashoz IMHO. Latszolag ugyan azokra a trukokre kepes, mintha egy fileban lettek volna implementalva.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
"Siman csak fuggveny bemasolasanal tobbet kell csinalnia"
"Latszolag ugyan azokra a trukokre kepes, mintha egy fileban lettek volna implementalva."
A két dolog szvsz ugyanaz... Mármint az inline-nak pont ez az értelme.
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Pár régen várt C++0x feature is benne van már. Lehet kezdeni játszani...
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Érdekességnek jó. De amíg a többi compiler nem támogatja, addig célszerű a megvalósításokv legkisebb közös többszörösét használni.
- A hozzászóláshoz be kell jelentkezni
Valszeg félreértettem, de nem legnagyobb közös osztó? :P
- A hozzászóláshoz be kell jelentkezni
Inkább a feature-ök metszete. Számelmélet helyett halmazelmélet:)
--
CCC3
- A hozzászóláshoz be kell jelentkezni
Fuck, vesztettem :)
- A hozzászóláshoz be kell jelentkezni
Legnagyobb közös halmaz.
- A hozzászóláshoz be kell jelentkezni
ilyet nem ismer a matematika.
- A hozzászóláshoz be kell jelentkezni
Hogyan mondod azt, hogy az összes olyan halmaz közül, amely mind a kettőnek részhalmaza, a legnagyobb elemszámú?
- A hozzászóláshoz be kell jelentkezni
hint: ami "mind a kettonek reszhalmaza", az a metszetuk.
- A hozzászóláshoz be kell jelentkezni
:)
igaz, jobb, ha hazamegyek ma.
- A hozzászóláshoz be kell jelentkezni
Az összes közös részhalmaz uniója... :)
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Mivel a VC és az icc legújabb verziója is támogatja a ezeket (legalábbis elég nagy a közös halmaz), nyugodtan el lehet kezdeni a tanulást.
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Btw., lehetséges olyan, hogy egy c++0x featurét kihasználva gyorsabb kódot kapunk? (Vagy csak maga a kód lehet rövidebb/menőbb?)
- A hozzászóláshoz be kell jelentkezni
Lehetséges, az Rvalue references ezért került bele. Más nem jut eszembe, csak olyan ami esetleg mellékhatásként segít valamit...
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Erre kell figyelni:
On x86 targets, code containing floating-point calculations may run significantly slower when compiled with GCC 4.5 in strict C99 conformance mode than they did with earlier GCC versions. This is due to stricter standard conformance of the compiler and can be avoided by using the option -fexcess-precision=fast;
- A hozzászóláshoz be kell jelentkezni