12.07.2015 Views

LXFDVD

LXFDVD

LXFDVD

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Линейная алгебра для C++Тест про из во ди тель но стиПро из во ди тель ность рас смот рен ных биб лио тек оценива ласьв ч ет ыр е х т е с т а х , с оо тв е т с т в у ю щ и х р а з н ы м м о д е л я м и с п о л ь з о ­вания. В пер вом тесте 10 раз ре ша лась систе ма из 2000 линей ныху р а в н е н и й. М а тр иц а коэ ф ф и ц и е н т о в и п р а в а я ч а с т ь з а п о л н я л и с ьслу чай ны ми чис ла ми. В слу чае uBLAS и GMM++ систе ма уравнени й р еш ал а с ь к а к с п ом ощ ью и н т е р ф е й с а к LAPACK, так и си ла миса мой биб лио те ки. Во вто ром тесте 100 раз про из во ди лось ум ножен и е с л уч а йн о й м а тр иц ы р а з м е р а 2 0 0 0 × 2000 на со от вет ствующи й в е кт о р. Тр ет и й т е с т б ы л а н а л о г и ч е н в т о р о м у, н о и с п о л ь з о ­в а л а с ь м а тр иц а р а зм ер а 3 × 3 и 1 000 000 ум но жений. В треть емтесте для uBLAS и Eigen ис поль зо ва лись как обыч ные ти пы данны х , т а к и с п ец и ал из ир ов а н н ы е д л я м а л е н ь к и х м а с с и в о в ф и к с и ­р о в а нн ог о р а зм ер а . В ч е т в е р т о м т е с т е о ц е н и в а л о с ь в р е м я п е р е ­мно жения двух слу чай ных мат риц, раз мер ко то рых варь и ро вал сяот 10 до 2000.Тест про во дил ся на ком пь ю те ре с про цес со ром Intel Core 2Quad Q9300 (так то вая часто та 2.5 ГГц) с 32‐бит ной систе мойUb un t u L inu x 9.10. И сп о л ьз о в а л с я ко м п и л я т о р gcc 4.4.1 с фла га мио п т им из ац и и ‘-msse2 -O3 -march=native -DNDEBUG’. В слу чае Eigenи с п о л ьз ов ал а с ь о пт им из а ц и я -O2, так как бо лее аг рес сив ная опти м из ац и я с н и ж ал а п р ои з в о д и т е л ь н о с т ь. П р и м е н я л а с ь с т а н д а р т­н а я о тк р ыт а я р е ал из ац и я б и б л и о т е к и LAPACK вер сии 3.1, вхо дящаяв Ubuntu 9.10. Ре зуль та ты при ве де ны в таб ли це и на ри с. 2(вре мя в се кун дах).В ре шении систе мы уравнений без ис поль зо вания LAPACK лиде р ам и с о ч е н ь б л и зк им и р е з у л ь т а т а м и я в л я ю т с я GMM++ и uBLAS,а MTL4 и Eigen о тс т аю т п р и м е р н о в п о л т о р а р а з а . Ес л и и с п о л ь з о ­вать uBLAS и GMM++ как ин тер фей сы для LAPACK, то мож но добиться бо лее чем дву крат но го уско рения. В ум но жении боль шойм а т р иц ы н а в е кт о р Eigen, MTL4 и GMM+ + д е м о н с т р и р у ю т о д и н а ко ­в у ю п р ои зв од ит е л ьн о с т ь, а uBLAS от ста ет поч ти в 5 раз. При ра боте с м а тр иц ам и и в е кт ор а м и р а з м е р а 3, ко т о р ы е х а р а к т е р н ы д л ят р е хм е рн о й г р аф ик и, ф из и ч е с ко г о м о д е л и р о в а н и я и т о м у п о д о б ­ных за дач, Eigen д ем о нс тр и р у е т ко л о с с а л ь н о е п р е и м у щ е с т в о. Д а ­же при ис поль зо вании обыч ных ти пов дан ных, не оп ти ми зи рова н н ы х д л я м а тр и ц м ал ог о р а з м е р а , Eigen с п р а в л я е т с я с о с в о е йр а б от о й в 12 р а з б ыс тр е е ко н к у р е н т о в. П р и и с п о л ь з о в а н и и с п е ­ц и а л и з ир ов а нн ы х т ип о в д а н н ы х э т о п р е и м у щ е с т в о д о с т и г а е тпри мер но 20000 раз (!). Для сравнения, спе ци аль ные ти пы данныхв uBLAS у л у чш аю т п р о и з в о д и т е л ь н о с т ь п р и м е р н о в т р и р а ­за. Ху же все го справ ля ет ся с ма лень ки ми мат ри ца ми MTL4.П р и п ер ем н ож е н и и м а т р и ц п р о и з в о л ь н о г о р а з м е р а т а к же с с у ­ще ствен ным от ры вом вы иг ры ва ет Eigen. Вто рое ме сто у MTL4. Далееидут GMM++ и uBLAS, ко то рые для неболь ших мат риц демонст ри ру ют оди на ко вые ре зуль та ты. Для мат риц, боль ших чем360 × 3 6 0, п р ои зв од ит е л ьн о с т ь uBLAS р е з ко п а д а е т.Нуж но за ме тить, что в GMM+ + п о д к л ю ч е н и е и н т е р ф е й с ак LAPACK про ис хо дит «гло баль но» и ока зы ва ет влияние на всеопе ра ции, в том чис ле и на те, где до полнитель ный вы зов библи о т е чн о й ф у н кц и и «д ор о ж е», ч е м с а м а о п е р а ц и я. В р е з у л ь т а ­те при ис поль зо вании LAPACK рез ко па да ет про из во ди тель ностьдля ма лень ких мат риц.Для Eigen о пт им из ац и я, б о л е е а г р е с с и в н а я, ч е м -O2, снижа етп р о и зв од ит е л ьн о с т ь. П о - в и д и м о м у, п р и э т о м ко м п и л я т о р и в н у т­За ка дромИз биб лио тек, не по пав ших в эту ко рот кую ста тью, мож но на звать сле дую щие:Blitz++ (http://www.oonumerics.org/blitz/) – по тен ци аль но очень мощ ная биб лио те ка, од на ков ней нет реа ли за ции стан дарт ных ал го рит мов вро де ре ше ния сис тем ли ней ных урав не ний.POOMA (http://acts.nersc.gov/pooma/) – биб лио те ка, ори ен ти ро ван ная на па рал лель ноер е ш е н и е с и с т е м д и фф ер е нц иа л ьн ы х у р а вн ен и й .TNT и JAMA/C++ (http://math.nist.gov/tnt/index.html) – «биб лио те ки-оберт ки» над BLASи LAPACK (н а с л е д н и к и LAPACK++).SparceLib++ (http://math.nist.gov/sparselib++/) – спе циа ли зи ро ван ная биб лио те кад л я р а з р е ж е н н ы х м а тр и ц .ренние оп ти ми за ции биб лио те ки на уровне шаб ло нов вы ра женийн а ч ин аю т ко нф л и кт ов а т ь.Для uBLAS и GMM+ + к р ит ичн ы м я вл яе т с я и с п о л ь з о в а н и е ф л а ­га -DNDEBUG, о тк л юч а ющ ег о в н у тр е н н и е п р о в е р к и и у л у ч ш а ю щ е ­г о п р ои зв од ит е л ьн о с т ь н а п ор яд о к . В Eigen внут ренние про вер кио т к л юч аю тс я а вт ом ат ич ес к и п р и у р о в н е о п т и м и з а ц и и, б о л ь ш е мчем -O0.Ра с с м о тр е нн ы е з д е с ь т е с т ы д ем о нс т р и р у ю т п р о и з в о д и т е л ь ­н о с т ь б и бл и от е к в т ип ичн ы х в ар иа нт а х и с п о л ь з о в а н и я, н о, ко н е ч ­н о, н е я вл яю тс я и сч е рп ыв а ющ им и. Н а р и с у н к а х п р и в е д е н ы н е ко ­т о р ы е р ез у л ьт ат ы н е с ко л ьк и х б ол е е с т р о г и х с р а в н и т е л ь н ы хтестов с офи ци аль но го сай та Eigen.Вы во дыИ з ч ет ыр е х р а сс м о тр е нн ы х н ам и б и б л и о т е к н а и л у ч ш е е в п е ч а т­л е н и е п р ои зв од и т Eigen. О н а о б е сп е ч и в а е т п р е к р а с н у ю п р о и з ­во ди тель ность (осо бен но в ра бо те с ма лень ки ми мат ри ца ми),п о д д е рж ив ае т е с т ес т в е нн у ю м ат ем а т и ч е с к у ю н о т а ц и ю, и м е е тп р о с т о й и и нт у ит и вн о п он я тн ы й и нт е р ф е й с и о ч е н ь хо р о ш о д о ­ку мен ти ро ва на.В б о л ьш и нс т в е с л уч ае в Eigen буд е т о п т и м а л ь н ы м в ы б о ­р о м. Одн ако п о дд е ржк а р а зр еж е нн ы х м а т р и ц в Eigen все ещес ч и т ае тс я э ксп ер им е нт а л ьн о й, п оэ т ом у п р и и н т е н с и в н о й р а б о т ес т ак им и м а тр иц ам и в к ач ес т в е а л ьт е р н а т и в ы м ож н о р а с с м а т­ри вать MTL4. Функ ции для ре шения линей ных уравнений, на хождения соб ствен ных зна чений и аналогичные опе ра ции в Eigenи MTL4 р аб от аю т р а з а в 1, 5 – 2 м е дл е н н е е, ч е м с о о т в е т с т в у ю ­щие функ ции в GMM++ и uBLAS, а ис поль зо вание в по следнихи н т е рф е йс а к LAPACK уве ли чи ва ет этот раз рыв еще вдвое.Ес ли данная разница кри тич на (на при мер, для очень боль шихм а т р и ц ) и п ер ев еш ив ае т н е уд о бс т в а о т н е е с т е с т в е н н о г о п р о ц е ­д у р н ог о и нт е рф е йс а , т о р аз у мн ы м в ы б о р о м м о г у т о к а з а т ь с яuBLAS и GMM++ .Ссылки1 uBLAS: http://www.boost.org/doc/libs/1_40_0/libs/numeric/ublas/doc/overview.htm2 MTL4: http://www.osl.iu.edu/research/mtl/mtl4/3 GMM++: http://home.gna.org/getfem/gmm_intro4 Eigen: http://eigen.tuxfamily.org/Умножение матрицыУмножение матрицыБиблиотека Система уравнений2000 × 2000 на вектор3 × 3 на векторÄÒÙÜÓÖÑغºÄ½¼ºþþþ¸ÑÐÜÔØÓÒÑкÖÙuBLAS 9.317.41 (matrix, vector)2.84uBLAS с LAPACK 3.812.19 (bounded_matrix, bounded_vector)MTL4 14.05 0.59 21.37GMM++ 9.2 0.59 3.25GMM++ с LAPACK 3.85 0.6 7.920.18 (MatrixXd, VectorXd)Eigen 14.7 0.59

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!