-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!news.unit0.net!feeder1.cambriumusenet.nl!feed.tweaknews.nl
!postnews.google.com!t7g2000vbe.googlegroups.com!not-for-mail
From: bartekltg <b...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: normalize na fpu
Date: Mon, 13 Aug 2012 09:46:36 -0700 (PDT)
Organization: http://groups.google.com
Lines: 150
Message-ID: <d...@t...googlegroups.com>
References: <k07u5f$930$1@inews.gazeta.pl>
<a...@k...googlegroups.com>
<k0b8pv$k0f$1@inews.gazeta.pl>
NNTP-Posting-Host: 80.54.0.14
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1344876398 18475 127.0.0.1 (13 Aug 2012 16:46:38 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Mon, 13 Aug 2012 16:46:38 +0000 (UTC)
Complaints-To: g...@g...com
Injection-Info: t7g2000vbe.googlegroups.com; posting-host=80.54.0.14;
posting-account=CvUQzQoAAABvVQmR58QmR6N4Cev1qhAS
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101
Firefox/14.0.1,gzip(gfe)
Xref: news-archive.icm.edu.pl pl.comp.programming:199267
[ ukryj nagłówki ]On 13 Sie, 18:08, " kenobi" <f...@W...gazeta.pl> wrote:
> bartekltg <b...@g...com> napisał(a):
>
>
>
>
>
>
>
>
>
> > On 12 Sie, 11:48, " kenobi" <f...@g...pl> wrote:
>
> > > 90 cykli - i tak szybciej niz to co wyprodukowal moj
> > > kompiletor (150) =A0[dokladnie nie wiem nawet czemu
> > > moze przez to ze ta funkcja jest okrojona tj nie
> > > sprawdza czy nie ma dzielenia przez 0 ;-)
>
> > Sprzed kt=F3rej wojny to kompilator?
> > ******
> > void norm(double &a, double &b, double &c)
> > {
> > double dl =3D sqrt(a*a+b*b+c*c);
> > a/=3Ddl;
> > b/=3Ddl;
> > c/=3Ddl;
> > }
> > ******
> > g++ bla.cpp -O2 -S --verbose-asm -g
> > as -alhnd bla.s > bla.lst
> > *****
> > 10:bla.cpp **** double dl =3D sqrt(a*a+b*b+c*c);
> > 61 .loc 1 10 0
> > 62 0004 F20F101F movsd (%rdi), %xmm3 # *a_1(D),
> > *a_1(D)
> > 63 0008 F20F1016 movsd (%rsi), %xmm2 # *b_5(D),
> > tmp96
> > 64 000c 660F28C3 movapd %xmm3, %xmm0 # *a_1(D),
> > tmp82
> > 65 0010 F20F100A movsd (%rdx), %xmm1 # *c_10(D),
> > tmp94
> > 66 0014 F20F59D2 mulsd %xmm2, %xmm2 # tmp96, tmp96
> > 67 0018 F20F59C3 mulsd %xmm3, %xmm0 # *a_1(D),
> > tmp82
> > 68 001c F20F59C9 mulsd %xmm1, %xmm1 # tmp94, tmp94
> > 69 0020 F20F58C2 addsd %xmm2, %xmm0 # tmp96, tmp82
> > 70 0024 F20F58C1 addsd %xmm1, %xmm0 # tmp94, tmp82
> > 71 0028 F20F51C8 sqrtsd %xmm0, %xmm1 # tmp82, tmp77
> > 72 002c 660F2EC9 ucomisd %xmm1, %xmm1 # tmp77, tmp77
> > 73 0030 7A25 jp .L6 #,
> > 74 .LVL1:
> > 75 .L2:
> > 11:bla.cpp **** a/=3Ddl;
> > 76 .loc 1 11 0
> > 77 0032 F20F5ED9 divsd %xmm1, %xmm3 # tmp77, tmp88
> > 78 0036 F20F111F movsd %xmm3, (%rdi) # tmp88,
> > *a_1(D)
> > 12:bla.cpp **** b/=3Ddl;
> > 79 .loc 1 12 0
> > 80 003a F20F1006 movsd (%rsi), %xmm0 # *b_5(D),
> > tmp90
> > 81 003e F20F5EC1 divsd %xmm1, %xmm0 # tmp77, tmp90
> > 82 0042 F20F1106 movsd %xmm0, (%rsi) # tmp90,
> > *b_5(D)
> > 13:bla.cpp **** c/=3Ddl;
> > 83 .loc 1 13 0
> > 84 0046 F20F1002 movsd (%rdx), %xmm0 # *c_10(D),
> > tmp92
> > 85 004a F20F5EC1 divsd %xmm1, %xmm0 # tmp77, tmp92
> > 86 004e F20F1102 movsd %xmm0, (%rdx) # tmp92,
> > *c_10(D)
> > 87 .LBE2:
> > 14:bla.cpp ****
> > 15:bla.cpp **** }
>
> > Na oko wr=EAcz szybciej:)
>
> > > =A0chcialbym to poprawic, czy ktos zna jakies zasady
> > > 'polepszania' takich funkcji ? i moglby zaproponowac
> > > poprawki?
>
> > 1. gcc/visual studio.
> > 2. Jaka=B6 wyspecjalizowana biblioteka, je=B6li tych oblicze=F1 wi=EAcej.
>
> > 3. Je=B6li nie musisz mie=E6 dok=B3adno=B6ci, to spr=F3buj to,
> >http://en.wikipedia.org/wiki/Fast_inverse_square_ro
ot#Overview_of_the...
> > 100 lat temu zastosowanie kilku iteracji Newtona by=B3o szybsze ni=BF
> > sqrt z koprocesora, ale dzi=B6 nie musi to by=E6 prawd=B1.
>
> w danym momencie zalezy mi na treningu asma a nie wynikach
> kompilacji, do sse jeszcze nie dojechalem
> - bardzo zle napisana procedura, nie ma sprawdzenia czy nie
> ma dzielenie przez 0 (co prawda takie podejscie jest
> wydajniejsze bo np w moim raytracerku zerowe wektory sie
Dzielenie przez zero oznacza, że wektor jest zerowy.
Normalizacja takiego jest zadaniem nieokreślonym
a wynikiem mojego programu jest trójka "nan",
jak najbardziej poprawny wynik:)
> akurat nie trafiały) i nie pisz4e sie trzech dzielen tylko
> cos w stylu
>
> double inv_d = 1.0/sqrt(a*a+b*b+c*c);
> a*=inv_d;
> b*=inv_d;
> c*=inv_d;
A to święta prawda. Zapomniałem o --fast-math
(normalnie siedzę w VS).
Po tej zmienie divsd zamienie się na mulsd.
> gcc jak widac tego zreszta nie zoptymalizowal i wstawil
> te trzy dzielenia, w sumie fajnie popatrzec na
Bez --fast-math mu nie wolno, bo zmienia to wynik.
pzdr
bartekltg
Następne wpisy z tego wątku
- 13.08.12 19:01 kenobi
- 13.08.12 19:30 bartekltg
- 13.08.12 20:07 Michoo
- 13.08.12 20:24 kenobi
- 13.08.12 22:21 bartekltg
- 13.08.12 22:54 kenobi
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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
Najnowsze wątki
- 2025-02-07 Jaki silikon lub może klej?
- 2025-02-07 Gdańsk => iOS Developer (Swift experience) <=
- 2025-02-07 Warszawa => Starszy Programista C <=
- 2025-02-07 Niby to nie sąd ale kooorwa tak to w sądach dziś wygląda?
- 2025-02-06 PROGRAM DOPŁAT DO AUT ELEKTRYCZNYCH TO ABSURD. ZA ŚRODKI Z KPO KUPIMY NIEMIECKIE I CHIŃSKIE AUTA
- 2025-02-05 ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-07 Smar do video
- 2025-02-06 Litowe baterie AA Li/FeS2 a alkaliczne
- 2025-02-07 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-07 Warszawa => System Architect (Java background) <=
- 2025-02-07 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-02-07 Warszawa => Solution Architect (Java background) <=
- 2025-02-07 Gliwice => Ekspert IT (obszar systemów sieciowych) <=