Maple i Matlab jsou vysoce propracovan´a prostˇred´ı a ˇreˇsen´ı diferenci´aln´ıch rovnic je pouze jedna ˇc´ast ze ˇsirok´e sady n´astroj˚u, kter´e tato prostˇred´ı pˇrin´aˇsej´ı. Orientace prostˇred´ı Maple je sp´ıˇse na matematick´e v´ypoˇcty, z´abˇer Matlabu je v tomto smˇeru ˇsirˇs´ı. Obˇe prostˇred´ı jsou schopna vizualizovat vypoˇcten´e v´ysledky.
Naproti tomu syst´em TKSL1 je zamˇeˇren hlavnˇe na n´aroˇcn´e a pˇresn´e v´ypoˇcty. Je to tedy oproti Maple a Matlabu specializovanˇejˇs´ı software, neexistuj´ı do nˇej rozˇsiˇruj´ıc´ı pluginy apod., ve verzi TKSL/C dokonce odpadla moˇznost vizualizace v´ypoˇctu (ovˇsem zv´yˇsila se rychlost, pˇresnost) a jak´ekoli grafick´e uˇzivatelsk´e rozhran´ı - TKSL/C se ovl´ad´a v´yhradnˇe z pˇr´ıkazov´e ˇr´adky.
V Matlabu i Maple je potˇreba diferenci´aln´ı rovnice zad´avat pˇres dalˇs´ı funkce, kter´e maj´ı r˚uzn´e parametry, kter´e vyˇzaduj´ı urˇcit´e nezbytn´e studium dokumentace. Naproti tomu TKSL nab´ız´ı velmi pˇr´ımoˇcar´y a tedy jednoduˇsˇs´ı pˇr´ıstup, kter´y jiˇz byl diskutov´an dˇr´ıve.
Z hlediska pouˇzit´ych metod pro numerick´e ˇreˇsen´ı soustav diferenci´aln´ıch rovnic je vˇsak TKSL pˇredurˇcen k tomu, aby produkoval v´ysledky s nejvˇetˇs´ı pˇresnost´ı. Jak pˇresn´y m˚uˇze v´ypoˇcet s TKSL/C b´yt demonstruje Pˇr´ıloha C, kde je uveden pˇr´ıklad v´ystupu ze syst´emu TKSL/C pro veden´ı tvoˇren´eho kask´adou 500 dvojbran˚u.
1Uvaˇzujme obˇe verze - TKSL/386 a TKSL/C
Kapitola 7
Z´ avˇ er
Pˇri vytv´aˇren´ı t´eto pr´ace jsem se sezn´amil s r˚uzn´ymi druhy diferenci´aln´ıch rovnic, jejich klasifikac´ı a hlavnˇe s jejich vyuˇzit´ım pro anal´yzu pˇrechodn´ych dˇej˚u na dvouvodiˇcov´em ho-mogenn´ım a nehoho-mogenn´ım veden´ı. Velmi pˇr´ınosn´ym se uk´azalo na takov´eto veden´ı pohl´ıˇzet jako na bˇeˇzn´y elektrick´y obvod tvoˇren´y souˇc´astkami, u nichˇz jsou zn´amy charakteristiky jejich pˇrechodn´ych dˇej˚u.
S vyuˇzit´ım tˇechto znalost´ı pak byly sestaveny modely veden´ı, nejprve byl definov´an n´ahradn´ı dvojbran veden´ı, kter´y je jiˇz v´yhradnˇe tvoˇren pouze elektrick´ymi souˇc´astkami. Z takov´ychto dvojbran˚u byly postupnˇe vytv´aˇreny kask´ady, kter´e ˇc´ıtaly aˇz 1000 dvojbran˚u, simulace takov´eho veden´ı vˇsak byla ne´unosnˇe dlouh´a a nav´ıc se uk´azalo, ˇze stejnou vy-pov´ıdac´ı hodnotu pro anal´yzu pˇrechodn´ych dˇej˚u, m´a veden´ı tvoˇren´e 500dvojbrany, proto byly dalˇs´ı experimenty prov´adˇeny s takov´ymto modelem. V´ysledky experiment˚u uk´azaly r˚uzn´e zaj´ımav´e vlastnosti a z´avislosti, kter´e na veden´ı vznikaly. Homogenn´ı veden´ı posky-tovalo relativnˇe oˇcek´avan´e v´ysledky, s veden´ım nehomogenn´ım byly rovnˇeˇz provedeny urˇcit´e experimenty a popis chov´an´ı nehomogenn´ıch veden´ı bude pˇredmˇetem dalˇs´ıho v´yzkumu.
D´ale jsem se sezn´amil s prostˇred´ımi umoˇzˇnuj´ıc´ımi prov´adˇet sloˇzit´e v´ypoˇcty v ˇcipech grafick´ych karet, a to paralelnˇe. Jako nejzaj´ımavˇejˇs´ı se jevila prostˇred´ı ATi Brook+ (ATi Stream) a nVidia CUDA. Byla diskutov´ana omezen´ı prostˇred´ı CUDA, v´yhody i nev´yhody prov´adˇen´ı v´ypoˇct˚u v grafick´ych kart´ach.
Pˇri implementaci programu v prostˇred´ı CUDA se naplno projevil probl´em mal´e pouˇziteln´e pˇresnosti ˇc´ısel v plovouc´ıˇr´adov´e ˇc´arce. Dle aktu´aln´ıho v´yvoje by dalˇs´ı verze prostˇred´ı CUDA mˇely zaˇc´ıt podporovat dvojitou pˇresnost1ˇc´ısel v plovouc´ı ˇr´adov´e ˇc´arce, nicm´enˇe v souˇcasn´e dobˇe je CUDA pro pˇresn´e v´ypoˇcty t´emˇeˇr nepouˇziteln´a. Doch´az´ı k maximalizaci glob´aln´ıch chyb a v´ysledek cel´eho v´ypoˇctu je vysoce degradov´an.
Na z´avˇer pr´ace jsem se snaˇzil srovnat nˇekter´a dostupn´a komerˇcn´ı prostˇred´ı pro ˇreˇsen´ı diferenci´aln´ıch rovnic s prostˇred´ım TKSL. Pominu-li u novˇejˇs´ı verze TKSL absenci GUI a nutnost vizualizace z´ıskan´ych v´ysledk˚u extern´ım programem, z hlediska jednoduchosti pouˇzit´ı a pˇresnosti jasnˇe v´ıtˇez´ı syst´em TKSL. V pˇr´ıpadˇe, ˇze by se povedlo v´ypoˇcty v TKSL paralelizovat, jistˇe by se z nˇej stal velmi v´ykonn´y, pˇresn´y a jednoduch´y n´astroj pro ˇreˇsen´ı nejen diferenci´aln´ıch rovnic.
Pr´ace stav´ı na ˇradˇe podklad˚u, kter´e jsou uvedeny v pˇrehledu literatury, pˇr´ılohy pak tvoˇr´ı uk´azky k´odu pro modely veden´ı a uk´azka v´ystupu z prostˇred´ı TKSL/C. S ohledem na diskutovanou problematiku jsem zad´an´ı pr´ace splnil.
1double, ale tato bude muset b´yt podporov´ana i v samotn´ych GPU
Literatura
[1] AnandTech: NVIDIA’s 1.4 Billion Transistor GPU: GT200 Arrives as the GeForce GTX 280 and 260. [Online; navˇst´ıveno 20. 04. 2009].
URLhttp://www.anandtech.com/video/showdoc.aspx?i=3334
[2] ATI Radeon(tm) HD 3800 Series - GPU Specifications. [Online; navˇst´ıveno 15.05.
2009].
URLhttp://ati.amd.com/products/radeonhd3800/specs.html
[3] ATI Radeon(tm) HD 4850 - GPU Specifications. [Online; navˇst´ıveno 15. 05. 2009].
URLhttp://ati.amd.com/products/Radeonhd4800/specs.html
[4] nVidia Corporation: NVIDIA CUDA Programming Guide 2.2. [Online; accessed 2-May-2009].
[5] Farber, R.: Dr. Dobbs’s: CUDA, Supercomputing for the Masses: Part 4. 2009, [Online; accessed 15-May-2009].
URLhttp://www.ddj.com/architect/208401741;jsessionid=
FE2KHIIJ15LI0QSNDLPSKHSCJUNN2JVN?pgno=1
[6] Farber, R.: Dr. Dobbs’s: CUDA, Supercomputing for the Masses: Part 5. 2009, [Online; accessed 15-May-2009].
URLhttp://www.ddj.com/hpc-high-performance-computing/208801731;
jsessionid=MZMDOS5HYCVE4QSNDLPSKHSCJUNN2JVN?pgno=1
[7] Kraus, M.; Kunovsk´y, J.; Petˇrek, J.; aj.: GPU Based Accelleration of Telegraph equation. 2008.
[8] Owens, J.: GPU Architecture Overview. [Online; navˇst´ıveno 20. 03. 2009].
URL
http://www.gpgpu.org/s2007/slides/02-gpu-architecture-overview-s07.pdf [9] Wikipedia: Partial differential equation — Wikipedia, The Free Encyclopedia. 2008,
[Online; accessed 2-January-2009].
URL
http://en.wikipedia.org/w/index.php?title=Partial_differential_equation [10] Wikipedia: CUDA — Wikipedia, The Free Encyclopedia. 2009, [Online; accessed
5-January-2009].
URLhttp://en.wikipedia.org/w/index.php?title=CUDA
[11] Wikipedia: Differential equation — Wikipedia, The Free Encyclopedia. 2009, [Online;
accessed 15-May-2009].
URLhttp://en.wikipedia.org/w/index.php?title=Differential_
equation&oldid=288542720
[12] Wikipedia: DirectX — Wikipedia, The Free Encyclopedia. 2009, [Online; accessed 15-May-2009].
URLhttp://en.wikipedia.org/w/index.php?title=DirectX&oldid=288626877 [13] Wikipedia: Euler method — Wikipedia, The Free Encyclopedia. 2009, [Online;
accessed 15-May-2009].
URL
http://en.wikipedia.org/w/index.php?title=Euler_method&oldid=291013770 [14] Wikipedia: OpenGL — Wikipedia, The Free Encyclopedia. 2009, [Online; accessed
15-May-2009].
URLhttp://en.wikipedia.org/w/index.php?title=OpenGL&oldid=289039478 [15] Wikipedia: PCI Express — Wikipedia, The Free Encyclopedia. 2009, [Online;
accessed 14-May-2009].
URL
http://en.wikipedia.org/w/index.php?title=PCI_Express&oldid=289825449 [16] Wikipedie: Obyˇcejn´e diferenci´aln´ı rovnice — Wikipedie: Otevˇren´a encyklopedie.
2008, [Online; navˇst´ıveno 29. 12. 2008].
URLhttp://cs.wikipedia.org/w/index.php?title=Oby%C4%8Dejn%C3%A9_
diferenci%C3%A1ln%C3%AD_rovnice
[17] Wikipedie: Parci´aln´ı diferenci´aln´ı rovnice — Wikipedie: Otevˇren´a encyklopedie. 2008, [Online; navˇst´ıveno 29. 12. 2008].
URLhttp://cs.wikipedia.org/w/index.php?title=Parci%C3%A1ln%C3%AD_
diferenci%C3%A1ln%C3%AD_rovnice
[18] Wikipedie: Diferenci´aln´ı rovnice — Wikipedie: Otevˇren´a encyklopedie. 2009, [Online;
navˇst´ıveno 16. 05. 2009].
URLhttp://cs.wikipedia.org/w/index.php?title=Diferenci%C3%A1ln%C3%AD_
rovnice&oldid=3499769
[19] Wikipedie: DirectX — Wikipedie: Otevˇren´a encyklopedie. 2009, [Online; navˇst´ıveno 15. 05. 2009].
URLhttp://cs.wikipedia.org/w/index.php?title=DirectX&oldid=3947995 [20] Wikipedie: Eulerova metoda — Wikipedie: Otevˇren´a encyklopedie. 2009, [Online;
navˇst´ıveno 15. 05. 2009].
URL
http://cs.wikipedia.org/w/index.php?title=Eulerova_metoda&oldid=3890796 [21] Wikipedie: Hyperbolick´a diferenci´aln´ı rovnice — Wikipedie: Otevˇren´a encyklopedie.
2009, [Online; navˇst´ıveno 2. 01. 2009].
URLhttp://cs.wikipedia.org/w/index.php?title=Hyperbolick%C3%A1_
diferenci%C3%A1ln%C3%AD_rovnice
[22] Wikipedie: PCI-Express — Wikipedie: Otevˇren´a encyklopedie. 2009, [Online;
navˇst´ıveno 14. 05. 2009].
URL
http://cs.wikipedia.org/w/index.php?title=PCI-Express&oldid=3881124 [23] Wikipedie: Taylorova ˇrada — Wikipedie: Otevˇren´a encyklopedie. 2009, [Online;
navˇst´ıveno 25. 05. 2009].
URLhttp:
//cs.wikipedia.org/w/index.php?title=Taylorova_%C5%99ada&oldid=3820134
Seznam pouˇ zit´ ych zkratek a symbol˚ u
Cg – C for graphics
CPU – Central Processing Unit
CUDA – Compute Unified Device Architecture GFLOP – Giga Floating Point Operations per second GLSL – OpenGL Shading Language
GPU – Graphics Processing Unit HLSL – High Level Shading Language OpenGL – Open Graphics Library
RK4 – Numerick´a intergraˇcn´ı metoda Runge-Kutta 4. ˇr´adu SIMD – Single Instruction, Multiple Data
Pˇ r´ıloha A
Program pro TKSL/386 popisuj´ıc´ı element veden´ı
var u1, uc1, i2,i1, ic1, u2;
const R1=100, R2=100, Rs=1e-3, Rp=1e+10, C =1e-12, L =1e-8, dt=1e-5, tmax=1e-6, eps=1e-10, omega=1e7;
system
i1=1/R1*(u1-uC1);
uc1’= 1/C*ic1 &0;
iC1 = i1 -1/Rp*uC1 - i2 ; i2’= 1/L*(uc1-R2*i2-Rs*i2) &0;
u1=sin(omega*t);
sysend.
Pˇ r´ıloha B
Program pro TKSL/386 popisuj´ıc´ı kask´ adu 5ti dvojbran˚ u
var u1, uc1, uc2, uc3,uc4,uc5,uX, i0, i1, i2, i3,i4,i5,
ic1, ic2, ic3, ic4,ic5;
const R1=100,R2=100,
Rs=1e-2,Rp=1e+10,{3}
C=1e-12, L=1e-8, dt=1e-6, tmax=5e-7, eps=1e-10, omega=1e7;
system
i0=(1/R1)*(u1-uc1); uX = R2*i5; u1=10*sin(omega*t);
uc1’ = (1/C)*ic1 &0;
ic1 = i0-(1/Rp)*uc1 -i1;
i1’ = (1/L)*(uc1- uc2 - Rs*i1) &0;
uc2’ = 1/C * ic2 &0;
ic2 = i1 -(1/Rp)*uc2 - i2;
i2’ = (1/L) * (uc2 - uc3- Rs*i2) &0;
uc3’ = 1/C * ic3 &0;
ic3 = i2 -(1/Rp)*uc3 - i3;
i3’ = (1/L)*(uc3 - uc4 - Rs*i3) &0;
uc4’ = (1/C)*ic4 &0;
ic4 = i3 -(1/Rp)*uc4 - i4;
i4’ = (1/L)*(uc4 - uc5 -Rs*i4) &0;
uc5’ = (1/C)*ic5 &0;
ic5 = i4-(1/Rp)*uc5 - i5;
i5’ = (1/L)*(uc5-uX -Rs*i5) &0;
sysend.