From 2497e3c742fe91b4163a5a1128e06f51ffbbf0e3 Mon Sep 17 00:00:00 2001 From: pgirl111 Date: Sun, 13 Oct 2024 11:03:08 +0400 Subject: [PATCH] borschevskaya_anna_lab_5 is ready --- borschevskaya_anna_lab_5/README.md | 30 ++++++ borschevskaya_anna_lab_5/images/100x100.PNG | Bin 0 -> 29763 bytes borschevskaya_anna_lab_5/images/300x300.PNG | Bin 0 -> 29791 bytes borschevskaya_anna_lab_5/images/500x500.PNG | Bin 0 -> 30829 bytes .../matrix-mul/.gitignore | 38 +++++++ borschevskaya_anna_lab_5/matrix-mul/pom.xml | 17 +++ .../src/main/java/ru/uni/rvip/Main.java | 98 ++++++++++++++++++ 7 files changed, 183 insertions(+) create mode 100644 borschevskaya_anna_lab_5/README.md create mode 100644 borschevskaya_anna_lab_5/images/100x100.PNG create mode 100644 borschevskaya_anna_lab_5/images/300x300.PNG create mode 100644 borschevskaya_anna_lab_5/images/500x500.PNG create mode 100644 borschevskaya_anna_lab_5/matrix-mul/.gitignore create mode 100644 borschevskaya_anna_lab_5/matrix-mul/pom.xml create mode 100644 borschevskaya_anna_lab_5/matrix-mul/src/main/java/ru/uni/rvip/Main.java diff --git a/borschevskaya_anna_lab_5/README.md b/borschevskaya_anna_lab_5/README.md new file mode 100644 index 0000000..d0ae569 --- /dev/null +++ b/borschevskaya_anna_lab_5/README.md @@ -0,0 +1,30 @@ +# Отчет. Лабораторная работа 5 + +## Описание +В рамках лабораторной работы была реализована программа, которая производит умножение матриц с применением последовательного и паралелльного алгоритма. +При этом последовательный алгоритм достигается с помощью выделения одного потока на выполнение. + +При указании одного потока подзадачи по умножению матриц полностью выполняются одним потоком. В качестве подзадачи было +выбрано нахождение строки результирующей матрицы. + +По условию задания необходимо было замерить результаты выполнения алгоритмов на квадратных матрицах размерами 100x100, +300x300, 500x500. На всех прогонах можно увидеть, что последовательное выполнение умножения матриц происходит медленнее +в несколько раз медленее. При этом чем больше потоков выделяется для выполнения подзадач, тем быстрее выполняется +алгоритм параллельного умножения. + +Результаты представлены на следующих изображениях: +![100](images/100x100.PNG) +![300](images/300x300.PNG) +![500](images/500x500.PNG) + +## Как запустить +Необходимо иметь установленную JDK 21. Можно воспользоваться встроенным в нее компилятором (javac), а затем запустить исполняемый файл (java) +или запускать из среды разработки. +При запуске нужно указать аргументы командной строки: +1. размер матриц (integer) +2. режим отладки (boolean) - позволяет выводить в консоль исходные матрицы и промежуточные результаты работы + +## Видео-отчет +Работоспособность лабораторной работы можно оценить в следующем [видео](https://disk.yandex.ru/i/ZafQV9CGjBIKIw). +Запуск происходил через IDEA с различными конфигурациями запуска (отличался размер умножаемых матриц и параметр отладки), +чтобы увидеть результаты выполнения на матрицах всех размеров, необходимых по условию задачи. \ No newline at end of file diff --git a/borschevskaya_anna_lab_5/images/100x100.PNG b/borschevskaya_anna_lab_5/images/100x100.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d7c685066a64ea33ddec132e4f7c27906dc055f0 GIT binary patch literal 29763 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%0D6s1Ez+h3aoDU@R_5YzxHWwkEuVmkMJw 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 PKhNA%P?gV0?9qi literal 0 HcmV?d00001 diff --git a/borschevskaya_anna_lab_5/images/300x300.PNG b/borschevskaya_anna_lab_5/images/300x300.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d48518f145b303dd64c302fc3aa824898f12bd0c GIT binary patch literal 29791 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 literal 0 HcmV?d00001 diff --git a/borschevskaya_anna_lab_5/images/500x500.PNG b/borschevskaya_anna_lab_5/images/500x500.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1380f244e85d7176098c1ff2388110d2e83496d9 GIT binary patch literal 30829 zcmce-1y~hYx3DXsfTTz*T0y#{Tco60x~01tL~tS9-QC@}kVSWQNOyNE_!sKl`}@v4 z=Z|y$d!GjbeONW;m~)JGyu)8sS`-Bl5An&9Cn#bch2)<+fdxYU-hu!J{oSMjT^9NW zjGesbhbJY21l!PWo*4;92|RgH9*T6Q`yBfH3+s=nc2AzXvVZ&qvuH@{{N#!AQ!ya{ zMQ5%3WEW+Op34WX&|DDASs6kKjNBPQ?@BA9ZV!xrumSpKS)sS2eF*6G?*-lqyfr3y z^&%`Rn;-1}Qn+KDJltx5Fvu~_ueJI9Qp#bXc&>J5a`NHu;r{TUl@S^I`zuL{gYh!} zsQc@SbKP2}`>+49>s@XQ`~B~_fQ=}y_nSXI!q`vc2P^pJM|9&92E$>&CqGKBmLBeL zD7G$J&wqFy;9r+f1}s~}jY)Xkx<@p(%TC?MWmMt_m%j$>zz`g29$no{&s+svm*3XK zB$_KIa#BBB+%f%rQT<}JMXj<6o<5d^Sf2zS1CG<1AW{O`j6>6$$43lAZc=<8xc@#Y zkyIejJ^5SY%|$IfE03S^8IO`XTLZv^BfQi<~L+e+SH*mBm0?d6$m(THhe_R3w?ZifE( z6r>~0;DF+&2SbIjINagH%_WpZa;}@4hROKT7w|uq?De2rRzPEG?*er3-C=W$ z;JvK@Zyv}s0#~<+`lY%lm6?9N+AbtQen>!Xj`5i^;cwH$>f^<+ufR^CIc&XJ!Ets! zsZV9PyknzJl{$#(>K!rn2ynS%yIZN(-qmu4B9uI3ah{`SbW)wR_Miww!4l7xY| zHY`6<0g;%&McSy;UqmT>vp?6>3uxp*yWQ>>!>zlFX zXb9xZVU&p&Y3g~$&h2-`WWuPfT=rh0(pu8#U)$OKG^l@Faw~Y${HPbzmPThz0KoqX^fA6C>FW4?5wwpXg(R+_XzdcFt(5Z5oh*Bm66wX1K=?{5FSUlDA&tC@l%7FHB@X zG>oi<-YX?p-7?eO7!D_7re#@SrG#5fPesC(7KTm1^uxNsT>N!L z4>k7ZB>!h(F2Yz_Dd%ku`Dg~X<)}{3&Bj;oezyt@DH(<2r>%Zk5h8dA`t~|wVe*LG zY?$!uO%!>)sXr_6`b3se`277M`dz`$X(^Z_>2uFp&E8~loj6r%EOyKJ@A5tkjj(Z-zUUhJU;~M_%~@Z>ds^!yl;x5VU4915 z3)nKPMU2KwX*~lq9MjzqVmP>nU6MU~{`*Ww-Ed|G&W&vibB!wHQPPQce(G%zAj6m- z#V66x06UBF7U&Zm@-M#m3;<|-NM$b1wY;1oxG{Z|3i|$BOFJd%O`+w}Id1N0Etl^| zB*u8>a1q8ktW%)*llj?!dwI4LJPFzh*9s?Y2Vjev?jc+&U~D z;LY&HeXj)}+Z9utf&hRQzHq|+v|)1xmb!Ufzg8K2bq;hNSjUmTzUcI&t4JDn5oOT3B?f&Y<`T7H;{ctN@Uj zG+?LFK1Zc(hw{yr4&qD+4@bQMm@)&Uxp(vgl#|3UH{U`-4Q!obK`2v7wt2{y2YszL zJtIcQk$ves#pjtB*I4da@H-XJ7--1rMXCZ~oFzCEL*rEILuKine!N^hZb#{K0vve# zJsqV+QM#?TUmw6cF|dtS!CYY z)Z+9dtP9|M{BJ!V&<%iIsl(pvlOp{q=lWDFiI_k*shd{WIsL1F5X6POum~^QiHUW} z(S7dm-tY$YQi}@}H)OOvVkHLGkB=X4!h8Yj>fq~7x8hZ1{3ML#*W7PY=KS;)tn3b( z1U_ntIO(p;-lw`)r#}?9aOO{)z)*Z`lyJ7D!Z3iG9ENVuj~o)-ZJzx7dBaI_F!sN+ zrS}!YcOF{;lB*+e0XNFF?BB#;0u0kf%IUs_pq16KXD*rwdz^Y854ycXMXZm)6} zgE7dU6miL2bacB)j2H-tzhZ3iDyN|`&g?aaM*C^U_&?IiOb=(7qCZkn%d zY!E#rGkD#QL8viZUO4qF?2O|r`YI#-$HF)*eTUCnr;cq3h#iFE#Xu9i%eW$TkeApk zmio#(mvu`_Z`VWfV(WOw7~e(-_VzT#n8}D^xGqpIN-m`0>Vs4Ve8O%I=xceva}!q6 zCx?1nr?{v3gp~ZTNg+kGclZm|O`(%>G5CQPXtLq44PNKgoMeRrf+PsY#e8i_3;mj( zI$mllzvod2%DPK=AND0zkqCD)Wx%dBy}uqW-^AAyBLWG2q?b*_7k|>ud@Y9{AUz zG3FBd{ThI}(wqeU@k%$rpkJ zC|ESHS1&G8!?&&khX|JjEQIpbMXi|sb#I~y_Xu@_AuTVUZP6}re^0fk#-aJ~n$0kE z<$i#?$}v>eK)vIlKRN65yVVoHqGunD`q9#xg}WV4^n37uhYP%zwhy7Yo~9u<0N0ev z51Y>_tOj0Z(PuV>5yJjjjegL#ph6F8;8&IXM#MmYCzo?^I6F6~dHs^}eV|KJ0f*-c z!v1DTUao1DK`TIM`YtwqLI)HNviS%7xYYP6IABbJ&6NVd$LpWUd5M|EHGCaSZup)L zJt=vw z=USgGBf~K%D}GNR!PdZ-u3f?8ie}J|P54bS5W$5)XCT6*?#rSK^~S-v>7}ij78rDk zT|7cYgvl$BcRjYI0b7R`t?;gZvEq$Gn0$!+q#rJ~>|n;(pj|%~d)a>My2I}z^{t3R z^kW7|ei9YH<%Bjfaw4}MUw}i(Yj!v}2`F%w>JM|;rx)3nDl6ajTWSmmEhPf0MJ4f5 zzw-ieaehrsC}jWOI%5&1P|K)Bx8H*7qwN7Glxp%5+s2)?qz*s31JsIqwxw}pY_6f& znGR&A^tpoIoc67a<%0lGH%d`UM|wu3Quw^FD`=S6a16esbCFsB$?|>S1+msT`1mxX zBkIYiZ(|QGW3{w0?hzcxm|TZKcMeHy(eY&lQrl;g^|*Mcqi();%k48XuYcd>B)pF| zRo=D?JzJXy{Xw@@lPn`gHtR%+OI=}gq+^4lJN1&<9!7J;6TA2DY}G~r_uZMJnu(w2 zxt_|^Oq|AC5#?cj@!Gwt07cCB6Y`z@b>WOfzoJqK5_GZndBa*1d(D3t-ZH zfjNptk=I(sWdRAaCHhPl;_1mAlt>mYX7Uc%&OQVe5Ryjzm~6USWf!4)m0T?+TS}?f zrg8qH!-+8z9iGq=w7Y$c-QtI?aqvSpIcfa^JT~Nw^CGX{Ei?}7dAlN%pXn7lb9;_Kk2v-x# z1iL?6vfW^TQ)_MmldLJ9*LcX+>^dZ3NAOWU3S#s0@Tf_bTY9X;a@485YmY?-{sXwws)ZFf+4-^3zE}x*8cy`TOwUd{Xd{`+xgIf<@cfTD2BTR=Bn*rO`9Ny{j z_Bf{`4~yC8JjT`O`Ne3ZnlR5a9Tf@E_0!j_Zl&ydoH2b|NoVr?T}iW@zIvx;M1fn- zJ8yO^tLFFGqPU->9$D0r@4ijGiIm+{mMe-oDpYZr=fA2K@=Buw>1$-wvQ6U2l-i9} zc1h>251*|-@HI!OcFZps?`%X*%g-BZvu+{Tv9UQIdwAey?(eg8RyFM5AWEf>RJ}~-{c<*0u8j&bvm1Fw?OH6P*TjUK&0Yo1xE&@g-zBqWfL4A?TfJzO4}%?A zK60~93ElZ!P5|zIl@tERL7TPuawxi^hV-dSpxu-m@Ia%NE?rZw6|;}A1!1dO`f2rj zq0J1l1I7ohIhCrVsT=h3Hg*{V$Twll7~C!BWqg{oeuQgrCW#WzS%W_{^cIwq0E^0y zp~=1zX}4Ky{5ob>HLT9@{5ZjS3suDdG}OrJ^Zp8!YXy~R<%{y(P}x?ZfLX}bSLoKx zA`QCQG8{UbYEyg+1hLjNE?hLIV2X`GL+VgwmnCG(43Qp0*GltSOWIpUu zYV6~<&S1NaIK6klNy{^sWSa z&-z`s3zO#tj&0yvS7Zp+$SyoJHW*oge9+VfFw@=4Oo!LNS%u3|^{>T>qFc@u8GUSL z>(PgycjK-2QWWK8F}-ihyPp(n7&B{aS1PzRhmSH70=Pz$V*=;rHP${G?W>AMV**kR z+afH_1qC)U5I&1YO^I=xQ>0IpW{m5W*m&EQONyhpTrn(N6Fjm8lSjetKf;wQd|M4P{eA!?i&d^P8QzW z5&kZY?h@%5-d-W;<>#266E7EBqvk~ngTtV7r)Qv@5-JcXnC5BBk6nMW zUM+MSvc z8|~MVSw5Abr`z%L!Bd=~oJQe)Pt8n%zRzhD#g_-1xHbuQ)D0SFN#E_g8 z`*a(3eJIaIv|NGtTts}xUMEfkJEvepbJ0=Pvh2-b`uFER)WouZ3Q_9<5Ec;V>}2#zw4BEO(;~~wZCo%hwyYfVI4DM|xF6LB`JOVinW``Q6dY+B zI_j;_qQ*?E%rmeYLeIfR%cxjUl3_IBS7wA*lO^y%Qz!59&-v^^%E1AijUe48A+Fnv z=QJrK5}#m6;(~ipCJZ%d%XlUO-RMyA=otiBEX%&=#;rz9@&e=AtXn^Cw$ z*i-Zs7Fu;&R@6=vDSPC|2@JDVb0PFQUqC!mf-xHMWtBb_BPtp%rQOC8SH2(>0kmdB zI1EBtZ3vF82cP?X&8VbITARtCx>~0^WoWRC?@k>L*)E$CylEEB-2CLX;8?vbh?|5EhDmi3N$^O&9h~6iITNz1(G`NI=j-@ zNa3T~&&uK0#n@2G5ooeOqpZZ+tj#9+ca0q*f$BRZy{%$;GJ_I_Ip}Uw1J7z=-70=S z*ALgG@(SgCV9L{X;}HMgHf>F2tnY$_>&$?)d+DAudr5aHILgqN8HgWOw-Ce>?zjGf z%U;Ur&7M1f_6~LWuSg@WoeT}wP(E@Y%xcLsQeoTj2gNIBJ3z!HnejT z>5Ekx6=<>4vq0ZNP{ggt?1ehuuP{4=r{W#+*0oJBpb%7FX_`*oX9&!y4Xj;gV^i<^ zd9U0LAO~%Z-vmFeFBik%L_7rn5 z9z==ih#F}j<4xO7!Yd60*gltO$vcu^?GnW>;G+i4-wrAgjl+b={!YA!DHv%Ft`S&| zCUwweFM1A`-p)`#pkb8jKpBDo*vK@Kv$x)uBkcoMpJliq2R4+SkX}O37!CC5v%N;= z6YYBis#&soasN8=g2BA6*}frjD|jzT4ONOE-wpYcTj(es5rh|?&H)V`HLZfj;3>_X zL)ByRRCzBf75X*)=JhVa05ok%5_uq4eci}4b3uv03Bn{a3r*i6)+qWuXuP}SxjKgd z5T7Z?O)bN>)$LDk|4^0!;a6V%@G#N5&Vj(}y-cRgzt{XJX==0nLrTI87OcUaYi(X1 zaNFv^n{arpKTG&>aD`!fi%m`xPY5SwgYrLskzK?`Ffs>=Y1isAwF(NljBB=S&`nyY!0r^t(&5i(Z_FFF$AcO z6(7%tXXhdH2@sQ8%&e%ocBy^2xPEeHb=b}xqVSmF%0M|w{XUel%&M}Q>Wuw5?$A3< z1aR6;SjO+!SZ36QnOOXUb0zF4gHqjO;opDw9ZXRQG}U879+l3<#qG~EjiSHG+YcR$ z_lE7tD8@@le5i(vNKSC^qS`hgL?qU7`jnQj!bU*EpVPRuR2(-gTh3-KXtF%>y(nh0 zG_KCdXMo&9xU15|JYaD5gXp-{nRmMIT2G=ob-p&w?Z@1R95Jt1s~6{PCH=s~cobc) zG2@Y;uegt~Xe&|VT(KoO&FkIhHw_KO1TFjA2sM1Q5$5#|lvThM8mHGjF%+H+Ng`2arHbF(W)#Mhrmjm_Dp7+D3|yG<&I41KKUT zT*$uIc&@uGP&Y2qrl^&%g+O4=8U(XB_hyAz~{?4I{XT3Hbm4mp}Xl-QEYPf*dfEBv_87f8AS4!sGc&jkdcSKBH zuS`V+cF6ckaQGd0QknQiu^&7mo3uIKj@t5rStTm;qc4Y4D1M@FkKk*kIMk((jo*oJ zn!r9{CpRB?Xnaoj;quZLi4Su%Jc*qO{W9buQ`#Umv-4gjb@NY%X5cg@q2C6R5Q}JC zdjt)X{-~@hoH*=Vl9APRuR7$B+yBYP9o!w4$1d)w=GW%zuNb7lD{@ja#}8Qi<^&-n zcQccHnan#14?KCeOYrQkZ<=*N*0d8W!%mqGqRDPzLM>dHl|ySPd5%1R(`g}7v1EsK z3eTS67Ga+dun0|GK33ma55o`566_6-iS_M4vsd|EGjXqHjS*SUC_Wt3g^9*(%y^%V zW_J<0Xlv{$o#_=~6Q-H`*)3{{5m?$L?UdwGm!3!`1ux>Q+YBbIT~~~0Kw7m`^O)ZP zu6msD&f4nRtiVv8^xuAD_Du|>einDxr! zrKoJS9Unh)_!xgPwDPw!jvM(1Y7|z+DBe^A=a)S7Vt9ufsdb-k@h#3vxg^V?C1Y6aSYl13$~#bjj< z2)EE(VD163dT#4u-|F*0}=9iQkmv0L%C7(;#Xg=}=PGwfet+ zdZ(4?lrC2u?cZd(eVk;>>mp*~ZI`~@6~J3JIW0FXh3*HlHsPBHnhcKkhzj?#SF1y| zKn^JJx6jhoeYDdpLsmLvFtey@#C*pe=@s8lK!o?5S#cSIOZtuSQQloqx<&)^4$>N2 zJ=Hf_W!~sISXHyEm=E4eaehz@ZO|3vMB`w5VC+IfRyt&9DE_2Uj8ZqF+m)f*anMDi zp$9g68ODH6YED{bIk@^>R@J^DY=)c3c~*UY`6z6o>vI zilVz{HagCX@e`y+dE9_nL%^a8#rRF}%^0kM;JBYOy=at^sHUK{zl}?DlIe6Z%+=y$ z#$NxieH-KU>tgTpY)gXsC>*klx`bjGro%Y7m2`cNfkV zuT$oYl%>w~O8+X%b!s?`Hn~5z(SEjg%+nW49pgs-_A_(9Fyj$BpU0^ldlq@lPUz3D zC`lUf8bxRAyA&3+yw57j)1Qt9v|s}3EXln@P#3y&MPkV9bw7YubkB%-?Ii$+jo9cX z(ya+(r`9mdsfzszeG>=kRZT#zOFFeo30%tGxlKKsH7j-QXK4K(xbr%jV7my7*)c6i zcsqGB&cRY=j-hY2bF|MdkNzXA%P0D?pOFdO3e-2i_}?T*)vdOsQ?|I#5ZGkq#PkjX z47T9ETXb-DKL<=^tli0lUo(&Qpzn=qG^3C9S%Q-qzKxigTp9rGcEBnYE4-58p~JZT zS(`Y7!QUkJSb4!W*1q1`2 zurX3clHkS6%$u?A8tp*&Qwp1l=s4+6@ta+`=JmAMRC1^951BU$_P1`8l;S8_-yJ={ zTJ=K^+Nh=NuGN@#pSSi)N9mv9FaW=KjrI`(<#_{&JBGz|2S>AmzwbQF(eKp-OtMaSY~ONMNZh;Vk(- zhL)@^Eo<@BL*PF9@AkSJHx?VvdP!TpF1aWs!JKVP?6N4E5YF9ArF|{A^*M_qdA$^j zFY6I$Jj@weM%qLlMg;@xR!X z@fjXi-m}nZ8Ts(gkDv_2Zz=P%seY6C+MsOKylh5|v4Q$&uoC)}$%6!*jb?00j!`KR z@n+{ynsAF%<`w1F=~j960EhM9XFzppx`Eckk*Df*+(2x$bhy|NrKGUT7LX#Zkrw_J z8iMv4N&eXc3*&v~aTh`ABoFGe;V*pd9BFf&oiS1GXJ}K+CWY#2 zmPN1c*UP+_w5-p)u|7S}Rzb2_o$G(CrVf9k)udnsQC_VO9bvY+`PjG293EbjW=+0O zm+}q^x-E}LW*suIIh_^*;LLyd5X!`*{%~C|g$I`|wMH)yyxxo6bp*1!q`5FsIU7i0 z6&3JD;NT%$C@ZDFL*Pu9=3~&3UCuhO@08yE3`mbcX{FO@nW78tR186#A@`6?4wZf7 z0mu57SZ{ zM&{v@ta`rwEzVVQ`jgX&aNVAERg0IT`1MXX-vm5%imHA^1Rs-r1hp~qXpG+b*eh=@;E0@jUB~H+2vhxUXp2We z7G$z;P>_e5bj50K($nnZ>|3E!6uRXUxwB`9S$T!?yFS0~*ddO6HHCa48l8EAb7J@6 zoLnq7SzM2;iuDsd$nY5}FZFh5?OBYEsaFEQkB1J9?!%NUQ0~iPBk>H@B5&^H&oyq= zm=%{K#USbBls4|MupeqP_Q8o#Z}=h#&*NH+afZg zy}sRI?i2w`l=3ku4lc9>@qefDLs5l)2Aty7S~=Y2r1h_nK(Wv{$*KPVFV@ayaDz*N zM&`VxSUwzHy1rS`Jyep(MDK>l%bXjkPsDeMcWE`>8jL@Y*LaRFwhQC#wNT;IIn4c4 z+hHn7+iw{Qrtjx@d-Y#l%FbsN>XZN-a}2Lf!fSdczW?A<6d!z810?`9gGrHh7_<9q z!cp?`GbQa0p3*GMG5NeG6j;Jk*wU0it$Ugllka;>+oQDkDpe>1`%>R##DZiC8A=82 zS(=M@B#G!+E--hwnm^KFIWAvm0w_UWMGG^~cPT%B+sWHfT_Z(Me?x@BCrOR0un#%b zT%f)isqXAX=w4F&+rH_24?MOL^M3Oqh04{xFPn+62p8QIdx&lV>VEN)GGoM$nvb&g zrpm!b>E#;k1V^Q8w=$OVNMI#rwbmfn`Jf!bF<}F^%-h)dh<@agbG6P`RLVj!z@ICm z^KLR{sV468wy6S8O53RU9C64>aNz(foCRKQ_+w?QBED;lZp!Gh+5bWZ|Jn z-pgWFZit3Z5owp&725;BEk}pD?dN-BTb(T_OPZ(#o4uSp6XG88lCwFns;*$TX}CL0rfA)t)j)%sV~8+b*^wgM+E}X7kMBpCt1rQYmL)<8Qh!4p6yLprsr&+&XKlOebZ&~deDjf zH6~`V@G|lso74{m(Gky)=suzQEUmNaSq3k8h8bmt-8o zn*Mzsf8|j)hfh?*nU2Wba#7=Cy1k89|HE3_cEVBeyjg>s#xvFM+h5)tTgt#whqJw5 zd^^po#2~UwNWoY{I2Yj59dwY`QPu=UC>sDp4g4Rs<57_{0cQCk4%KO$0h2Ab=Dx5Q zmLzV)dW5aM7WZ+j!$HaNdqa}00qf*B!tv*QYsj$383YrcuvCdWcK`9fW4p_Z&V zKkM4&Kdzq8Cr}Qmdpr@+o&hPA52+|;oVvZ!=Ow(1W_`*IVO@JGkPY&}V8P=zWxbU| zK~KR_JRqAgRLa9rTwe7q52*IJT3ArEgg=`w_@fXu!XXvEH&7yacq#VBlK$cg>MV1ow+&CyIRY%~mIZLM_K zUUo)oh0VL~iyGgzEVp2aLxa;?CR0%Rlh55gf5a`J;{t*fkWIhN+kb8VfZ?J-R3tcc zhTS&UB_(LP;g1{iU36{v6GG@Plm8O zNB|M}#f9WVAbIR)8L?aEFoeb8_Ic2W(Ri7{-gy75z^_(ElF`gZQ;8%T?kWg#_?hEz zjrz1!7;UEF^{gh0mg6xH({yN1=OSlKLuwkp`Z6B@r~jE)Jk~T5}aYQSSh3_#|V^nQl5?Uyqo_mZ`rbwJ-jO@ z?32UPJR~xEJued}lODiIEk-CnroeNH)b<1GEJ|oH7N0fAP&SHrwx#W;mjoLE(?2iH z(i?tzc8AMl?{n8Nb+>!zIUnK1znIBfpfK}=g5F{0&eM;d?ZFHeG~Yl zEGN8ej9wOwC>#WFJ%Ls%1u0nTh$-%J%c-Uzp}-z@sDO5voX?ZzLy|uG7-p_~(mE>h zr|70Xi+>P-_ahhdKUOH*K$l9!>}BY09?P{MQn?zQ zzC$DLx=L}k11Lq$8P+ym?MP`!{JL>}ADaIjTz{_H*OwOOrT(ZF_B4Y#do-%#_)0ST zy6kIhanUU}$FDzot(G9OY#fprrEcQQLYSTk_TEBUo#VW~SaV3(rJ9YFb_k-&&ZaVQ z6j{mkh~Y{bH8wXQv}X9+V(Ur8bwMO(3ORVFN5r`)6)EXq#(`?g2!Z#r3^ou|64w`y zV8ci^NdKQ$(SYA*6SjC`|>H$(i@QvHQH4P@=EH(j7T(8jvr|!QcZNqs0XU|0qN>+V=`3*W@HK zJo%O3b5|?0v2CQRXjSsiSt0}`>YDqDPDZ@?cFv-c9 z6kqf>LyAY1f*9IJDlT{SG%;(lodMg~pg96}vPhsO8v~h_BIk<^P@Gt(yj6t#Z2rYu zUNOF{7!L{c;5tQ;XMoKjtI5^ViR% zE_ENu$Ywhq=`6J%$*Jt*p%BLv3?V#iGi@C=K4hV*ne^9TWpXGF!dKmFkATf8!P#m#IpqIAzVkyBZlls)< z1hN^X?pvcGj3XdMAI7hHmSQ~%rHGd*I2Ai?7Utuxmb7iov*Ju7YZnN@70=aK0e*CG z2yd4`*E-r(+Q-K8hrv4wQ}rxkiTnY zRxayzx66qg{|WuKLk$q0WliTPe!YrXxaT7yHXb^Z4@0HfT}d=25W1=Pmqp(w*jL4? z6$&77qlJX$t-ETivL3qgBGpSdYoXM+nxt1a3ft&AQW4Tnjx20`UiKv*fhgL3GSQK4 z;E_&5MV>pvJp|f>E%AzZ$q4rpcJ&=nJ1Rf4TRrbFh#u#@v%!}#$me$HNyCkrr@mvV zggdlc3&UY0t7ERZ)qe(zx>SxN-BBHM)oQ`I4Oxyk%9N3{n`)J&`&Pym-?;-UquRf9 z)pFOg{VA}%D8td6R@Qy-^dJpk99VF120mM34O%Xw>P*2f4gEEs?UXc6biX{+;*Y^6>_)}giU zmKmKBG8R}q+Z+sgy0j@eQz<{{SFP`8D9vnJ)8uCI@Z`a09kd}6pBgx3?qwv-&9wP~ zq^TLW?FULonb8diwJpJxG1MeELTTl7!S84wOGE}|`4M9R$U}`GMcwB+)%uBH#22Nb z!Jn9O{fG^Q2mnNA^*=!Cr3RAK#O^xnL!DkdsqgrSa~JMu>$8pbopf}Y2F~PlH?Amg zxQ})gI9%~1I2euMFuuYHVo<7{$IZ)?^C{{&r(PePf}euhJ_QY+WQsYZ!GfV6`7W{y z0v%qttK~fYXJiI=?et&I%=}*@$^Y}=oWGyw87*h5tbzxw5mv_$pPembeRf{GT#z}^ zZi=on;$NC6>ihDw%$sGix;x!GVxqJ!uwdd4=)$nF23h37?oZhw8vuZuM53t3eQ+9& z^FF!h1#hle8q3$5zwex43%dOBW#dv&gnPh;r1ZWYh??B=z|l>Tf}H*lnm#!A)b5o| zp;$cB;^ZX@JE9N8X5I4?$E?psXs`p@TyXcL$Ch!6R9<)A}HZLp~Q{QXc7XM#KU zah}Kw*3xmhd`qePwj4fo`VZwrv#z;da94(?Y*Ej!e~j$bDbefxc60!5k4o-<=k#iI%6)AiagLp_=r?>8 zHC)jOp*##}0JcQ5SAW#u2wCDp_1dBZJPcfl6hVqcrXiT4ZkeH}5^0sZ4X5h3#0 z4EQm##Eg*Ut9RVrm%NzxVc$n z-aQKmPI)@C_n72C22~Ct?p-CUIP)%Ydk9w^@;uoW?iXnTc2>D34O7!gC|&Xk<@vs&IADO; zcXhO{5L1^zrKWiHYVq>0MpcFAjO(XRcW&& z-t3`sI)#DKWBjV`o`?06pkdLI<(W{=LUMaG}i4Sas&W4v`IxT}O0V(wY z={WdmT>H)pXBBiwGMCul|yBg3jENT4kvk0$swr4o4A)s%D4BC;g^Mo_wX}rVbfqG`*hl#L#?4 z)RDIM(a|(x@#A)~4)o=$ms$Ci-#6gXu{ScVqyC_9S1;+|O5X|9%RN3rxDb_+`P-Id zgeIVm6o-Al`%Onl)sl!sH~U;-w{}#)iuu^KoS0X0b}fP8?bsUXv6mt!(bCHbn@pjq zltk8T={#^50@yrkLWjVhb$Uu{ol{c&r`Q?d9+1*Z@1BGY_QAex30}!W(1Vp&pqz|m ze+97oQOyGDCW>TEGK{M>?Te=&qHOaadBHcThPuPnn8SAm+dHoTy=E?4Q|I1GopSTCm@2hmH-Q}Nmhv%Y`G*&to|ZCxGkAw zUOIr}Wk@6038>>$JY%<2m!A0h(&xa&NaN9)Ays&K8NMKu#`XWFn|mx>e6Ahb2SvI4 z+oW`ULqZ}IU)$pCS8w7!uZ|KZJEQM6$OR^GTM5I~_zr$;uYR1>^I83(ba~q}$Bf|1 zpGLZappViX0KvufU^X6*lO=hII`ol!Z`U90LkM}zP#}&XM?Oz-xdJz?2&Dn6bztlv zRKnfv8+r3f!j*HcWc>dCIS;&m4k`|^v@Ju}LY4K+B|<*L?AKF3%Uodwn@1@O$2BG$ zZqb;_U$asX)g<}r2;OPth9Y;`3{^99gF&fM@)k{>u%#uvt&o0F!#E8UBhS(|vV|SL zuY z3FzZzd0C*vQFYV;h>7j92b|T{Ah(G7ln?C;d2v=l>`e@Ew)jkBuz66!Hn{MYVLR|a zOB_$@gP-)J@InTPERHolgALs)05G!m!$Z?bIPn-`gu9dY4lZ1^`?u)Lci+@JTu@GOw++^HPmGVNb5*9ch4u2w zkh%`r-d|(!s9^=Gh@#_>v!UOQC$iXn{KZB*;D62+<6g0U8@tw=wE955@F;PMJ5q5G zr2a$!MiSVVf-z%rp8=o!Wo(xj3T>(K)GDU(r#}SsOR9vFi7iojiTnbQ`M)|8;Pw+* zCHsh{bM*ZvZ0-2%Dmq(bFXm|7p5-QNJu#{sATrrT`=>$ix3|j*e&R#^7cY4=B5`wP z(ho#M%FFxLlL_IT0gjB3=Y^Nda#^b^ePI!9G)=&UwJ1&+q^xx~asCsf!|Jru%oz3y z01I{IVia6PYrt}}#qyVksU6~6Z;qwGRy80Z2f**>T{`55o}!905P=MD_01B#EZ%Na(gR1 zeYf!(Ev?4;Jr6?o8VMEGA8FE1CrDADa$o(j0vdD6}m21ueON zE%`^BcoA&V>O!)qTza@Zn1EM%(Ah01`fOePi=gyJ!58UK@YT(o&X2$J`PKO09I6N( zkKtf&G`=+=+1_8Vs4W|aVXE^|(fL^WYq1!xk-Ja}M@#;VSdN`Vhure_XSk>!dm z3++6jh-qz&kZJmlzX25$B{sg+w}{w%@`X@1;LUsL&LQmoJ*fPU#WB0g3>_FInfiQ< zDBf$+%)tO9$_!rQJ6i~zf~U``S{b*UgdV$iQ29EBCbW!P>x=S$zr!drmKGvkbEyKM z!>2QH>4_rBCk&Yl4Ftj?=Lh9*Z4j1g%mS6nh;ekqcO8|W*8~~@GGd=S>gB*DaKfCK z`!vXT0B^EMtWjNp@ z^5^yI{L7bKG1vVWv-?B{aOx#($Yf@KgHr$hVE2MQL+#!*r|-XfQQ=>{=&!u4tZtKZ zyj9(Y7dS`J*cJ9U_v~?TCSMa#F!qa1Wf*sF{+r(GbMbc|)!!kcW*UTOGmm1){dK1{ z#Yl5Ux0`SM;zZvt@@rXQee}F+IKTeQhy)JicC;}F_qIPJP0T2-c(T!d5;CfCum>Fz zGBfh{G`<^-1BE7ej57Y=LsLO1P*s>==0^9hdZnp_0L#&Nyc9qQje^X9_HRnGj+g*w zkJf$tPX0{r0w8|zpz#d}qD(sV`TgXH)5j)a53xCSTWEfGSb9Cw9RDY-Z2EbDR zdRTRh+Lq%J!&0+}6krVYr7g2abXw^j6||||YG;}ZeMjeo&bI|+*C}w5nd=`=9kBL| ztpLmFa64m+vsQAMu^n_dx4>C+>O2yM0K{QF;x7;T$yY$Ri3I( zD_={Pr39!NjGU=Wy3Z*JBy-5pXJLAz2bw@pXH{?`epAU(?~o2VK&aW`E4z^Z(5JCCcDub`&p%dLx^?=3B`#FCDppu_5MK;`e#B zuL8W7B8jpW-)>ha?AOYv^ZpWh-z=PCi!nomrpGw_`JhLz<|H$^q(Bu3BW;a~Ch1ZG}Ev3ukr+F4vFPPun9|(C2QW+bV;x0S9_Pi+sTmR#!Rs< z_(6PzmoDD!DDXwU33s8~bs{0S`w{~CH2-U3B@{I`Gss!J?3U}HsTMhB=za81z)HwS zx3LfG8vMku5;v`oft;(~&ai-vmJjUGH#GIcJuqQ@EIe4{qTp!2>FvO*0@Ni=m|(W! z;{2oo(56o(L@4_gXE^r1aE6h(vOK&j3i!9(c*@~cc6D5OtrYOTyU(Z0peOIL8&8Bj z#b-$}l%xH`aYtQ47<~MM!ZS3E-ya(G=F@cDp}QTSghS9-=Bf@51KFW6s(;n|ko7>s z9$*c^Jo&;IEPbXW-c6kI*zuE>o^73t9KAB}&WDEmA8FW^RQpTcu4wD#k6h)2JadP= z#+ZjR)Bs=8Aa-SIau&wbPJ+hgV@_R_g zF0A0Sm!}l}hDP|IRs9A~hmNNnSGgcrem^uqYd;TOYw9U*2Wge90K)dzUD(I_0g4k3 zg*NH!XHA6Y^$Pu-D?Vo2m5WtoCiL(V_gP6rrQkd5AfLMfu^TsPaV=ggPv!E)8wyXF zkMz5qS)`1LwuMJs{di4{;euM@Q9lQV4?=%63Z+8wj5v2)u0QQ@1J&C?`2+?uVY#a@ z+ipJN72>z$R2}ZR96R)Q!$o9UU4zv$&i_N&VlZklY?vs>|JW~ zLju2nC%tqfB$;ZzJ&EG`(FI-(@qNQ#3;)KN?BK*oPm#p47MMB;t4x*J&yl)uXGcCy z!E5NnsaW+|&5q_6C*XUfh7r?^v!l$tcv$f28#GFjYcpJh{Z4q1yP~_;JF3%Do7w%L z2=#zTPk8LkIY|aALnxvyhb>(U&a5r>g|!26zWJYv%Uq1e@W6il7jwkm|54sqMn$>r z3s@RukQNX|L_|WQJEa8_9YPu;1d;Ae1!<&PV5kA51O;gXq`Nz$yJLXizJTtn=j^@D zK6{^Y?}z)9wOBA~-ii15J-_GA+~O7oL^i&~2LOfMjq7i3{{Iwg`h^Jt`tYAg3{XC4 z{PZ$*v6=fVEg)Qni8kI5Zw=JZQ&ZjpS;>9(sI4yeQB(BdXw}T%h#s$BKm%e6=BI&$ zOl@O6@UzNDU0UFQZE#yYQRbZZe1g~$!dAqt-Wv_1t`}8EEFx)QJF6ZX8PiH%bEUAL zB;1@BB_PY0e!5C!P#saBNI55F*0=!|@eB1eDuQ>qEnQ{ZyC~9(Q7JM?UKf~1dr#3g z3^Oya!>Zc(4G}fULBFcD)~3i#?gZpOMf8*Pjit%HfU9e3>CmFh=+;p zvK$Kgg$6oV(f53EI!w12LarhCffdt~y<@*ZlGTPc(gQDLab%%c91=409~R5mLF4?4 znylNjE+-0ks3I3ulns)s&DL z!)^>UspQQyl9#m7SDs67CV5A8+5{xgpksJrgsBK12ba9CF!G)}w#LH&0l})=ZY%v2 zt@SK5`wb_(U1f-?@SYq=HO?q)SF?r-YR1(n>)T8&PhBsc4(}JgOe!gLXoMGEu~KjC z%ZRo!t63YbjpE_E%5<}`#q#2p-&d2T&=dto5FDFM3x#SK$C$4a8TQogHRuy2YfqRt z!)NPEY4bsM1w2LNSbN&E9{ZiS`)jvqRET_s|%6Xhp@{T#@whCgFj-n?}2to>G@F@?= z@#qR4AFrBE_uEPKOI><}XBf=+kFA9j`0OV0yMy{}ikjtm7L*#i9z6ppK0chvaE_^V zBB8SGY^k{S9Q7Y&K6fo+mZ%y(Go`5gyvOX>EKm#!D^Q=Wf(oIwml`~)9DEs>GpD=> zD1BL^b5l&ZsUGH~qXU-g&)SrDm|TlK1kAKIV%I8~B%Gj+@teNLX5`&D(L>S}p`jvL zAaMncxi7|vy=eQS*UL8{KT1N&ktpTm?g_FZjl<;pRFn6m)}$XT)zQB zegV&8NVh!U?OR9C?x|w8C&0H$g%c51(^wQyKMljmz@gVawi148a3P)kOiMgzw_=I7 z<`937#VldWql7Qmsgit!hb8=oRoR4d!1xY{1`*Om7Uogm33XtxtDtzhCb3{!;H0p> z^SHzY1U26y&6IGdiR>b%XhJpCqdW!e2>=DURv8`0jn}? zMXeX(;D>s6?|1-FPb&r2D0oEP zrPyJQ>77^6hKW9Ib~cJV(-_flK`>OvdoZ|=T#$gY@zN!OuD~UO(7;Dl>XYJyOA=g` zt7Syk1NgjH`29J8ngrNED33?iwoKcv<09OHU{nDdf8ZsPXPL`6z=^{L8kt4t$lTS+ zQghXA1ZI+7EO-D<;-yHw2?sq#-0TTz>2(D<9?8TS8G@4Y)UfWv7ManP#FU*Rgp0_c z{tX2($KD1rz7YPi3vYq%g7g=gflBoJ`Djncain`zz-qqL552mf>k^!nYxk+h-~8Yu zyZ&`A*(6fPRwzW1{f}8O^hE)@KCPDH#Svr%hVVL47b%zOGRz2##y0t$WB6Gw{YD+c zjy(MicAbGsO=ggwvo8y?L}=>8uzx}}wsS1$=hjd*?@hu68L1kX`HqDOm|7vyBJ%1S zb&fc4jkz3YIG~~X@wbmYV6aF%72cx+4?w+p_%<=VMo|!VLGY zT8q|Hh?4X)#1C&1A5D#h!!Zw?hXS6O(>aV&diji^O~9f|VqK|~uMFvjHM0zC}njwhku3z9<7F;$9r?IiO701{T@-f=uf8 z^d$CLb(A$(pT>Jy_+D4TqAw70GV{N zqHz$vuT2vv=AM^|HP&k0Q)58*mVc?5mU*OhiwtAQeG?JeSzt4QVUsOXktKato}ADm zV9CT>H1*j|>yeZGSsMZ}cNng5x$h*O9yvA2H>QBXBkhQ^BGdI~RL40wfZV4QF>@(L zqcmWVCQ(d^iK`{C=4{j5T;)Z1~F~i_-&vJ9wBs zPYibiZ4jfsKL@U5L4GL2GhGO7Ua2aZ?Jq%{rkmMl!1Y9qos+LX05(`}5hL7K?lpK< znH!G(pR<_<{@G?GTmA!^`OlP%5+`HOY5tyG-tKTm^{c++`k#E}aeDqZ zE#$W@MAaSqtE+5ZvuOL73v+a=3WwGaQrBNh4OMdPF_dzOG#Y)`4!U$w>cn07@E9yM z4bDLGma3#${PrBpG*P|F6fS!%8~-SsC#Of?;xAo^k{MHJ#8U;Os1(|gF@e6j#fi5P zMTm?PLU}!>&=@I>Jk8C~1UhkAum0N>vv}0)o8&%e3acz5wF73pr0U;pYTjNB;CrDQ z_{P$p2kGAF_~sq0()zT&d5e7O281mp*pG6rf-T}Zs;s-$UVjnf?<6RKUB)q>TkP`Q z2_$7J?FMWL7-G*^AlEos-|-7l+D54h`CgRx`^cFQybK`cjqk|WBd?wr**`&wEhjQm zkh?~>^U7K!*SX4!d7wFz|Siopts7)w9LSV z??KZ+8m);FD58M#exqop_uDYfDTNzw+!gzMHh6RB!{s!cTg?1^2oimvpilM8yB>#* z?Bh%Ig?txmzMe)WC?v_Fuw<;l<)u)}9|}pR$x|8IU3;FP?$x&f3s^z&)-?9@Kr`d_wG{9D+N!}-BTY#L&s=cmcA9`z$>7P3ic4?S} zuy?Cn_B*bd0j9KHgkAS;9t%XUl1`vTZ6pnFS2bjUYl_wx)pHZYw)IN3%1zs#EN{z=yS zkAaE-D|K6Sg!{jy&7?ok=9*7-TG?;D1uAHHEyi|&qnERVg{`gCDM*@5wv6B`bAHZl z%^X~)Mw5-L#d4>1NBH)0NrCl}E6fU7Bt?*wB06Ay)vzBEQK#Ve(lIQxTNa2jew#s1 zC+wta05e_KF3pUd3wZXIDFkG5abvU8Z?sovL#=v@^g1bw5Ha?uapsi6O^(C;(xS>? zJe5j)AZb$~M6}8aJ1)xx|5*GH(r^0?ZyWJ;7z_lM#{FFC&1LpGX<(m>o@7LdC@0?6 zwGkZ%-vtXYRWS0bC$Tay5=0S|FupH$=Oghnf<1pIbpN4d4M~Nca}#OMPSmRJMn_S4NG_i zvF?X@tNoVt#&5NY`sJ2*{b^%|y)Fb2qP@wj6|jnlGX@cD;kG($1Y-71*xfj80-N`7 zt*pbXKG?G^;d_`}SZy4p?YjecN^(o!D5;9sL2SuDJcle7JpA$~&n?2VFqTK)h}LPg zY8^;nNS~!JN;f?4gl?ZuyEPp-$J-tjOh-aLjC*)(aCXah#e7XsU#@y<_jTTcVX`V- zTNd*&=s}WRudbzJ9sH5kq|0n&I}R2IOO1t-E8y0s$7K*8CT~6bybHvQx5j5{e~tN* z%#LIK7yGmSE``R;n^qTju=6xtk+9~lr7;C?fP!}4!_$qgD z^Hs8|y*u({kQ?{u5TJ+oW5VS^t!9>Rz>u~FswE6$=96wGhl$=<-V=wbUqZi9X0@w< zX3jagD<>f}PGxX0?j?uyRbOnSO;-6;gNdji&HIeGx=vh}mHmNrzNQLq_#D?^v@ylD zZz+z8awx45uNOM6-|lIJjO_b*D%5fMzJ^~EAa0pcS>!oUy}c}>2}1z7vyc(3ogA$n zniBl67nr+K?Y)~;6n#DOiNwD_n@P|ON&6EgWN1O{M{I@Tg~@3~B+XEvX}6OLb&|_C zbkdxwt(lMJRw?69YHo(JrP-I^-`#J%(BwMtUXJ?YivBS@C(Yt+Ho-;3AZxT+ge!EcLzL&M`nd zaE>WR*$~-mX2=+8|J|G}evsVGll}gNwX|;2gk37~$N3{xl$3Fhm);(g8w+v7rId7g-7;-sy+Zr&7)r`xDQw!dp^G1D zCdykxdr>eV`@Q1lDNwyMT+Y(DjWZo7%FkIS$B_D~IBE_<%it`<;)v6RZyMH6uxHvd zr68IYIH2dcOh$nM%<{hnjQKthrd+(E(VjmI6g7e4C&Xufh0?S0DukUD!haBpd;9Fn zCR)F84gggdrRp%WmlqQP6jBS0Z0u38%!=R&E;D<9hECiOTYU|>=i3u3`#@5val z00zi+TzqG`e*5=uF_`e|3Y6o!fMz$Bcl#>X%}?EN=|#>Q8#L%+?^-m)@?9BS6yu`O zNpruWJJwLzSc91sG==9fP-+~OCHcviqPrbWCF}66O5AZ9HiOE1Ng?SWYm|M^Lq=Cl00I%Ek?#gF_i5Rs%;*!R zk5KNvG;8KiIdwgk+235NK3fkbB5);I3Od9%72QwQ9Mgd|)IbEV)rNhb??iCmFQ*u9 z0)(1>X$y={B7zs~x`BBIRL^f$5%u|6sVhqvQ+_yqRp|JuJrtW_OF;^+G|qsWRh^|3 zFk!57PN)|8+g9|rZ1Ge|<<2@Pp0bhWn(uC%Y%?lK%R@TYxoQFxS~%8Ml5J2l1hAqQ{iJU zf-ns=xL;vk{N&4g#kBKqd>#+cWVRH$K3RsSFuG=TH{T<>Ig7QZ>!8 z(UwpIMN$(n5S|+9tv7;JTU2Eox{R%mqJF06z_WRokFHaP0Qpyt7S7Vr;vu~-Vg9-5+we=(chTyHsxN+^@K06W zx|H*bD@u}{`m19jT>l_C`)#m0`>E+*5Z@~9s>#X95X1czTSxEQC_b(F5}s9kc`m7Z zoO^R7J=D&00mo&`t9W0vPg%HW+bYMCYI8}#s3ka7e#KosV;jgjpSD4vxeUagK7DFv zZ0piL(A^_g5J#!m(opWocBP$HCj{p~x@|;yDSBly&jj{G7Sc!ge~%TjY`QsRp*;;j zJR%vNbAn`U)#y_)QDZYDi)I``O*_$HSjCA^#egatYF~NLp0n^y9BA=uVJX`t@BUvWzP$hX#G`itGZqMMGuBu29(qcw3R4woX!*}PBBODRo1 z;sxbmDx>GpK5BMs}OjJ8VUt`B6jqm&nQ_o_v z(QBaxOt*2uB>i&*>Plpp@MXL-xLt|Sn{p>Qv!2!R0`;kU-}Q{K)DY3{Lx(xj)~ZUn z`0lm$t^}3~IXG;NkKfC5PVS?cF~_sM);>~~dvY(&z)y3^(hvkPl6d*1&PrzIfB@d! z(DHHyGj2N&SdvFd13bp_i{?H7J0;9ro#Vd8TTCg3CkFZFy18AQ!5C%5Q!Dt_)|bwHRy%`Q|00| zR6`y(WdOL5^xW!qBQj zbt@b0_K;3}fO%d;fH(r2%BcS16qq&TP@jb%SNJShGKO>3x*`6eng!9g1IvegFheJs zbceS6GulQ_P{+ix!M9~>+MBaf@HxduBu9a!dpU@1}jCKeMF6KFl`&jXv!Dm|F#G1Yq<1%J&-`A_Fr& z);i>i4hs=TnGu_ndYOC-s6MVi7A-mNlH@<(wpEU>ZM~-?_PsQ-8Jix(4)2b}2D_x+ z;Ssn*BWDIkY;}k!%UWAu%kx!e;rxMh`tUMit_4@?N4vw1HYeHhQ9RXA(xmz`j|e;{ z&z`QufaGfj*`EszsPl%D@Ib9!R|VNj{4B9Wm*_bq-(s(2_zz5qX6{6*t^r5Uh1kVk zA-Q!N1Unn?p3BGS=o?u)79ue~HfHapk8I@RwHh;9h55)*y6ly?#9;9t z_@gB2JDvQLs`U!7+1qnbP~8=laJJ7H{@SQl_`>vi?ob1Vzr29v62(ZR|M0S^|1~{q zWVF~DSotVr*qQv_^p7_iCKg|Au|DH&Ju44qnfD?3pLIpZ>)iU&{_)*&|JX#w5arw5 zrNhujo6&#{mEU)V+;aMzbB9+RKlX=8><1sOSc6)%I~VZ5*S-P~TH%nhPV@uDnVzOL zso-b#4K_MdeX&Z~*wNDF-%MtvQuZgpSYskzKF7Gp$FYTw>*~HL`!CDG6nvw(MBw(> zd^+BKEHK2W6T|yT2#wihW~%GPGF5`KqYt9xG-(1`NVr{)Y^N_eu)wamUEpxa{-kIT zb@v^^&(PloV3F{=Sm0&duXeK)D2e^-qNm+Q=dOOrPs@3kdDCl^t5>5K;fmj>Reyb! z(-YGLENmk!R1LxtV5}ayQs8!5+U8Xg$rUKy$WYeF_^i3QB{(7ViS(H?y$a~$VIOPb_!|^YNqHoyE4x5#FF5d zw%e7#`3D^KwzePO8h8m2@TnA+cAw`MuLcdpzKE4WfUBad{P6is?IKI4!6-tw)86U- zC|S|F>fZ(zAHIOl9ITSPj(O6@8+q&Sk(xbwC7Ebr_Gbz(EqOk(2SwT$-taK + + 4.0.0 + + ru.uni.rvip + matrix-mul + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + + \ No newline at end of file diff --git a/borschevskaya_anna_lab_5/matrix-mul/src/main/java/ru/uni/rvip/Main.java b/borschevskaya_anna_lab_5/matrix-mul/src/main/java/ru/uni/rvip/Main.java new file mode 100644 index 0000000..27af3b9 --- /dev/null +++ b/borschevskaya_anna_lab_5/matrix-mul/src/main/java/ru/uni/rvip/Main.java @@ -0,0 +1,98 @@ +package ru.uni.rvip; + +import java.util.ArrayList; +import java.util.Random; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +public class Main { + + public static void main(String[] args) { + var size = Integer.parseInt(args[0]); + var debugMode = Boolean.parseBoolean(args[1]); + System.out.printf("Размер матриц %dx%d\n", size, size); + + var matrix1 = createRandomMatrix(size); + if (debugMode) { + printMatrix(matrix1); + } + var matrix2 = createRandomMatrix(size); + if (debugMode) { + printMatrix(matrix2); + } + var startTime = System.currentTimeMillis(); + var result1 = mulMatrix(matrix1, matrix2, 1); // сначала передаем в метод 1 поток-исполнитель + var timeOfExecution = System.currentTimeMillis() - startTime; + if (debugMode) { + printMatrix(result1); + } + System.out.printf("Время умножения матриц с помощью последовательного алгоритма: %d ms\n", timeOfExecution); + + var threadCounts = new int[] {2, 4, 6, 8}; + for (var threadCount: threadCounts) { // тестирование на разном количестве потоков-исполнителей + startTime = System.currentTimeMillis(); + var result2 = mulMatrix(matrix1, matrix2, threadCount); + timeOfExecution = System.currentTimeMillis() - startTime; + if (debugMode) { + printMatrix(result2); + } + System.out.printf("Время умножения матриц с помощью параллельного алгоритма (%d threads): %d ms\n",threadCount, timeOfExecution); + } + + } + + private static int[][] createRandomMatrix(Integer size) { + var matrix = new int[size][size]; + var random = new Random(); + for (var i = 0; i < size; i++) { + for (var j = 0; j < size; j++) { + matrix[i][j] = random.nextInt(100); + } + } + return matrix; + } + + private static int[][] mulMatrix(int[][] matrix1, int[][] matrix2, Integer threadCount) { + if (matrix1[0].length != matrix2.length) { + throw new IllegalArgumentException("Количество столбцов первой матрицы должна соответствовать количеству строк второй матрицы"); + } + var rows = matrix2.length; + var columns = matrix1[0].length; + var result = new int[columns][rows]; + try (var executorService = Executors.newFixedThreadPool(threadCount)) { + var futures = new ArrayList>(); + for (int i = 0; i < rows; i++) { + final int rowI = i; + futures.add(executorService.submit(() -> calculate(rowI, matrix1, matrix2, result))); + } + + for (var future : futures) { + future.get(); + } + + executorService.shutdown(); + return result; + } catch (Exception ignored) { + throw new RuntimeException("Ошибка во время выполнения алгоритма"); + } + } + + private static int calculate(int i, int[][] matrix1, int[][] matrix2, int[][] result) { + for (int j = 0; j < matrix1[0].length; j++) { + result[i][j] = 0; + for (int k = 0; k < matrix2[0].length; k++) { + result[i][j] += matrix1[i][k] * matrix2[k][j]; + } + } + return i; + } + + private static void printMatrix(int[][] matrix) { + for (int[] ints : matrix) { + for (int elem : ints) { + System.out.printf("%5d\t", elem); + } + System.out.println(); + } + } +} \ No newline at end of file