AUTOMATYKA 2010 Tom 14 Zeszyt 3/2 Maciej Wielgosz*, Ernest Jamro*, Pawe³ Russek*, Kazimierz Wiatr* Sprzêtowa implementacja czêœci wielomianowej funkcji orbitalnej na potrzeby obliczeñ kwantowo-chemicznych 1. Wprowadzenie Algorytmy stosowane w chemii kwantowej odznaczaj¹ siê ogromnymi wymaganiami obliczeniowymi. W przypadku bardziej zaawansowanych uk³adów cz¹steczek, sk³adaj¹cych siê z kilkunastu atomów, czas obliczeñ realizowanych z wykorzystaniem komputerów du ej mocy jest rzêdu kilku dni. Dlatego podejmowane by³y w przesz³oœci i s¹ obecnie liczne inicjatywy maj¹ce na celu przyspieszenie tego rodzaju obliczeñ [1, 2]. Zrodzi³ siê te pomys³ wykorzystania uk³adów FPGA do akceleracji obliczeñ zmiennoprzecinkowych w chemii kwantowej. Matryce rekonfigurowalne wydaj¹ siê atrakcyjne, ze wzglêdu na mo liwoœci implementowania niskopoziomowych operacji, które stwarzaj¹ szerokie mo liwoœci doboru oczekiwanej precyzji obliczeñ. Ta w³asnoœæ ma szczególnie istotne znacznie w przypadku algorytmów iteracyjnych, dla których w kolejnych krokach oczekiwana jest, coraz wiêksza dok³adnoœci obliczeñ. Redukcja precyzji obliczeñ prowadzi jednoczeœnie do zmniejszenia zajêtoœci zasobów, a przede wszystkim do przyspieszenia wykonywania operacji. Uk³ady FPGA dziêki silnie równoleg³ej architekturze wewnêtrznej pozwalaj¹ na dostosowanie struktury jednostki obliczeniowej do rozmiaru uk³adu cz¹steczek, dla jakiego prowadzone s¹ obliczenia, uwzglêdniaj¹c typy pow³ok atomowych oraz iloœci funkcji bazy. Obecnie coraz powszechniej wykorzystywane s¹ jêzyki wysokiego poziomu takie jak Impuls C, Mitron C [8], które jednak pomimo skrócenia czasu projektowania, nie pozwalaj¹ na tak efektywne modelowanie bitowych operacji jak jêzyki HDL. Dlatego postanowiliœmy w naszej pracy wykorzystaæ jêzyk VHDL, co zaowocowa³o równie implementacj¹ szeregu silnie zoptymalizowanych modu³ów zmiennoprzecinkowych, takich jak funkcja exp, akumulator, uk³ad mno ¹cy, które odznaczaj¹ siê lepszymi parametrami ni odpowiadaj¹ce im jednostki z biblioteki producentów [7]. * Katedra Elektroniki, Akademia Górniczo-Hutnicza w Krakowie, ACK-CYFRONET, Kraków 939
940 Maciej Wielgosz, Ernest Jamro, Pawe³ Russek, Kazimierz Wiatr Do realizacji prezentowanego w niniejszym artykule modu³u zosta³a wykorzysta platforma SGI RASC, istnieje ona ju kilka lat i zyska³a sobie rzesze u ytkowników. Pojedyncza karta zawiera dwa uk³ady Xilinx Virtex-4 LX200 oraz 80 MB pamiêci QDR SRAM [3]. Jest ona umieszczona w strukturze komputera SMP SGI Altix 4700. Autorzy przeprowadzili równie badania wydajnoœci wspomnianej platformy, opisane w osobnej pracy [4], co pozwoli³o wyraÿnie oddzieliæ wyniki prowadzonych badaniach od specyfiki i wydajnoœci samej platformy. 2. Algorytm Jedn¹ z najbardziej popularnych i najprostszych technik aproksymacji równania Schroedingera jest metoda Hatree Focka. Ogóln¹ procedur¹ rozwi¹zania tego równania jest metoda samouzgodnienia. Wykonywana jest ona w sposób iteracyjny, a do uzyskania oczekiwanego wyniku (oczekiwanej dok³adnoœci). Ogólna procedura rozwi¹zania równania Hartree Focka w zapisie macierzowym wyra a siê nastêpuj¹cym równaniem [5]: FC SCE = 0 (1) gdzie: F operator Focka, C macierz nieznanych wspó³czynników, S macierz ca³ek nak³adania, E diagonalna macierz energii orbitalnych, wszystkie macierze s¹ jednakowych rozmiarów. W niniejszym artykule prezentowany jest fragment algorytmu obliczania wartoœci orbitalu atomowego w punkcie bezpoœrednio wykorzystywany w ramach metody DFT [5], który wyra ony jest nastêpuj¹ formu³a (2). k l m χ () ir 2 klm r = Cx Cy Cz rx ryrz ce i α (2) i gdzie wartoœci r x, r y, r z s¹ to wspó³rzêdne punktu gridu rzutowanego na atom, dla którego prowadzone s¹ obliczenia, natomiast C x, C y, C z s¹ wspó³czynnikami normalizacji. Wyk³adniki k, l, m zale ¹ od typu pow³oki atomowej (s, p, d lub f). Natomiast wartoœci C i oraz α i s¹ wspó³czynnikami bazy atomowej, w jakiej prowadzone s¹ obliczenia. Zale noœæ r 2 = r x 2 + r y 2 + r z 2 okreœla po³o enie danego punktu rzutowego na ka dy atom [5] w siatce przestrzennej. Obliczanie czêœci wielomianowej funkcji orbitalnej wykonywane jest z wykorzystaniem wspó³czynników eksponencjalnych otrzymanych jako wynik dzia³ania jednostki EP, opisanej w odrêbnej publikacji [6]. Opisywane w tej pracy obliczenia prowadzone s¹
Sprzêtowa implementacja czêœci wielomianowej funkcji orbitalnej... 941 w oparciu o zale noœæ wyra on¹ równaniem (3), stanowi ona czeœæ sk³adow¹ formu³y opisuj¹cej funkcjê orbitaln¹ (2). k l m w x y z x y z χ () r = C C C r r r (3) 3. Architektura modu³u Implementacja równania (3) z wykorzystaniem procesora ogólnego przeznaczenia sprowadza siê do stworzenia struktury z³o onej z kilku pêtli obliczeniowych, w przeciwieñstwie do implementacji w uk³adach FPGA, która wymaga opracowania odrêbnego sprzêtowego modu³u. Podstawowymi za³o eniami przyjêtymi podczas implementacji algorytmu sprzêtowej realizacji wielomianowej czêœci orbitalu atomowego by³o wielokrotne wykorzystywanie raz obliczonych wspó³czynników oraz generowanie ich z w³aœciwym wyprzedzeniem, tak by mo liwe by³o zapewnienie p³ynnoœci pracy ca³ego systemu obliczania funkcji orbitalnej. Z tego te wzglêdu modu³ PP (obliczaj¹cy czêœæ wielomianow¹ orbitalu atomowego) podzielony zosta³ na dwa bloki sk³adowe (rys. 1): pp_gen, pp_read, z których ka dy spe³nia odrêbn¹ funkcjê. W zale noœci od typu pow³oki równanie (3) przybiera ró n¹ postaæ (tab. 1), uwzglêdniaj¹c¹ równie wspó³czynniki normalizacji. Dla wy szych pow³ok roœnie iloœæ orbitali atomowych, co jak to zostanie w dalszej czêœci artyku³u pokazane wp³ywa na efektywnoœæ pracy modu³u PP. Rys. 1. Schemat blokowy logiki PP (obliczaj¹cej wielomianow¹ czêœæ funkcji orbitalnej)
942 Maciej Wielgosz, Ernest Jamro, Pawe³ Russek, Kazimierz Wiatr Tabela 1 Czeœæ wielomianowa orbitalu atomowego w zale noœci od typu pow³oki Typ pow³oki Typ orbitalu (wartoœci k,l,m) Wspó³czynnik normalizacji Czêœæ wielomianowa s 1 1 1 p X 1 x Y 1 y Z 1 z d X 2 1/3 1/3 x 2 xy 1 xy xz 1 xz Y 2 1/3 1/3 y 2 yz 1 yz Z 2 1/3 1/3 z 2 f X 3 2/30 2/30 x 3 X 2 y 1/3 1/3 x 2 y X 2 z 1/3 1/3 x 2 z xy 2 1/3 1/3 xy 2 xyz 1 xyz xz 2 1/3 1/3 xz 2 Y 3 2/30 2/30y 3 Y 2 z 1/3 1/3 y 2 z yz 2 1/3 1/3 yz 2 Z 3 2/30 2/30 Logika pp_gen (rys. 1) generuje wartoœci wspó³czynników wielomianowych funkcji orbitalnej, które bêd¹ u ywane w nastêpnym kroku obliczeniowym. Natomiast jednostka pp_read odczytuje wartoœci obliczonych uprzednio (w poprzednim kroku) wspó³czynników, na podstawie informacji o rodzaju pow³oki, dla jakiej prowadzone s¹ obliczenia. Uk³ad mno ¹cy wykorzystywany jest do otrzymania iloczynu czêœci wielomianowej oraz eksponencjalnej [6]. Synchronizacjê pracy przedstawionych jednostek zapewnia automat stanu pp_fsm (rys. 2).
Sprzêtowa implementacja czêœci wielomianowej funkcji orbitalnej... 943 Rys. 2. Automat steruj¹cy prac¹ logiki obliczaj¹cej czeœæ wielomianow¹ orbitalu atomowego Modu³ pp_gen odczytuje wspó³rzêdne punktów rx, ry, rz z pamiêci FIFO i wykonuje obliczenia wszystkich czêœci wielomianowych dla pow³ok s, p, d, f. Operacja ta wymaga 22 kroków obliczeniowych. Tak jak to zosta³o uwidocznione na schemacie blokowym modu³u PP (rys. 1), pamiêci wewnêtrzne zosta³y zdublowane. Takie podejœcie umo liwia ich wspó³dzielenie pomiêdzy modu³y pp_gen oraz pp_read, które naprzemiennie odczytuj¹ i zapisuj¹ ich zawartoœæ. Mo na zauwa yæ, e opisane rozwi¹zanie uwidacznia swoje zalety, gdy obliczenia prowadzone s¹ dla pow³ok wy szych rzêdów (p, d, f). W takiej sytuacji nak³ad obliczeniowy logiki pp_gen zwi¹zany z wygenerowaniem wspó³czynników wielomianowych
944 Maciej Wielgosz, Ernest Jamro, Pawe³ Russek, Kazimierz Wiatr wykorzystywany jest w pe³ni podczas pracy modu³u pp_read, gdy raz wygenerowane wartoœci s¹ nastêpnie wielokrotnie wykorzystywane. Natomiast gdy w obliczeniach pojawiaj¹ siê dominuj¹ca iloœæ pow³ok typu s, nak³ad obliczeniowy zwi¹zany z wygenerowaniem wszystkich orbitali dla danego zestawu rx, ry, rz nie jest wykorzystany. W takiej sytuacji modu³ pp_read musi oczekiwaæ na logikê pp_gen. Proponowanym rozwi¹zaniem tej kwestii, a tym samym zapewnienie bardziej optymalnego wykorzystania zasobów obliczeniowych by³oby dokonywanie uprzedniego rozpoznania, jaka jest najwy sza pow³oka dla danego punktu i atomu (punktu rzutowanego na atomie) i nastêpnie podanie tej informacji do automatu steruj¹cego logiki pp_gen, tak by generowaæ wspó³czynniki tylko dla rzeczywiœcie istniej¹cych pow³ok. Z wprowadzeniem wspomnianej modyfikacji wi¹za³oby siê jednak opóÿnienie w uruchomieniu jednostki pp_gen, zwi¹zane z uprzednim okreœleniem najwy szej pow³oki atomowej w danym cyklu obliczeniowym, co w znacz¹cym stopniu zwiêkszy³oby iloœæ operacji sekwencyjnych w wykonywanych w ramach modu³u. W konsekwencji rozwi¹zanie to nie zosta³o wprowadzone. Schemat blokowy modu³u pp_gen zosta³ zamieszczony na rysunku 3, mo na zauwa- yæ, e modu³ ten zwiera w swojej strukturze dwa rodzaje pamiêci, z których tylko jedna big memory jest dostêpna zewnêtrznie (wspó³dzielona) oraz zawiera dane wykorzystywane w dalszych obliczeniach. Pamiêæ small memory pe³ni natomiast rolê pomocnicz¹ przechowuj¹c chwilowe wartoœci, które s¹ wykorzystywane w procesie obliczania wspó³czynników wielomianowych umieszczanych nastêpnie w pamiêci big memory. Sk¹d nastêpnie wspó³czynniki te czytane s¹ i wymna anie przez uprzednio obliczone wartoœci eksponencjalne otrzymane jako rezultat dzia³ania modu³u EP [6]. Rys. 3. Automat steruj¹cy prac¹ logiki obliczaj¹cej czêœæ wielomianow¹ orbitalu atomowego Nale y zaznaczyæ, e pamiêæ small memory zaimplementowana jest w strukturze FPGA jako distributed memory ze wzglêdu na niedu ¹ iloœæ przechowywanych wspó³czynników pomocniczych (tylko szeœæ). Pe³en cykl obliczania wszystkich wspó³czynników wie-
Sprzêtowa implementacja czêœci wielomianowej funkcji orbitalnej... 945 lomianowych orbitali od s do f wymaga przejœcia dwudziestu p stanów automatu stanu logiki pp_gen. Automat synchronizuje pracê wewnêtrznych pamiêci BRAM, multiplekserów oraz pobierania danych wejœciowych. Dziêki wielokrotnemu wykorzystaniu obliczonych wartoœci poœrednich mo liwa by³a znaczna redukcja iloœci stanów wewnêtrznych automatu oraz czasu generowania wspó³czynników wielomianowych. Ze wzglêdu na iloœæ danych przechowywanych i koniecznoœæ korzystania z dwóch interfejsów w przypadku pamiêci big memory zastosowano BRAM. Zapewnia ona równie komunikacjê pomiêdzy modu³ami pp_gen oraz pp_read. 4. Osadzenie jednostki PP w strukturze modu³u Orbital Po zaimplementowaniu jednostka PP zosta³a umieszczona w systemie obliczaj¹cym wartoœæ orbitalu atomowego w punkcie (rys. 4). Modu³ ten z³o ony jest z szeregu bloków logicznych realizuj¹cych obliczenia oraz zapewniaj¹cych komunikacjê z procesorem Itanium 2 1.6 GHz. Procesor ten spe³nia rolê gospodarza w systemie obliczeniowym i steruje prac¹ akceleratora, realizuj¹c jednoczeœnie obliczenia czêœci sekwencyjnej algorytmu generowania macierzy potencja³u korelacyjno-wymiennego [5]. Rys. 4. Osadzenie jednostki PP w strukturze modu³u Orbital
946 Maciej Wielgosz, Ernest Jamro, Pawe³ Russek, Kazimierz Wiatr 5. Wyniki implementacji Poni ej zosta³a przedstawiona informacja dotycz¹ca zajêtoœci zasobów logicznych uk³adu FPGA dla dwóch skrajnych przypadków szerokoœci magistrali danych modu³u obliczaj¹cego czeœæ wielomianow¹ orbitalu atomowego. Dla modu³u pracuj¹cego w standardzie zmiennoprzecinkowym podwójnej oraz pojedynczej precyzji, w którym zajêtoœæ zasobów jest wielokrotnie mniejsza (tab. 2 i 3). Nale y nadmieniæ, e precyzja pojedyncza zosta³a wybrana, jako docelowa, gdy jest wystarczaj¹ca w przypadku metody DFT [5]. Tabela 2 Wyniki implementacji modu³u PP dla podwójnej precyzji obliczeñ Wyniki implementacji #4-input LUT #FF # 18-Kb BRAMs Modu³ PP 4164 (2%) 6257 (3%) 6 (0.06%) Modu³ PP+core services 13495 (11%) 20204 (11%) 29 (8%) Tabela 3 Wyniki implementacji modu³u PP dla pojedynczej precyzji obliczeñ Wyniki implementacji #4-input LUT #FF # 18-Kb BRAMs Modu³ PP 1499 (0.6%) 1180 (0.5%) 2 (0.02%) Modu³ PP + core services 10830 (6%) 15127 (8%) 25 (7%) Czas wykonania operacji PP wynosi œrednio 10 taktów zegara, od momentu podania sygna³u odczytu do chwili pojawiania siê pierwszego wspó³czynnika orbitalu na wyjœciu. Nale y zaznaczyæ, e generowanie pierwszego zestawu wspó³czynników wielomianowych zachodzi w czasie, gdy nie pojawi³y siê jeszcze pierwsze wspó³czynniki eksponencjalne. Jest to wynikiem opóÿnienia potokowego modu³u EP [6]. Prezentowany wykres (rys. 5) obrazuj¹ przyrost zasobów logicznych LUT modu³u PP dla dwóch przepadków: Gdy zmianie ulega tylko szerokoœæ magistrali wejœciowej danych (szerokoœæ magistrali wyjœciowej pozostaje sta³a). Gdy modyfikowana jest liczba bitów zarówno magistrali wejœciowej jak i wyjœciowego interfejsu danych (w zakresie od 32 do 64 bitów). Na podstawie powy szych zale noœci mo na zauwa yæ, e zmiana szerokoœci magistrali wejœciowej w znacznie mniejszym stopniu wp³ywa na zajêtoœæ zasobów uk³adu programowalnego ni modyfikacja zarówno wejœciowej i wyjœciowej szyny danych. Dlatego te w sytuacji, gdy pobierane dane s¹ podwójnej, a dalsze obliczenia (w kolejnych krokach) prowadzone bêd¹ w pojedynczej precyzji, zalecane jest na etapie obliczeñ czêœci wielo-
Sprzêtowa implementacja czêœci wielomianowej funkcji orbitalnej... 947 mianowej zredukowaæ precyzjê wyniku, gdy przyczyni siê to znacz¹co do zmniejszenia wykorzystania zasobów przez logikê PP. Przeprowadzone zosta³y porównawcze testy obliczeniowe dla cz¹steczki wody. W tym celu dokonano pomiaru czasu wykonania algorytmu obliczania orbitalu atomowego na procesorze Itanium 2 1,6 GHz oraz na platformie RASC. Dla bloku 512 punktów czas ten wynosi 2885 us, natomiast czas wykonania tych samych obliczeñ na platformie RASC to oko³o 3174 us. Rys. 5. Zajêtoœæ bloków LUT modu³u PP zaimplementowanego w uk³adzie Xilinx Virtex-4 LX200 w zale noœci od szerokoœci magistrali danych Nale y zauwa yæ, e w przypadku cz¹steczki wody dominuj¹ca jest pow³oka typu s. Fakt ten znacz¹co wp³ywa na uzyskiwan¹ efektywnoœæ sprzêtowego wykonania algorytmu z wykorzystaniem akceleratora sprzêtowego, gdy niewykorzystywane s¹ uprzednio obliczone wartoœci czêœci wielomianowych dla wy szych pow³ok. Natomiast wykonanie tej operacji na procesorze wymaga tylko jednej iteracji pêtli i jest ma³o absorbuj¹ce obliczeniowo. Wraz ze wzrostem rozmiaru pow³ok atomowych, dla których prowadzone s¹ obliczenia, uwidaczniaj¹ siê korzyœci p³yn¹ce z zastosowania akceleratora sprzêtowego, gdy iloœæ iteracji wykonania operacji na procesorze wzrasta przy jednoczesnym zwiêkszeniu wykorzystania mechanizmów tablicowania oraz potokowoœci w uk³adzie FPGA, które mo - na uznaæ za znacz¹cy przyczynek do wzrostu efektywnoœci obliczeniowej. Na wykresie (rys. 6) zobrazowana zosta³a opisywana zale noœæ.
948 Maciej Wielgosz, Ernest Jamro, Pawe³ Russek, Kazimierz Wiatr Rys. 6. Uzyskana akceleracja obliczania funkcji orbitalnej w zale noœci od typu pow³oki, dla jakiej prowadzone s¹ obliczenia 6. Wnioski Zaprezentowana w niniejszej pracy implementacja stanowi etap do pe³nej sprzêtowej implementacji jednostki obliczaj¹cej potencja³ korelacyjno-wymienny. W ramach zrealizowanego projektu powsta³ szereg jednostek zmiennoprzecinkowych, które odznaczaj¹ siê niewielk¹ zajêtoœci¹ zasobów oraz parametryzowan¹ szerokoœci¹ magistral komunikacyjnych. Zaprojektowany modu³ pracuje w sposób potokowy, wykorzystuj¹c pojedynczy uk³ad mno ¹cy. Uzyskiwane przyspieszenie zale y od charakteru cz¹steczki, dla jakiej prowadzone s¹ obliczenia, a w szczególnoœci od typu pow³ok atomowych. W kolejnym kroku wykonana zostanie w pe³ni sprzêtowa realizacja funkcji obliczaj¹cej wartoœæ orbitalu atomowego w punkcie. Literatura [1] Gothandaraman A., Peterson G., Warren G., Hinde R., Harrison R., FPGA acceleration of a quantum Monte Carlo application. Parallel Computing, 34(4 5): 2008, 278 291. [2] Ramdas T., Egan G., Abramson D., Baldridge K., Towards a special-purpose computer for Hartree-Fock computations What s on the table, and how do we take it? Theoretica Chimica Acta, vol. 120, No. 1 3/May, 2008, 138. [3] Silicon Graphics, Inc. Reconfigurable Application-Specific Computing User s Guide, Ver. 005, January 2007, SGI.
Sprzêtowa implementacja czêœci wielomianowej funkcji orbitalnej... 949 [4] Wielgosz M., Jamro E., Wiatr K., Accelerating calculations on the RASC platform. A case study of the exponential function. Applied Reconfigurable Computing, ARC 2009, Springer-Verlag, LNCS 5453, 2009, 306 311. [5] Koch W., Holthausen M., A Chemist s Guide to Density Functional Theory, Wiley-VCH; 2 edition (Aug. 21 2001). [6] Wielgosz M., Jamro E., Wiatr K., Implementacja w uk³adach FPGA modu³u obliczaj¹cego funkcjê jednoelektronow¹. Automatyka (pó³rocznik AGH), t. 13, z. 3, 2009, 1043 1050. [7] Strona firmy Xilinx zawieraj¹ca informacjê odnoœnie rozwi¹zañ typu IP-core http://www.xilinx.com/ipcenter/index.htm. [8] Œrodowisko projektowania dla systemów HPRC: Mitrion-c, http://www.mitrionics.com/.
950 Maciej Wielgosz, Ernest Jamro, Pawe³ Russek, Kazimierz Wiatr