From 3c87d3518228d3b7bcfbd0a08cb79682f05132ee Mon Sep 17 00:00:00 2001 From: couturie Date: Tue, 4 Dec 2012 20:49:46 +0100 Subject: [PATCH] ch15 --- BookGPU/BookGPU.tex | 6 +- BookGPU/Chapters/chapter15/biblio.bib | 167 +++ BookGPU/Chapters/chapter15/ch15.tex | 1168 +++++++++++++++++ BookGPU/Chapters/chapter15/figures/1s2p.pdf | Bin 0 -> 15848 bytes BookGPU/Chapters/chapter15/figures/1s2p3.pdf | Bin 0 -> 15176 bytes BookGPU/Chapters/chapter15/figures/1s2pHT.pdf | Bin 0 -> 15536 bytes BookGPU/Chapters/chapter15/figures/1s4d.pdf | Bin 0 -> 16365 bytes BookGPU/Chapters/chapter15/figures/1s4d3.pdf | Bin 0 -> 15962 bytes BookGPU/Chapters/chapter15/figures/1s4dHT.pdf | Bin 0 -> 15111 bytes .../chapter15/figures/C1060_V3_IO_COMP.pdf | Bin 0 -> 8079 bytes .../chapter15/figures/CPU_1_CORE_TIMES.pdf | Bin 0 -> 10892 bytes BookGPU/Chapters/chapter15/figures/Domain.pdf | Bin 0 -> 5201 bytes .../chapter15/figures/GPU_V5_C1060_TIMES.pdf | Bin 0 -> 11567 bytes .../chapter15/figures/GPU_V5_C2050_TIMES.pdf | Bin 0 -> 13151 bytes .../chapter15/figures/amplitudes_nb.pdf | Bin 0 -> 59704 bytes BookGPU/Chapters/chapter15/figures/error.pdf | Bin 0 -> 9131 bytes .../chapter15/figures/histo_speedup_1core.pdf | Bin 0 -> 18337 bytes .../figures/histo_speedup_4cores.pdf | Bin 0 -> 18577 bytes .../chapter15/figures/offdiagonal_nb.pdf | Bin 0 -> 53322 bytes BookGPU/Chapters/chapter15/figures/prop.pdf | Bin 0 -> 5845 bytes BookGPU/Makefile | 3 +- 21 files changed, 1342 insertions(+), 2 deletions(-) create mode 100644 BookGPU/Chapters/chapter15/biblio.bib create mode 100644 BookGPU/Chapters/chapter15/ch15.tex create mode 100644 BookGPU/Chapters/chapter15/figures/1s2p.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/1s2p3.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/1s2pHT.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/1s4d.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/1s4d3.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/1s4dHT.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/C1060_V3_IO_COMP.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/CPU_1_CORE_TIMES.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/Domain.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/GPU_V5_C1060_TIMES.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/GPU_V5_C2050_TIMES.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/amplitudes_nb.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/error.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/histo_speedup_1core.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/histo_speedup_4cores.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/offdiagonal_nb.pdf create mode 100644 BookGPU/Chapters/chapter15/figures/prop.pdf diff --git a/BookGPU/BookGPU.tex b/BookGPU/BookGPU.tex index e2a1c03..7936982 100755 --- a/BookGPU/BookGPU.tex +++ b/BookGPU/BookGPU.tex @@ -17,7 +17,10 @@ \usepackage{algorithmicx} \usepackage[lined,boxed,commentsnumbered]{algorithm2e} \usepackage{epstopdf} - +\usepackage{url} +\usepackage{multirow} +\usepackage{layouts} +\usepackage{comment} \frenchspacing \tolerance=5000 @@ -114,6 +117,7 @@ \include{Chapters/chapter8/ch8} \include{Chapters/chapter11/ch11} \include{Chapters/chapter14/ch14} +\include{Chapters/chapter15/ch15} \bibliographystyle{hep} %%%\bibliography{biblio} diff --git a/BookGPU/Chapters/chapter15/biblio.bib b/BookGPU/Chapters/chapter15/biblio.bib new file mode 100644 index 0000000..d0bb53f --- /dev/null +++ b/BookGPU/Chapters/chapter15/biblio.bib @@ -0,0 +1,167 @@ +@Inproceedings{PF_PDSEC2011, + author ={P. Fortin and R. Habel and F.~J\'ez\'equel and J.-L. Lamotte and N.S. Scott}, + title = {Deployment on GPUs of an application in computational atomic physics}, + booktitle = {{12th IEEE International Workshop on Parallel and Distributed Scientific +and Engineering Computing (PDSEC) in conjunction with the 25th International Parallel and Distributed Processing Symposium (IPDPS)}}, +year = 2011} +%note={8 pages}} +@Comment address= {{Anchorage, Alaska, USA}}, +@Comment month = may, + + +@article{Burke_1987, +author={P.G. Burke and C.J. Noble and M.P. Scott}, +title={{R-matrix theory of electron scattering at intermediate energies}}, +journal={Proceedings of the Royal Society of London A}, +volume=410, +year=1987, +pages={287--310} + } +% %Proc. Roy. Soc. A } + +@Article{2DRMP, +author ={N.S. Scott and M.P. Scott and P.G. Burke and T. Stitt and V. Faro-Maza and C. Denis and A. Maniopoulou}, +title ={{2DRMP: A~suite of two-dimensional R-matrix propagation codes}}, +journal ={Computer Physics Communications}, +volume={180}, +year =2009, +pages={2424--2449} +} +%note={ISSN: {0010-4655}, doi:10.1016/j.cpc.2009.07.017} + +@Article{FARM_2DRMP, +author ={ V.M. Burke and C.J. Noble and V. Faro-Maza and A. Maniopoulou and N.S. Scott}, +title ={ {FARM\_2DRMP: a version of FARM for use with 2DRMP}}, +journal ={Computer Physics Communications}, +volume={180}, +year =2009, +pages={2450--2451} +} +% note={ISSN: {0010-4655}, doi:10.1016/j.cpc.2009.07.017} + +@INPROCEEDINGS{VECPAR, + author = {T. Stitt and + N.S. Scott and + M.P. Scott and + P.G. Burke}, + title = {{2-D R-Matrix Propagation: A Large Scale Electron Scattering + Simulation Dominated by the Multiplication of Dynamically + Changing Matrices}}, + booktitle = {Proc. of VECPAR'02}, + year = {2002}, + pages = {354-367} +} +% month={June}, +%, +% ee = {http://link.springer.de/link/service/series/0558/bibs/2565/25650354.htm} +%} +%, +% crossref = {DBLP:conf/vecpar/2002}, +% bibsource = {DBLP, http://dblp.uni-trier.de} +% } + +@Misc{CPC, + title= {{CPC}: {C}omputer {P}hysics {C}ommunications}, + howpublished = {Queen's University, Belfast}, + note = {\url{http://cpc.cs.qub.ac.uk/}}, + key={CPC} +} + + + +@Misc{CUBLAS, + title={{NVIDIA} {CUDA} {T}oolkit 4.1, {CUBLAS} {L}ibrary}, + month = {January}, + year = {2012}, + key={NVIDIA CUBLAS} +} +@Comment howpublished = {available at: \url{http://docs.nvidia.com/cuda/cublas}}, + + + + +@Misc{CUDA_ProgGuide, + title={{NVIDIA} {CUDA} {C} {P}rogramming {G}uide, version 4.1}, + month = {November}, + year = {2011}, + key={NVIDIA CUDA} +} +@Comment howpublished = {available at: \url{http://docs.nvidia.com/cuda/cuda-c-programming-guide}}, + + + +@Misc{CUDA_ProgGuide_3.2, + title={{NVIDIA} {CUDA} {C} {P}rogramming {G}uide}, + year={2010}, + howpublished = {version 3.2, available at: \url{www.nvidia.com/object/cuda_get.html}} +} + + +@Misc{CUDA_stream, + title={{CUDA C/C++ Streams and Concurrency, NVIDIA}}, + author={S. Rennich}, + month={January}, + year={2012}, +} + + + + +@Misc{GOTO, + title= { Goto\uppercase{BLAS}}, + howpublished = { \url{http://www.tacc.utexas.edu/tacc-projects/gotoblas2}} +} + +@Misc{MAGMA, + title={{MAGMA (Matrix Algebra on GPU and Multicore Architectures)}}, + howpublished={Available at: \url{http://icl.cs.utk.edu/magma}}, +key={MAGMA} +} + +@Misc{MAGMA_0.2_UserGuide, + title={{MAGMA (Matrix Algebra on GPU and Multicore Architectures) version 0.2 Users' Guide}}, + author={S. Tomov and R. Nath and P. Du and J. Dongarra}, + howpublished={available at: \url{http://icl.cs.utk.edu/magma}} +} + + +@INPROCEEDINGS{NTD10a, + author = {R. Nath and S. Tomov and J. Dongarra}, + title = {{Accelerating GPU Kernels for Dense Linear Algebra}}, + booktitle={Proc. of VECPAR'10}, + year={2010} +} +% month={June}, + + +@article{NTD10b, + author = {Nath, R. and Tomov, S. and Dongarra, J.}, + title = {{An Improved Magma Gemm For Fermi Graphics Processing Units}}, + journal = {International Journal of High Performance Computing Applications}, + volume = {24}, + number = {4}, + year = {2010}, + pages = {511--515}, +} + @Comment issue_date = {November 2010}, + @Comment publisher = {Sage Publications, Inc.}, + @Comment address = {Thousand Oaks, CA, USA}, + @Comment keywords = {CUDA matrix mutiply, Fermi, GPU BLAS, dense linear algebra, hybrid computing}, + @Comment numpages = {5}, + @Comment url = {http://dx.doi.org/10.1177/1094342010385729}, + @Comment doi = {10.1177/1094342010385729}, + @Comment acmid = {1889710}, + @Comment issn = {1094-3420}, + @Comment month = nov, + + +@Misc{CUBLAS3.1, +title= {{CUDA CUBLAS Library 3.1}}, + howpublished = { \url{http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/CUBLAS_Library_3.1.pdf} } +} + +@Misc{CUBLAS3.2, +title= {{CUDA CUBLAS Library 3.2}}, + howpublished = { \url{http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUBLAS_Library.pdf} } +} + diff --git a/BookGPU/Chapters/chapter15/ch15.tex b/BookGPU/Chapters/chapter15/ch15.tex new file mode 100644 index 0000000..1eca6ec --- /dev/null +++ b/BookGPU/Chapters/chapter15/ch15.tex @@ -0,0 +1,1168 @@ +\chapterauthor{Pierre Fortin}{Laboratoire d'Informatique de Paris 6, University Paris 6} +\chapterauthor{Rachid Habel}{T\'el\'ecom SudParis} +\chapterauthor{Fabienne J\'ez\'equel}{Laboratoire d'Informatique de Paris 6, University Paris 6} +\chapterauthor{Jean-Luc Lamotte}{Laboratoire d'Informatique de Paris 6, University Paris 6} +\chapterauthor{Stan Scott}{School of Electronics, Electrical Engineering \& Computer Science, +The Queen's University of Belfast} + +\newcommand{\fixme}[1]{{\bf #1}} + +\chapter{Numerical validation and performance optimization on GPUs of +an application in atomic physics} +\label{chapter15} + +\section{Introduction}\label{ch15:intro} +As described in Chapter~\ref{chapter1}, GPUs are characterized by hundreds +of cores and theoretically perform one order of magnitude better than CPUs. +An important factor to consider when programming on GPUs + is the cost of +data transfers between CPU memory and GPU memory. Thus, to have good +performance on +GPUs, applications should be coarse-grained and have a high arithmetic +intensity +($i.e.$ the ratio of arithmetic operations to memory operations). +Another important aspect of GPU programming is that floating-point +operations are preferably performed in single precision, if the + validity of results is not impacted by that format. +The GPU compute power for floating-point operations is indeed greater in +single precision than in double precision. +The peak performance ratio between single precision and double +precision varies for example for NVIDIA GPUs from $12$ for the first Tesla +GPUs (C1060), +to $2$ for the Fermi GPUs (C2050 and C2070) +and to $3$ for the latest Kepler architecture (K20/K20X). +As far as AMD GPUs are concerned, the latest AMD GPU (Tahiti HD 7970) +presents a ratio of $4$. +Moreover, GPU internal memory accesses and CPU-GPU data transfers are +faster in single precision than in double precision, +because of the different format lengths. + +This chapter describes the deployment on GPUs of PROP, a program of the +2DRMP~\cite{FARM_2DRMP,2DRMP} suite which models electron collisions +with H-like atoms and ions at intermediate energies. 2DRMP operates successfully on serial +computers, high performance clusters and supercomputers. The primary +purpose of the PROP program is to propagate a global +R-matrix~\cite{Burke_1987}, $\Re$, in the two-electron configuration +space. +The propagation needs to be performed for all collision energies, +for instance hundreds of energies, +which are independent. +Propagation equations are dominated by matrix multiplications involving sub-matrices of $\Re$. +However, the matrix multiplications are not +straightforward in the sense that $\Re$ dynamically changes the designation of its rows and +columns and increases in size as the propagation proceeds \cite{VECPAR}. + +In a preliminary investigation PROP was selected by GENCI\footnote{GENCI: Grand Equipement National + de Calcul Intensif, \url{www.genci.fr}} and +CAPS\footnote{CAPS is a software company providing products and solutions + for manycore application programming and deployment, + \url{www.caps-entreprise.com}}, +following their first call for projects in 2009-2010 +aimed at +deploying applications on hybrid systems based on GPUs. +First CAPS +recast the propagation equations with larger matrices. +For matrix products the GPU performance gain over CPU increases indeed +with the matrix size, since the +CPU-GPU transfer overhead becomes less significant and since CPUs are +still more efficient for fine computation grains. +Then, using HMPP\footnote{ +HMPP or {\em CAPS compiler}, see: \url{www.caps-entreprise.com/hmpp.html}}, +a commercial +hybrid and parallel compiler, CAPS +developed a version of PROP, in +which matrix multiplications are performed on +the GPU or the CPU, depending on the matrix size. +Unfortunately this partial GPU implementation of PROP does not offer +significant acceleration. + +The work described in this chapter, which is based on a study presented in \cite{PF_PDSEC2011}, aims at + improving PROP performance on +GPUs by exploring two directions. First, because the original version of PROP is written +in double precision, +we study the numerical stability of PROP in single precision. +Second, we deploy the whole +computation code of PROP on +GPUs to avoid the overhead generated by +data transfers +and we propose successive improvements +(including a specific one to the Fermi architecture) +in order to optimize the GPU code. + + + + +\section{2DRMP and the PROP program} +\label{s:2DRMP_PROP} +\subsection{Principles of R-matrix propagation} +2DRMP~\cite{FARM_2DRMP,2DRMP} is part of the CPC library\footnote{CPC: +Computer Physics Communications, +\url{http://cpc.cs.qub.ac.uk/}}. +It is a suite of seven +programs aimed at creating virtual experiments on high performance and grid +architectures to enable the study of electron scattering from H-like +atoms and ions at intermediate energies. The 2DRMP suite uses the +two-dimensional $R$-matrix propagation approach~\cite{Burke_1987}. +In 2DRMP the two-electron configuration space ($r_1$,$r_2$) is +divided into sectors. +Figure~\ref{prop} shows the division of the two-electron configuration +space ($r_1$,$r_2$) into 4 vertical $strips$ representing 10 $sectors$. +The key computation in 2DRMP, performed by the PROP program, is the +propagation of a global +$R$-matrix, $\Re$, from sector to sector across the internal region, as shown in Fig.~\ref{prop}. + +\begin{figure}[h] +\begin{center} +\includegraphics*[width=0.65\linewidth]{Chapters/chapter15/figures/prop.pdf} +\caption{\label{prop} Subdivision of the configuration space +($r_1$,$r_2$) into a set of connected sectors.} +\end{center} +\end{figure} + +\begin{figure}[h] +\begin{center} +\includegraphics*[width=0.8\linewidth]{Chapters/chapter15/figures/Domain.pdf} +\caption{\label{domain} Propagation of the R-matrix from domain D to domain D'.} +\end{center} +\end{figure} + +We consider the general situation in +Fig.~\ref{domain} where we assume that we already know +the global $R$-matrix, $\Re^{I}$, associated with the boundary defined +by edges 5, 2, 1 and 6 +in domain $D$ and we wish to +evaluate the new global $R$-matrix, $\Re^{O}$, associated with edges 5, 3, 4 and 6 +in domain $D'$ following propagation across subregion $d$. +Input edges are denoted by I (edges 1 and~2), output edges by O (edges 3 and 4) and +common edges by X (edges 5 and~6). +Because of symmetry, only the lower half of domains $D$ and $D'$ has to be considered. +The global $R$-matrices, $\Re^{I}$ in domain $D$ and $\Re^{O}$ in +domain $D'$, can be written as: +\begin{equation} +\Re^{I} = \left(\begin{array}{cc} + \Re_{II}^{I} & \Re_{IX}^{I}\\ + \Re_{XI}^{I} & \Re_{XX}^{I} + \end{array}\right) +\ \ +\Re^{O} = \left(\begin{array}{cc} + \Re_{OO}^{O} & \Re_{OX}^{O}\\ + \Re_{XO}^{O} & \Re_{XX}^{O} + \end{array}\right). +\label{eq:RI_RO} +\end{equation} + + + +From the set of local $R$-matrices, $\mathbf{R}_{ij}$ ($i,j\in \{1,2,3,4\}$) +associated +with subregion $d$, we can define +\begin{subequations} +\begin{eqnarray} + \mathbf{r}_{II} = \left(\begin{array}{cc} + \mathbf{R}_{11} & \mathbf{R}_{12}\\ + \mathbf{R}_{21} & \mathbf{R}_{22} + \end{array}\right), \label{eqaa} & + \mathbf{r}_{IO} = \left(\begin{array}{cc} + \mathbf{R}_{13} & \mathbf{R}_{14}\\ + \mathbf{R}_{23} & \mathbf{R}_{24} + \end{array}\right), \label{eqbb}\\ + \mathbf{r}_{OI} = \left(\begin{array}{cc} + \mathbf{R}_{31} & \mathbf{R}_{32}\\ + \mathbf{R}_{41} & \mathbf{R}_{42} + \end{array}\right), \label{eqcc} & + \mathbf{r}_{OO} = \left(\begin{array}{cc} + \mathbf{R}_{33} & \mathbf{R}_{34}\\ + \mathbf{R}_{43} & \mathbf{R}_{44} + \end{array}\right),\label{eqdd} +\end{eqnarray} +\end{subequations} +where $I$ represents the input edges 1 and 2, and $O$ represents +the output edges 3 and 4 (see Fig.~\ref{domain}). +The propagation across each sector is characterized by equations~(\ref{eq1}) to (\ref{eq4}). +\begin{subequations} +\begin{eqnarray} +\Re^{O}_{OO} &=& \mathbf{r}_{OO} - \mathbf{r}_{IO}^T (r_{II} + \Re^{I}_{II})^{-1}\mathbf{r}_{IO}, \label{eq1} \\ +\Re^{O}_{OX} &=& \mathbf{r}_{IO}^T (\mathbf{r}_{II} + \Re^{I}_{II})^{-1}\Re^{I}_{IX}, \label{eq2} \\ + \Re^{O}_{XO} &=& \Re^{I}_{XI}(\mathbf{r}_{II} + \Re^{I}_{II})^{-1}\mathbf{r}_{IO}, \label{eq3} \\ + \Re^{O}_{XX} &=& \Re^{I}_{XX} - \Re^{I}_{XI}(\mathbf{r}_{II} +\Re^{I}_{II})^{-1}\Re^{I}_{IX}. \label{eq4} +\end{eqnarray} +\end{subequations} + +The matrix inversions are not explicitly performed. To compute +$(r_{II} + \Re^{I}_{II})^{-1}\mathbf{r}_{IO}$ and $(\mathbf{r}_{II} + \Re^{I}_{II})^{-1}\Re^{I}_{IX}$, +two linear systems are solved. + + +\medskip + +While equations (\ref{eq1})-(\ref{eq4}) can be applied to the +propagation across a general subregion two special situations should be +noted: propagation across a diagonal subregion and propagation across +a subregion bounded by the $r_{1}$-axis at the beginning of a new +strip. + +In the case of a diagonal subregion, from symmetry considerations, +edge 2 is identical to edge 1 and edge 3 is identical to edge~4. +Accordingly, with only one input edge and one output edge equations +(\ref{eqaa})-(\ref{eqdd}) become: +\begin{subequations} +\begin{eqnarray} +\mathbf{r}_{II} = 2\mathbf{R}_{11}, \ +\mathbf{r}_{IO} = 2\mathbf{R}_{14}, \label{eq4b}\\ +\mathbf{r}_{OI} = 2\mathbf{R}_{41}, \ +\mathbf{r}_{OO} = 2\mathbf{R}_{44}. \label{eq4d} +\end{eqnarray} +\end{subequations} +In the case of a subregion bounded by the $r_1$-axis at the beginning +of a new strip, we note that the input boundary $I$ consists of only +one edge. When propagating across the first subregion in the second +strip there is no common boundary $X$: in this case only equation +(\ref{eq1}) needs to be solved. + +\medskip + +Having obtained the global $R$-matrix $\Re$ on the boundary of the +innermost subregion (labeled $0$ in Fig.~\ref{prop}), $\Re$ is propagated across +each subregion in the order indicated in Fig.~\ref{prop}, +working systematically from the +$r_1$-axis at the bottom of each strip across all subregions to the +diagonal. + + + +\subsection{Description of the PROP program} +\label{sec:PROP} + +\begin{table}[t] +\begin{center} +\begin{tabular}{|c|c|c|c|c|c|} + \hline + \multirow{2}{0.09\linewidth}{\centering Data set} & + \multirow{2}{0.15\linewidth}{\centering + Local $R$-\\matrix size} & + \multirow{2}{0.07\linewidth}{\centering Strips} & + \multirow{2}{0.09\linewidth}{\centering Sectors} & + \multirow{2}{0.19\linewidth}{\centering Final global \\$R$-matrix size} & + \multirow{2}{0.15\linewidth}{\centering Scattering\\energies} \\ + & & & & & \\ + \hline + Small & 90x90 & 4 & 10 & 360x360 & 6\\ + \hline + Medium & 90x90 & 4 & 10 & 360x360 & 64\\ + \hline + Large & 383x383 & 20 & 210 & 7660x7660 & 6\\ + \hline + Huge & 383x383 & 20 & 210 & 7660x7660 & 64\\ \hline +\end{tabular} +\caption{\label{data-sets}Characteristics of four data sets} +\end{center} +\end{table} + +The PROP program computes the propagation of the $R$-matrix across the sectors of the internal region. +Table~\ref{data-sets} shows four different +data sets used in this study and highlights the principal parameters of the PROP program. + PROP execution can be described by Algorithm~\ref{prop-algo}. +First, amplitude arrays and +correction data are read from data files generated by the preceding +program of the 2DRMP suite. +Then, local $R$-matrices are constructed from amplitude arrays. +Correction data is used to compute correction vectors added to the diagonal of the local +$R$-matrices. The local $R$-matrices, together with the input $R$-matrix, + $\Re^{I}$, +computed on the previous sector, are used to compute the current output +$R$-matrix, +$\Re^{O}$. + At the end of a sector evaluation, +the output $R$-matrix becomes the input $R$-matrix +for the next evaluation. + +%% \begin{algorithm} +%% \caption{\label{prop-algo}PROP algorithm} +%% \begin{algorithmic} +%% \FOR{all scattering energies} +%% \FOR{all sectors} +%% \STATE Read amplitude arrays +%% \STATE Read correction data +%% \STATE Construct local $R$-matrices +%% \STATE From $\Re^{I}$ and local $R$-matrices, compute $\Re^{O}$ +%% \STATE $\Re^{O}$ becomes $\Re^{I}$ for the next sector +%% \ENDFOR +%% \STATE Compute physical $R$-Matrix +%% \ENDFOR +%% \end{algorithmic} +%% \end{algorithm} + + +On the first sector, there is no input $R$-matrix yet. To bootstrap +the propagation, the first output $R$-matrix is constructed using only +one local $R$-matrix. On the last sector, that is, on the boundary of +the inner region, a physical $R$-matrix corresponding to the output +$R$-matrix is computed and stored into an output file. + +In the PROP program, sectors are characterized into four types, +depending on the computation performed: +\begin{itemize} +\item the starting sector (labeled 0 in Fig.~\ref{prop}) +\item the axis sectors (labeled 1, 3 and 6 in Fig.~\ref{prop}) +\item the diagonal sectors (labeled 2, 5 and 9 in Fig.~\ref{prop}) +\item the off-diagonal sectors (labeled 4, 7 and 8 in Fig.~\ref{prop}). +\end{itemize} + + +The serial version of PROP is implemented in Fortran~90 and uses +for linear algebra operations BLAS and LAPACK routines +which are fully optimized for x86 architecture. +This +program +serially propagates the $R$-matrix for +all scattering energies. +Since the propagations for these different +energies are independent, there also +exists an embarrassingly parallel version of +PROP +that spreads the computations of +several energies +among multiple CPU nodes via +MPI. + + + +\subsection{CAPS implementation} +\label{caps} + +In order to handle larger matrices, and thus obtain better GPU speedup, CAPS +recast equations (\ref{eq1}) to (\ref{eq4}) into one equation. +The output $R$-matrix $\Re^{O}$ defined by equation~(\ref{eq:RI_RO}) is now computed as follows. +\begin{equation}\label{eq_CAPS_1} +\Re^{O} = \Re^{O^{\ \prime}} + U A^{-1} V, +\end{equation} +\begin{equation}\label{eq_CAPS_2} +{\rm with} \ +\Re^{O^{\ \prime}}= \left(\begin{array}{cc} + \mathbf{r}_{OO} & 0\\ + 0 & \Re^I_{XX} \end{array}\right), \ +U= \left(\begin{array}{c} + \mathbf-{r}_{IO}^{T}\\ + \Re^I_{XI} \end{array}\right), +\end{equation} +\begin{equation}\label{eq_CAPS_3} +A= \mathbf{r}_{II} + \Re^I_{II} \ {\rm and} \ +V= (\mathbf{r}_{IO}\ \ \ -\Re^I_{IX}). +\end{equation} + +To compute $W=A^{-1}V$, no matrix inversion is performed. The matrix +system $AW=V$ is solved. +This reimplementation of PROP reduces the number of equations to be +solved and the number of matrix copies for evaluating each sector. +For instance, for an off-diagonal sector, +copies fall from 22 to 5, matrix multiplications from 4 to~1 and calls +to a linear equation solver from 2 to 1. + +To implement this version, CAPS +used HMPP, a +commercial hybrid and parallel compiler, +based on compiler directives like the new OpenACC standard\footnote{See: \url{www.openacc-standard.org}}. +If the matrices are large enough (the limit sizes are experimental parameters), +they are multiplied on the GPU, otherwise on the CPU. +CAPS + used the MKL BLAS implementation on an Intel Xeon +x5560 quad core CPU (2.8 GHz) +and the CUBLAS library (CUDA 2.2) on one Tesla C1060 GPU. +On the large data set (see Table~\ref{data-sets}), CAPS + obtained a speedup of 1.15 for the GPU +version over the CPU one (with multi-threaded MKL calls on the four +CPU cores). This limited gain in performance is mainly +due to the use of double precision computation +and to the small or medium sizes of most matrices. +For these matrices, the computation gain on +the GPU is indeed +strongly affected by the overhead +generated by transferring these matrices from +the CPU memory to the GPU memory to perform each matrix multiplication and then +transferring the result back to the CPU memory. + +Our goal is to speedup PROP more significantly by porting the whole +code to the GPU and therefore avoiding +the +intermediate data transfers between +the host (CPU) and the GPU. We will also study the +stability of PROP in single precision because +single precision computation is faster on the GPU +and CPU-GPU data transfers are twice as fast as those performed in +double precision. + + + +\section{Numerical validation of PROP in single precision} +\label{single-precision} + +\begin{comment} +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|c|} + \hline + relative error interval & \# occurrences \\ + \hline + [0, 1.E-8) & 18 \\ + \hline + [1.E-8, 1.E-6) & 1241 \\ + \hline + [1.E-6, 1.E-4) & 48728 \\ + \hline + [1.E-4, 1.E-2) & 184065 \\ + \hline + [1.E-2, 1) & 27723 \\ + \hline + [1, 100) & 304 \\ + \hline + [100, $+\infty$) & 1 \\ + \hline +\end{tabular} +\end{center} +\caption{\label{sp-distrib}Error distribution for medium case in single precision} +\end{table} +\end{comment} + + +Floating-point input data, computation and output data of PROP are +originally in double precision format. +PROP produces a standard $R$-matrix H-file \cite{FARM_2DRMP} + and a collection of Rmat00X files (where X +ranges from 0 to the number of scattering energies - 1) +holding the physical R-matrix for each +energy. +The H-file and the Rmat00X files are binary input files of the FARM program \cite{FARM_2DRMP} +(last program of the 2DRMP suite). +Their text equivalent are the prop.out +and the prop00X.out files. +To study the validity of PROP results in single precision, +first, +reference results are + generated by running the serial version of PROP in double precision. +Data used in the most costly computation parts are read from input files in +double precision format and then +cast to single precision format. +PROP results (input of FARM) are computed in single precision and written +into files in double precision. + +\subsection{Medium case study} +\begin{figure}[h] +\begin{center} +\includegraphics*[width=0.9\linewidth]{Chapters/chapter15/figures/error.pdf} +\caption{\label{fig:sp-distrib} Error distribution for medium case in single precision} +\end{center} +\end{figure} + +The physical $R$-matrices, in +the prop00X.out files, are compared to the +reference ones for the medium case (see Table~\ref{data-sets}). + The relative +error distribution is +given in Fig.~\ref{fig:sp-distrib}. +We focus on the largest errors. +\begin{itemize} +\item Errors greater than 100: the only impacted value is of order 1.E-6 +and is negligible compared to the other ones +in the same prop00X.out file. + +\item Errors between 1 and 100: the values corresponding to the + largest errors are of order 1.E-3 and are negligible compared to + the majority of the other values which range between 1.E-2 and + 1.E-1. + +\item Errors between 1.E-2 and 1: the largest errors ($\ge$ 6\%) + impact values the order of magnitude of which is at most 1.E-1. + These values are negligible. + Relative errors of approximately 5\% impact values the order of + magnitude of which is at most 1.E2. + For instance, the value 164 produced by the reference version of + PROP becomes 172 in the single precision version. + +\end{itemize} + +To study the impact of the single precision version of PROP on the +FARM program, the cross-section +results files corresponding to +transitions +{1s1s}, +{1s2s}, {1s2p}, {1s3s}, {1s3p}, {1s3d}, +{1s4s}, {2p4d} are compared to the reference ones. +Table~\ref{sp-farm} shows that all cross-section files are impacted by +errors. Indeed in the {2p4d} file, four relative errors are +greater than one and the maximum relative error is 1.60. +However the largest errors impact negligible values. For example, the maximum +error (1.60) impacts a reference value which is 4.5E-4. The largest +values are impacted by low errors. For instance, the maximum value +(1.16) is impacted by a relative error of the order 1.E-3. + +\begin{table}[t] +\begin{center} +\begin{tabular}{|c|c||c|c|} \hline + file & largest relative error & file & largest relative error\\ \hline + {1s1s} & 0.02& {1s3p} & 0.11 \\ \hline + {1s2s} & 0.06 & {1s3d} & 0.22 \\ \hline + {1s2p} & 0.08 & {1s4s} & 0.20 \\ \hline + {1s3s} & 0.17 &2p4d & 1.60 \\ \hline +\end{tabular} +\caption{\label{sp-farm}Impact on FARM of the single precision version of PROP} +\end{center} +\end{table} + +To examine in more detail the impact of PROP on FARM, +cross sections above the ionization threshold (1 Ryd) +are compared in single and +double precision for +transitions amongst the 1s, \dots 4s, 2p, \dots 4p, 3d, 4d target states. +This comparison is carried out by generating 45 plots. In all the + plots, results in single and double precision match except for few + scattering energies which are very close to pseudo-state thresholds. +For example Fig.~\ref{1s2p} and \ref{1s4d} present the scattering energies corresponding to the +{1s2p} and {1s4d} cross-sections computed in single and double precision. For some cross-sections, +increasing a threshold parameter from 1.E-4 to 1.E-3 in the FARM +program +results in energies close to threshold being avoided + and therefore +the cross-sections in double and single precision match more +accurately. +This is the case for instance for cross-section 1s2p (see Fig.~\ref{1s2p3}). +However for other cross-sections (such as 1s4d) some problematic energies remain even if the +threshold parameter in the FARM +program is increased to 1.E-3 (see Fig.~\ref{1s4d3}). A higher +threshold parameter would be required for such cross-sections. + +\begin{figure}[t] +\centering +\subfigure[threshold = 1.E-4]{ +\includegraphics*[width=.76\linewidth]{Chapters/chapter15/figures/1s2p.pdf} + \label{1s2p} + } +\subfigure[threshold = 1.E-3]{ +\includegraphics*[width=.76\linewidth]{Chapters/chapter15/figures/1s2p3.pdf} + \label{1s2p3} + } +\label{fig:1s2p_10sectors} +\caption{1s2p cross-section, 10 sectors} +\end{figure} + +\begin{figure}[t] +\centering +\subfigure[threshold = 1.E-4]{ +\includegraphics*[width=.76\linewidth]{Chapters/chapter15/figures/1s4d.pdf} + \label{1s4d} + } +\subfigure[threshold = 1.E-3]{ +\includegraphics*[width=.76\linewidth]{Chapters/chapter15/figures/1s4d3.pdf} + \label{1s4d3} + } +\label{fig:1s4d_10sectors} +\caption{1s4d cross-section, 10 sectors} +\end{figure} + +As a conclusion, the medium case study shows that the execution of +PROP in single precision leads to a few inexact scattering energies to +be computed by the FARM program for some cross-sections. +Thanks to a suitable threshold parameter in the FARM program these problematic energies may possibly +be skipped. +Instead of investigating deeper the choice of such a parameter for the medium case, we analyze the +single precision computation in a more +realistic case in Sect.~\ref{huge}. +\begin{comment} +The conclusion of the medium case study is that running PROP in single +precision gives relatively stable results provided that suitable +parameter values are used in the FARM program in order to skip the +problematic energies that are too close to the pseudo-state +thresholds. To verify if this conclusion is still valid with a larger +data set, the single precision computation is analyzed in a more +realistic case in Sect.~\ref{huge}. +\end{comment} + +\subsection{Huge case study}\label{huge} + + +\begin{figure}[t] + \centering +\includegraphics*[width=.76\linewidth]{Chapters/chapter15/figures/1s2pHT.pdf} +\caption{\label{1s2pHT}1s2p cross-section, threshold = 1.E-4, 210 sectors} +\end{figure} + +\begin{figure}[t] + \centering +\includegraphics*[width=.76\linewidth]{Chapters/chapter15/figures/1s2pHT.pdf} +\caption{\label{1s4dHT}1s4d cross-section, threshold = 1.E-4, 210 sectors} +\end{figure} + +We study here the impact on FARM of the PROP program run in +single precision for the huge case (see Table~\ref{data-sets}). +The cross-sections +corresponding to all +atomic target states 1s \dots 7i are explored, which +leads to +406 comparison plots. +It should be noted that in this case, over the same energy range above the ionization threshold, the density of pseudo-state thresholds is significantly increased compared to the medium case. +As expected, all the plots exhibit large differences between single and double +precision cross-sections. +For example Fig.~\ref{1s2pHT} and \ref{1s4dHT} present the 1s2p and 1s4d cross-sections computed in +single and double precision for the huge case. +We can conclude that PROP in single precision gives invalid results +for realistic simulation cases above the ionization threshold. +Therefore the deployment of PROP on GPU, described in Sect.~\ref{gpu-implem}, +has been carried out in double precision. + +\section{Towards a complete deployment of PROP on GPUs} +\label{gpu-implem} + +We now detail how PROP has been progressively deployed on +GPUs in double precision in order to avoid the +expensive memory transfers between the host and the GPU. +Different versions with successive improvements and optimizations are presented. +We use CUDA~\cite{CUDA_ProgGuide} for GPU programming, as well as the +CUBLAS~\cite{CUBLAS} +and MAGMA \cite{MAGMA} libraries for linear algebra operations. +Since PROP is written in Fortran 90, {\em wrappers} in C are used to +enable calls to CUDA kernels from PROP routines. + + +\subsection{Computing the output $R$-matrix on GPU} +\label{gpu-RO} + +\begin{figure}[h] + \centering + \includegraphics[width=0.7\linewidth]{Chapters/chapter15/figures/offdiagonal_nb.pdf} + \caption{\label{offdiagonal} The six steps of an off-diagonal sector + evaluation.} +\end{figure} + +As mentioned in Algorithm~\ref{prop-algo}, evaluating a sector +mainly consists in constructing local $R$-matrices and in computing +one output $R$-matrix, $\Re^{O}$. In this first step of the porting +process, referred to as GPU V1\label{gpuv1}, +we only consider the computation of $\Re^{O}$ on the GPU. +We distinguish the following six steps, related to equations +(\ref{eq_CAPS_1}), (\ref{eq_CAPS_2}) and (\ref{eq_CAPS_3}), and illustrated in +Fig.~\ref{offdiagonal} for an off-diagonal sector. + +\begin{description} +\item[Step 1] (``Input copies''):~data are copied from $\Re^{I}$ + to temporary arrays ($A$, $U$, $V$) and to $\Re^{O}$. + These copies, along with possible scalings or transpositions, are + implemented as CUDA kernels which can be applied to two + matrices of any size and starting at any offset. + Memory accesses are coalesced \cite{CUDA_ProgGuide} in order to + provide the best performance for such memory-bound kernels. +\item[Step 2] (``Local copies''):~data are copied from + local $R$-matrices to temporary arrays ($U$, $V$) and to $\Re^{O}$. + Moreover data from local $R$-matrix + $\mathbf{r}_{II}$ + is added to matrix $A$ (via a CUDA kernel) and zeroes are written in + $\Re^{O}$ where required. +\item[Step 3] (``Linear system solving''):~matrix $A$ is factorized + using the MAGMA DGETRF + routine and the result is stored in-place. +\item[Step 4] (``Linear system solving'' cont.):~the matrix system + of linear equations $AW$ = $V$ is solved using the MAGMA DGETRS +routine. The solution is stored in matrix $V$. +\item[Step 5] (``Output matrix product''):~matrix $U$ + is multiplied by matrix $V$ using the CUBLAS DGEMM + routine. The result is stored in a temporary matrix~$t$. +\item[Step 6] (``Output add''):~$t$ is added to $\Re^{O}$ (CUDA + kernel). +\end{description} + +All the involved matrices are stored in the GPU memory. Only the +local $R$-matrices are first constructed on the host and then sent +to the GPU memory, since these matrices vary from sector to sector. +The evaluation of the axis and diagonal sectors is similar. +However, fewer operations and copies are required because of +symmetry considerations \cite{2DRMP}. + +\subsection{Constructing the local $R$-matrices on GPU} + +\begin{figure}[t] + \centering + \includegraphics[width=0.7\linewidth]{Chapters/chapter15/figures/amplitudes_nb.pdf} + \caption{\label{amplitudes} Constructing the local $R$-matrix R34 + from the $j$ amplitude array associated with edge 4 and the $i$ + amplitude array associated with edge~3.} +\end{figure} + +Local $R$-matrices are constructed using two three dimensional arrays, +$i$ and $j$. Each three dimensional array contains four +matrices corresponding to the surface amplitudes associated with the +four edges of a sector. Those matrices are named {\em amplitude arrays}. + $j$ amplitude arrays are read from data files and $i$ amplitude arrays +are obtained by scaling each row of the $j$ amplitude arrays. +The main part of the construction of a local $R$-matrix, +presented in Fig.~\ref{amplitudes}, +is a matrix product between +one $i$ amplitude array and one transposed $j$ amplitude array +which is performed by a single DGEMM +BLAS call. +In this version, hereafter referred to as GPU +V2\label{gpuv2}, $i$ and $j$ amplitude arrays are transferred to the +GPU memory and the required matrix multiplications are performed on +the GPU (via CUBLAS routines). + + +The involved matrices having medium sizes (either $3066 \times 383$ or +$5997 \times 383$), +performing these matrix multiplications +on the GPU is expected to be faster than on the CPU. +However, this implies a greater communication volume +between the CPU and the GPU +since the $i$ and $j$ amplitude arrays are larger than the local +$R$-matrices. +It can be noticed that correction data are also used in the +construction of a local $R$-matrix, +but this is a minor part in the +computation. However, these correction data also have to be +transferred from the CPU to the GPU for each sector. + +\subsection{Scaling amplitude arrays on GPU} +It +should be worthwhile to try to reduce the CPU-GPU data +transfers of the GPU V2, where the $i$ and $j$ amplitude arrays are +constructed on the host and then sent to the GPU memory for each sector. +In this new version, hereafter referred to as GPU V3\label{gpuv3}, we +transfer only the $j$ amplitude arrays and the +required scaling factors (stored in one 1D array) to the GPU memory, +so that the $i$ amplitude arrays are +then directly computed on the GPU by multiplying the $j$ amplitude +arrays by these scaling factors (via a CUDA kernel). +Therefore, we save the transfer of four $i$ amplitude arrays on +each sector by transferring only this 1D array of scaling factors. +Moreover, scaling $j$ amplitude arrays is expected to be faster on the +GPU than on the CPU, thanks to the massively parallel architecture of +the GPU and thanks to its higher internal memory bandwidth. + +\subsection{Using double-buffering to overlap I/O and computation} + +\begin{figure}[t] + \centering + \includegraphics[width=0.8\linewidth]{Chapters/chapter15/figures/C1060_V3_IO_COMP.pdf} + \caption{\label{overlapping} Compute and I/O times for the GPU V3 on + one C1060.} +\end{figure} + +As described in Algorithm~\ref{prop-algo}, there are two main steps in +the propagation across a sector: reading amplitude arrays +and correction data from I/O files and +evaluating the current sector. +Fig.~\ref{overlapping} shows the I/O times and the evaluation times +of each sector for the huge case execution (210 sectors, 20 strips) of the GPU V3 +on one C1060. +Whereas the times required by the off-diagonal sectors are similar +within each of the 20 strips, +the times for diagonal sectors of each strip +are the shortest ones, the times for the axis sectors being +intermediate. +The I/O times are roughly constant among all strips. +The evaluation time is equivalent to the I/O +time for the first sectors. But this evaluation time grows +linearly with the strip number, and rapidly exceeds the I/O +time. + +It is thus interesting to use a double-buffering technique to overlap the +I/O time with the evaluation time: +for each sector, the evaluation of sector $n$ is performed +(on GPU) simultaneously with the reading of data for sector +$n+1$ (on CPU). This requires the duplication in the CPU memory of all the +data structures +used for storing data read from I/O files for each sector. +This version, hereafter referred to as GPU +V4\label{gpuv4}, uses POSIX threads. Two threads are +executed concurrently: an I/O thread that reads data from I/O files +for each sector, and a computation thread, dedicated to the propagation +of the global $R$-matrix, that performs successively for each sector +all necessary computations on GPU, +as well as all required CPU-GPU data transfers. +The evaluation of a sector uses the data read for this sector as well +as the global $R$-matrix computed on the previous sector. +This dependency requires synchronizations between the I/O thread and +the computation thread which are implemented through standard POSIX +thread mechanisms. + + +\subsection{Matrix padding} +The CUBLAS DGEMM +performance and the MAGMA DGETRF/DGETRS +performance is reduced when the sizes (or +the leading dimensions) of the matrix are not multiples of the inner blocking size \cite{NTD10a}. +This inner blocking size can be 32 or 64, depending on the computation +and on the underlying +GPU architecture \cite{MAGMA,NTD10b}. +In this version (GPU V5\label{gpuv5}), +the matrices are therefore padded with $0.0$ (and $1.0$ on the diagonal for the linear systems) +so that their sizes are +multiples of 64. +This corresponds indeed to the optimal size for the matrix product on the +Fermi architecture \cite{NTD10b}. And as far as linear system solving is +concerned, all the matrices have sizes which are multiples of 383: we +therefore use padding to obtain multiples of 384 (which are +again multiples of 64). +It can be noticed that this padding has to be performed dynamically +as the matrices increase in size during the propagation +(when possible the + maximum required storage space is however allocated only once in the + GPU memory). + + + +\section{Performance results} +\subsection{PROP deployment on GPU} + +\begin{table*}[ht] +\begin{center} +\begin{tabular}{|c||c|c||} + \hline + PROP version & \multicolumn{2}{c|}{Execution time} \\ + \hline + \hline + CPU version: 1 core & \multicolumn{2}{c|}{201m32s} \\ + \hline + CPU version: 4 cores & \multicolumn{2}{c|}{113m28s} \\ + \hline \hline +GPU version & C1060 & C2050 \\ + \hline\hline + GPU V1 (\S~\ref{gpuv1}) & 79m25s & 66m22s \\ + \hline + GPU V2 (\S~\ref{gpuv2}) & 47m58s & 29m52s \\ + \hline + GPU V3 (\S~\ref{gpuv3}) & 41m28s & 23m46s \\ + \hline + GPU V4 (\S~\ref{gpuv4}) & 27m21s & 13m55s\\ + \hline + GPU V5 (\S~\ref{gpuv5}) & 24m27s & 12m39s \\ + \hline +\end{tabular} +\caption{\label{table:time} +Execution time of PROP on CPU and GPU} +\end{center} +\end{table*} + +\begin{comment} +\begin{table*}[ht] +\begin{center} +\begin{tabular}{|c||c|c||} + \hline + PROP version & \multicolumn{2}{c|}{Execution time} \\ + \hline \hline +CPU version & 1 core & 4 cores \\\hline +& {201m32s} & {113m28s} \\ \hline \hline +GPU version & C1060 & C2050 \\ + \hline\hline + GPU V1 (\ref{gpuv1}) & 79m25s & 66m22s \\ + \hline + GPU V2 (\ref{gpuv2}) & 47m58s & 29m52s \\ + \hline + GPU V3 (\ref{gpuv3}) & 41m28s & 23m46s \\ + \hline + GPU V4 (\ref{gpuv4}) & 27m21s & 13m55s\\ + \hline + GPU V5 (\ref{gpuv5}) & 24m27s & 12m39s \\ + \hline +\end{tabular} +\caption{\label{table:time} +Execution time of the successive GPU versions} +\end{center} +\end{table*} +\end{comment} + +\begin{figure}[h] +\centering +\subfigure[Speedup over 1 CPU core]{ +\includegraphics*[width=0.76 + \linewidth]{Chapters/chapter15/figures/histo_speedup_1core.pdf} + \label{fig:speedup_1core} + } + +\subfigure[Speedup over 4 CPU cores]{ +\includegraphics*[width=0.76 + \linewidth]{Chapters/chapter15/figures/histo_speedup_4cores.pdf} + \label{fig:speedup_4cores} + } +\label{fig:speedup} +\caption{Speedup of the successive GPU versions.} +\end{figure} + +Table~\ref{table:time} presents +the execution times +of PROP on CPUs and GPUs, +each version solves the propagation equations in the +form~(\ref{eq_CAPS_1}-\ref{eq_CAPS_3}) as proposed by CAPS. +Fig.~\ref{fig:speedup_1core} (respectively \ref{fig:speedup_4cores}) +shows the speedup of the successive GPU versions +over one CPU core (respectively four CPU cores). +We use here Intel Q8200 quad-core CPUs (2.33 GHz), one C1060 GPU and +one C2050 (Fermi) GPU, located at + UPMC (Universit\'e Pierre et Marie Curie, Paris, France). +As a remark, the execution times measured on the C2050 would be the same +on the C2070 and on the C2075, the only difference between these GPUs +being their memory size and their TDP (Thermal Design Power). +We emphasize that the execution times correspond to the +complete propagation for all six energies of the large case (see +Table~\ref{data-sets}), that is to say to the complete execution of +the PROP program. +Since energies are independent, execution times for more energies +(e.g. the huge case) should be proportional +to those reported in Table~\ref{table:time}. + +These tests, which have been performed with CUDA 3.2, CUBLAS 3.2 and +MAGMA 0.2, +show that the successive GPU versions of PROP offer +increasing, and at the end interesting, speedups. +More precisely, +V2 shows that it is worth increasing slightly the +CPU-GPU communication volume in order to perform +large enough matrix products on the GPU. + This communication volume can fortunately be +reduced thanks to~V3, +which also accelerates the computation of +amplitude arrays thanks to the GPU. +The +double-buffering technique implemented in V4 + effectively enables the overlapping of +I/O operations with computation, while the +padding implemented in V5 also improves the computation times. +It +is noticed that the padding +does offer much more performance gain with, +for example, CUDA 3.1 and the MAGMA DGEMM~\cite{NTD10b}: the +speedup with respect to one +CPU core was increased from 6.3 to 8.1 on C1060, and from 9.5 to 14.3 +on C2050. +Indeed since CUBLAS 3.2 performance has been improved for non block multiple +matrix sizes through MAGMA code~\cite{NTD10a}. +Although for all versions the C2050 (with its improved +double precision performance) offers up to almost +double speedup compared to +the C1060, the performance obtained with both architectures justifies the use of +the GPU for such an application. + +\subsection{PROP execution profile} + +\begin{figure}[t] + \centering + \includegraphics*[width=0.64\linewidth]{Chapters/chapter15/figures/CPU_1_CORE_TIMES.pdf} +\caption{CPU (1 core) execution times for the off-diagonal sectors of the large case.} +\label{fig:CPU-timing} +\end{figure} + +\begin{figure}[t] + \centering + \subfigure[GPU V5 on one C1060]{ +\includegraphics*[width=0.64\linewidth]{Chapters/chapter15/figures/GPU_V5_C1060_TIMES.pdf} +\label{GPU-timing}} + + \subfigure[GPU V5 on one C2050]{ +\includegraphics*[width=0.64\linewidth]{Chapters/chapter15/figures/GPU_V5_C2050_TIMES.pdf} +\label{fermi-timing}} + +\caption{GPU execution times for the off-diagonal sectors of + the large case.} +\label{fig:profileGPU} +\end{figure} + +We detail here the execution profile on +the CPU and the GPU for the evaluation of all off-diagonal sectors +(the most representative ones) for a complete energy propagation. + Fig.~\ref{fig:CPU-timing} and \ref{fig:profileGPU} show CPU and GPU execution times for the +171 off-diagonal sectors of the large case (see Table \ref{data-sets}). +``Copying, adding, scaling'' corresponds to the amplitude + array construction (scaling) as well as to steps 1, 2 and 6 in + Sect.~\ref{gpu-RO}, all implemented via CUDA kernels. +``CPU-GPU transfers'' +aggregate transfer times for the $j$ amplitude +arrays and the scaling factors, as well as for the correction data. + ``Amplitude matrix product'' corresponds to the DGEMM call to + construct the local R-matrices from the $i$ and $j$ amplitude + arrays. +``Linear system solving'' and ``Output matrix product'' correspond +respectively to steps 3-4 and to step 5 in Sect.~\ref{gpu-RO}. + +On one CPU core (see Fig.~\ref{fig:CPU-timing}), + matrix products for the construction of the local +$R$-matrices require the same +computation time during the whole propagation. Likewise the CPU time required by + matrix products for the output $R$-matrix is constant within each + strip. But as the global $R$-matrix is propagated from strip to + strip, the sizes of +the matrices $U$ and $V$ increase, so does their multiplication time. +The time required to solve the linear system increases +slightly during the propagation. +These three operations (``Amplitude matrix product'', ``Output matrix +product'' and ``Linear system solving'') are clearly dominant in terms +of computation +time compared to the other remaining operations, which justify our +primary focus on such three linear algebra operations. + + +On the C1060 (see Fig.~\ref{GPU-timing}), we have +generally managed to obtain a similar speedup for all operations +(around 8, which corresponds to Fig.~\ref{fig:speedup_1core}). Only the linear system solving +presents a lower speedup (around~4). +The CUDA kernels and the remaining CPU-GPU transfers make a minor contribution +to the overall computation time and do not require +additional improvements. + +On the C2050 (see Fig.~\ref{fermi-timing}), additional speedup is +obtained for all operations, except for the +CPU-GPU transfers and the linear system solving. +The CPU-GPU transfers are mainly due to the $j$ amplitude arrays, and +currently still correspond to minor times. When required, the +double-buffering technique may also be used to overlap such transfers +with computation on the GPU. + + + +\section{Propagation of multiple concurrent energies on GPU} + +Finally, we present here an improvement that can +benefit from the Fermi architecture, as well as from the newest Kepler +architecture, +both of which enable the concurrent execution of multiple +CUDA kernels, thus offering additional speedup on +GPUs for small or medium computation grain kernels. +In our case, the performance gain on the GPU is indeed limited +since most matrices have small or medium sizes. +By using multiple streams within one CUDA context~\cite{CUDA_ProgGuide}, +we can propagate multiple energies +concurrently on the Fermi GPU. +It can be noticed that all GPU computations for all streams are +launched by the same host thread. We therefore rely here on the {\em legacy +API} of CUBLAS~\cite{CUBLAS} (like MAGMA) +without thread safety problems. +A {\em breadth first} issue order is used for kernel +launchs \cite{CUDA_stream}: for a given GPU kernel, all kernel launchs +are indeed issued together in the host thread, using one stream for each +concurrent energy, in order to maximize concurrent kernel +execution. +Of course, the memory available on the GPU must be large enough to +store all data structures required by each energy. +Moreover, multiple streams are also used within the +propagation of each single energy +in order to enable concurrent executions among the required kernels. + + +\begin{table}[t] +\begin{center} +\begin{tabular}{|c|c||c|c|c|c|c|} + \hline + \multirow{4}{0.18\linewidth}{Medium case} & Number of & + \multirow{2}{0.07\linewidth}{\centering 1} & + \multirow{2}{0.07\linewidth}{\centering 2} & + \multirow{2}{0.07\linewidth}{\centering 4} & + \multirow{2}{0.07\linewidth}{\centering 8} & + \multirow{2}{0.07\linewidth}{\centering 16} \\ + & energies & & & & & \\ + \cline{2-7} + & Time (s) & 11.18 & 6.87 & 5.32 & 4.96 & 4.76 \\ + \cline{2-7} + & Speedup & - & 1.63 & 2.10 & 2.26 & 2.35 \\ + \hline + \hline + \multirow{4}{0.18\linewidth}{Large case} & Number of & + \multirow{2}{0.07\linewidth}{\centering 1} & + \multicolumn{2}{c|}{\multirow{2}{0.07\linewidth}{\centering 2}} & + \multicolumn{2}{c|}{\multirow{2}{0.07\linewidth}{\centering 3}} \\ + & energies & & \multicolumn{2}{c|}{~} & \multicolumn{2}{c|}{~} \\ + \cline{2-7} + & Time (s) & 509.51 & \multicolumn{2}{c|}{451.49} & \multicolumn{2}{c|}{436.72} \\ + \cline{2-7} + & Speedup & - & \multicolumn{2}{c|}{1.13} & \multicolumn{2}{c|}{1.17} \\ + \hline +\end{tabular} +\caption{\label{t:perfs_V6} Performance results with multiple + concurrent energies + on one C2070 GPU. GPU initialization times are not considered here. } +\end{center} +\end{table} + +In order to have enough GPU memory to run two or three concurrent +energies for the large case, we use one C2070 GPU +(featuring 6GB of memory) +with one Intel X5650 hex-core CPU, CUDA 4.1 and CUBLAS 4.1, as +well as the latest MAGMA release (version 1.3.0). +Substantial changes have been required +in the MAGMA calls with respect to the previous versions of PROP that were using MAGMA 0.2. + Table~\ref{t:perfs_V6} presents the speedups +obtained on the Fermi GPU for multiple concurrent +energies (up to sixteen since this is the maximum number of concurrent +kernel launches currently supported \cite{CUDA_ProgGuide}). +With the medium case, speedups greater than 2 are obtained with four +concurrent energies or more. +With the more realistic large case, the performance gain is lower mainly because of +the increase in matrix sizes, which implies a better GPU usage +with only one energy on the GPU. The concurrent execution of multiple +kernels is also limited by other operations on the +GPU \cite{CUDA_ProgGuide,CUDA_stream} and by the current MAGMA code which +prevents concurrent MAGMA calls in different streams. +Better speedups can be here expected on the latest Kepler GPUs which +offer additional compute power, and whose {\em Hyper-Q} feature may help +improve further the GPU utilization with concurrent energies. +On the contrary, the same code on the C1060 shows no speedup + since the concurrent kernel launches are +serialized on this previous GPU architecture. + + + + + + + + +\section{Conclusion and future work} +\label{conclusion} + + +In this chapter, we have presented our methodology and our results in +the deployment on +a GPU of an application (the PROP program) in atomic physics. + +We have started by studying the numerical stability of PROP using +single precision arithmetic. This has shown that PROP +using single precision, while relatively stable for some small cases, +gives unsatisfactory results for realistic simulation cases above the +ionization threshold where there is a +significant density of pseudo-states. It is +expected that this may not be the case below the ionization threshold +where the actual target states are less dense. This requires further +investigation. + +We have +therefore deployed the PROP code in double precision on +a GPU, with successive improvements. The different GPU versions +each offer increasing speedups over the CPU version. +Compared to the single (respectively four) core(s) CPU version, the +optimal GPU implementation +gives a speedup of 8.2 (resp. 4.6) on one C1060 GPU, +and a speedup of 15.9 (resp. 9.0) on one +C2050 GPU with improved double precision performance. +An additional gain of around 15\% +can also be obtained on one Fermi GPU +with large memory (C2070) thanks to concurrent kernel execution. + +Such speedups +cannot be directly compared with the 1.15 speedup +obtained with the HMPP version, since in our tests the CPUs are +different and the CUBLAS versions are more recent. +However, the programming effort required +progressively to deploy PROP on GPUs clearly offers improved and interesting speedups for this +real-life application in double precision with varying-size matrices. + + +We are currently working on a hybrid CPU-GPU version that spreads the +computations of the independent energies on both the CPU +and the GPU. This will enable +multiple energy execution on the CPU, with +one or several core(s) dedicated to each energy (via multi-threaded +BLAS libraries). Multiple +concurrent energies may also be propagated on each Fermi GPU. +By merging this work with the current MPI PROP program, we will +obtain a scalable hybrid CPU-GPU version. +This final version will offer an additional level of parallelism +thanks to the MPI +standard in order to exploit multiple +nodes with multiple CPU cores and possibly multiple GPU cards. + +\putbib[Chapters/chapter15/biblio] + diff --git a/BookGPU/Chapters/chapter15/figures/1s2p.pdf b/BookGPU/Chapters/chapter15/figures/1s2p.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2cd2c18518e878069b0a1cf71a50eef96544880b GIT binary patch literal 15848 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 literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/1s2pHT.pdf b/BookGPU/Chapters/chapter15/figures/1s2pHT.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9ae1822dd1c5d3ebe188124180f8d8ce0a0a35ab GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/1s4d.pdf b/BookGPU/Chapters/chapter15/figures/1s4d.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4e889d7ae9370850415e4c3bab2b3acd496b1ae2 GIT binary patch literal 16365 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≥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 SI6V_90~0g}iLk5)^#2Dq4~;Yc literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/C1060_V3_IO_COMP.pdf b/BookGPU/Chapters/chapter15/figures/C1060_V3_IO_COMP.pdf new file mode 100644 index 0000000000000000000000000000000000000000..03acc05dfe40b0530bdb711b35a919e2fe3a7cdc GIT binary patch literal 8079 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 literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/Domain.pdf b/BookGPU/Chapters/chapter15/figures/Domain.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2027845522227614b80908d3e44ed2ffd899488e GIT binary patch literal 5201 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 PCWq}rva|E>pF#Q;7i>t# literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/GPU_V5_C1060_TIMES.pdf b/BookGPU/Chapters/chapter15/figures/GPU_V5_C1060_TIMES.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dc316cac1db3c18e8855a76c383f1932921ba137 GIT binary patch literal 11567 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%0DmZnlE=}o+;ssgx`3|&Gjem zo6TK#vO;ee&IKMJKVt`yO%l%s=BQ=#6$ZHQuGGm@#3^7~ym6^dJ^XlF%u)&UhVJ^& zm>=!2q~a&b%}E=Om+#9_2()X_8CxXHnH~(jay>GG^)<|d+tlumve=Js>KNpD~zu7lb`* zQOTCP1P}+;SquA*Wpn@#8P{Lsb_kLQMRFAY5?nGgq zmUdlah`X~&b22of?5&>in;@1#X*OH3#ZHio2iC}*mD`0xffiF^UCRX8Baet9zhZrf zdMw3)+b8xU`1Q%jkd1{9KhZj2bn`v_Tkw%^fnX==&WjY|c<;7}XQnuy*cg_XQ76o4 zTFn^ZZ%7M)7j*P#R5+=oV}2zMv$O9{K?d+SKKEMNyeD(kddBVH;nW6KEp6EspHuFzf3`sPt0e&x^%a%D4V zC2gNwakmMQ>!h*2*Kz(WEw*Qa?enMPT=b`X`h$X&BMh2%=J8lOqCq6)_Xa-uX zYHA^(tP)JV-}fR`@aLQdHS_A`)X&qm?+$!c&;~IO<+zX#&#k8>n8^jO?eq#j5gfZi z9g|49&d0&g$k)rVS^<7}=*YV^>4Yb0vDO$86O2#!>K=9N+1qRTAL^x+}JF__S5 zxSnS?&r*eAm(ELaC6HA7WQ5@Poq2Ksadn;h-M+K#(9Q&pqoo6X_i+cG6r~sLPe?tZ ze1zx}ipFm|X5Ker$MIanpbRGxA*QHt#Z_sGe-NCKTU%aCBo~`CQ$lIajHjZqPj7a^ zLXNJpy3r5Dt!;aMwT+yf@sZn?(n?eN`xd-<*5;#>5+zR((;r8@G1X;^->3QFaaLVA zn(?ac(D~(2wD6SuIr1W!BVxFA-zC>nxxV7amU>UxDt#;mdFw;cF&<*Xr4a21P3mYk|4T+Z2JE7oGY0FC?GYEMJ0;Id})?1`!s9z*{X_#TQOzFP~Xf zFJG(aI>HQ^_KlZUN-=|Kd7PlWbgiV_zCZegl{W^cofpVGcxGBJj?7wrtR(i_Mv8-j zivhrYJwz(z!gJw=e+zvrlk9!}xKS(vCetl@cRu2JH;ZrcR%Lh}-$)Flv_6(YT4l)h z&=e45j()1X*uwcfRw7RB#aR9jb)?xSqNRKeeSNCs^?pUIGX5!cr|X&U(gF^6Dr>j& zWWu>PZcI#>OnRfGqOOFd*zeUMq$Q-k^E4&*R5kRP&wZ}t=&)N{d&>#T?Shnxy&TwS z%Tzf#T#)?!wdval?bk^qDe=pDjY<-d+x8x1eai7)L(W!eMHPO;@>-tdrW!81&jwAL z1A2OIJ8Gy}J+&CTcTd(fuQ6@XFjjr?ylV`Z+m0kuxF9uCnl`<CI@qX zEBhf~x_)={Z2X*TL~S{wpo9`qR_J^XjMvA?jo0qy4_!R~=xe7Wvz(5)BJ&l4kC>0M zn=?8?0`PH0xOj;9NOJrX5kt4H$UqLjPZpGuB!{7f769eyig1FX0AM~*J`gWR;10kJ ziM||ryCR(cAU+`uG$hj2PD}@#9Qp-_?n!bupipjNK%lp`H=nlvpDWTH2oe<)1@eP| zU@$M5gV)2?1!d*K>*B$J*7ws8xZ$5-E*^Y8ZQ?^;W`S@+Ac&72_=loDk|uCh7r>Qb zD{EIzlq83zC)`%d76cKt6SlMEg;47Qm|r2E9a-(E8-Hw}&d^Qt*JUxoD*pP0O>ji)m@4WlCe{}VL-Z9m)E{AsY8Clc{gU}Y++KAb?BAuH=+FHpgFyXi zAmCT~Nep4-VlTe_bl`w7II*I2)~7%iiUzNAI#0;mv0bo= z6yRUT=$6e@xVR#Jf$PHD|Ih+OTZV$W{0rbG!xg}vV(7N*?>r~k_WudG|&g{dK6LKPn_SyswVz|M8*mw`|!Trw`|UI()d$ zxxg#upqKS(H*;Pc1d1?g06Lir`gsOGAXmwK5SkBtT>NB_7ef=kAbxa}KtvD(5#iwn zaq#nVpgHueLJ6(rKLyDjid>PLe|YQPyB^Jg&f+=3Y*2r)Tsag?mhnV6pap+L3)i0s zb{{0n4xMI3=R2=X=wA;&2m%p+0PFz2X+lC^bfWp{0l568fxv?3lEpu1{6dhcWc5Gz z_=N;P|CU8FfY8N=fAI;3{trGOAyIUt;a_~hqG-STlO_!2N2ikiNfQzl_#b>iS9#)p z@d-nO|7|mfUqtk8cqpV5I-80_|NjaAs0;T)S6T!CKpj`~k^8gA0syMG*tr6(f(2cD zQIQ9jNXQEd2`hj>axyZ)GO_}qav%i}enmk!MTmeLznr|HBJ}^xVRlt*@jzK2Q9m67 Q0t8lYz-`6`S=)RjcrVw%!oLE|50KTH@9*! zb|7LDx6*eq7Be=qH8K_ufOT|oFxIz*b<67Llu96PN5tovRvpj?{5&LJ_z1K|eL9_FLd)klc-UzcYuMYWOd{oTI5-k!VPKmU4}{`KqV zc0BTb=TQ$u2J}C+fIl?j~onp7*dcUESl#zTod`bY?z9^i2*_9!#?X z-vUJ6w+S>!JS)VY^BP}LbQLgVXn0QMaup4-k6eTH^zQNL6 z+56Fs$6m64(_s(yR8?Pm(RvOyES4X&+Ri*3>0pmp_b%!fLVoq%$)aX)x*4M?X)S;r zmd;LamC^l#DOhBfCGBc-gF}_mdY8BdJT24Rwrp*J)r-|TL|O-YkR|nfTcce0#%2@l zl;akDO}33V!5)5C_9gN6HQL=7%OVfCYs#G@NNfEK(qsg=bxxBy(jP;3@}k5mz0g6Yv!aosL|>j9ZU!)9_f23~zOaIfJ?^v31{?$nI|vIZPjEj?hhvVhe>HQ5gR zf92)%;4Qg1=_$Nnk^`D0#i_><)0-~k>)>_x&%d?VrvJVwMKNH~y0A5YT0L zINkYg>Dwkdv@WKdCA_!2LUF1>q}uQP>G!S9r{?t3xi|An0lR=M55_Iq%zxj(oUEj6 z(}WBVIDqgjuX^wPpK#yTOz+B&@RrpjDsnjr?kNAj2N+J`u-fk~(Gu>H%h9`e2VdSt zBRudL#niAfiI`*_@&J%F1Xyg}g33kO4K$O+N4rWz%a_9ges^Jd7 z*{IweVOusA^dIm5rxb|k%*TMXNj`9{M4O&{_D@`nCrH2V@$#@Uk0Ij-q;w8Htpf_y zl;LgP4LB{o`w5(uKQZj#r~aB2-Yd2PX2CZ^kW{5s0sE;cc<2VLqobGjy`9vD`!HP`vI3iG;3CHg2hZOE=L2#t2N> z=_#%UPQ`x?4xloA&^!`JYHw8dVcCeS{!1mGzTSu1kz=aaUaP|EL=5aY&o z?avV82V8cOtAehUf_A`0rcZh*;~ShMuvm+H?Zz!jHvuQDjTA{cbN?sq9i;P`E88d5 z6DaW^<`1kV3V(GouVfBC3fN5`_WthXf^4oo5PQTE#s7l{_Cy;!AR<2eg@}s}V(MC8N%q>qNZ#^hcG(PZ*rTT*SAl_>)wO ziW;UU>-_DuTRD*WfJvg0L zZUR}x^vUD}ue=H>#DwCl_gX3R4T!k=Xh9H*&X{~`KD%mr&` zz@c|7C~3|*2<7p3gV*7b6VmVUTtWkW6W%hFaMQ_eROKxz)ci$w&FSh&5+stvfv9&) zi%gk&zk2?q8CbcL&wL$aS$VZdGKFvn{uw|a#!N0wanWX(uGMeA3F}5rh`4A&HW;fI3Sez&ioSYd3 zHCa!oMUxcav{4r(r5Ny(F&`ki0So>E(s`CIlqs2@XT(C!&v;Hjo(kB@-<#1SM>y@o zkqOvKy>uWI%it%t{@EC&AAyaJs)7RE*uT95Zr45)4-nEyf6x>uLGFBDXx2*vXDc1c zXcqzc4(cRVtrseAfRv|QS2inLGoJDGkkoT6QnOzQ@KPr@l zIE&|dg5NA2n%=Y>{k#*t%d1|Gw8>@ZdanUH`vv9rl=fDT%4%Pqo7f*IPdH{)?5XMx zSM_UW!<*AKQpZU@`YgASzCH%&SF-ES{H5jdOu(VHw}YlHV|EJsh00Os?BzK5OK=I8 z`AieZd!!`_SNRAabvhU}s#Us3%G0}j(S26)0fuo6B_4CbxE`l?uDd88k#xX3z>_Y? zMsC0sLmTD?#-ytR-OKxxrh&O+$}GU*jL@Rla#dUPh=s)aY30k_TZfgJF!}6Exqdv4 zH&heph7mE_FTNwB+=2N^p?<{X+n?|@%>!o88PaqTG;55nU2myBwML%&8l%^xUxxH z78I)_ZR2NnLG-dmNpt%!d^NG|=xY!-z*LXN93Q6nM%P#WE6oWiSgvGCzODK&Qaf?Y ziQ=XRFdlMyAfWA|?N+6b7&;6vu?Pp;>WALTh1?~(&s#wFHhu2Ub2r-6-KJ$|Q%=0$ zw-R%$z-kAi7B{xya zR--e&7SPOl6C1Ew+mMJC*PhdBW_nGM*?+F-z?#%$jNf8F^i{ubR7cKeKd$)fkbz&M zZ2S}R*pMRs<}0pql{~qYBHWX$jyJQj<5R~MR?s}g7pllWfkuy`XqU7>P+rVXC$B7} zkx`83l8!P&4yc)AFzqU#+A&&{+Q1#V#RzqdeNNei?D0L%cpLFO*ind-btgDtdptg+ z6r{9-KpBQ8{B`sbY4FOH`=Ku_5_CMH(8)+s)%^RfRlc~svG>NxX0UGpBDa{0(Pqscb18w2pIR&U9qbBrTYP3$#;dd2;nfF!u5>ct%GbX0lsxgj9xNV! zAASBbax4-PjnbF@Iv_?-%TgVG!yq7XsQUcb53V2Sep<2kd!nx*L@J6lI`P}HbcE=7 z$~a!l;@lz@fP(mY0d_q$X~aT^Me!VWQ9TSi1QZM|WxL_7~+fHL=RRR@A+wch~ zJiqp}!C}vWNIDS1{#4XDQ^vAPKD?e242&qWP;l_!c12PKuI!t)rR|ZxZLk&^@}*;S zTmNGzo+Uf=NPnKk5*6!@VZ`%A2dF2XRwb|z+s2ZJ%VomRlMiV6F`$LR=EPAZwhCIh z(Nt^FkIF6;BjI^5c(AZgR(FADRNQff&}FPP2e!Vq*whuwtcLJ89B1b0@GnFTw`Fb z_rUTyO4MrMs(>_s1GGV6jp#Ym9O{5$`eAM5PR1-+Og;#!nrYjo?FY9ocBXX(!HEDP zaLHn#y3+xDzX2MxqeTO>M0*&RBA8c}wP;1{8T;AbE2-JU&!;JhyfVs4-Nce3v;^CV zfe&d#AKUE&^@+5~(%wFQ44TiP(gtY*$Z#p>*6Irt*QA-@nTsr6bqa^(7<3D%&*}$w zot`QMGmzf|Ve{G1F;2u$o6OXWeoUy_vd~yA?yl9h{}e7(w_+jWPalP|-i{*ilTA7f zNl~{A@@90fv64HWu$u(q4I?Cqlq%tXuOo&x0z~+Tg%YzC%>&kZ3YiFstr-st`VEpP z;&>fzP*M-<9NoU6IB5u^hp0gNObZKc)eu5z5f-3@WupQ5mqyECpVt%mk13BA69hM=cifJi#tTK4Wi$$Eky290z-mS{%MAJOiz}= zD_-&EVL3x|;|YgHa^8oXoS|nIL<%L`(iy)Vr|aV&CdsZ7q3?b`R9#n5C6-lcp(Rt7 znYrI?jK1gJ7RfFmUmj+uQM`t_Q(#IS`(JJ3Z%)nAd`rrgG@}uYYkdP#{+MW&4~v7R zWVxBodq?3Mcd zG;$Kg|I|t&HBWGo#Y1=c?0s%b^t<(VsE}ikOgyTkf1Du)F9KSiByVMKPk?SdGSKxphJ}V#66^s z6e7ZXDM!WKAO=QX$)@OTxGM*AlPo4R#7Lf!Y@N+l+?2zz%&S`3gX6_)qoGWN-Gh)?`cl4}?Z***CUnGCYUpOiUDB;gM5MN&A{<;qJ?T@c*85WFJTGxk1w~oX0 zScguYNWcad%unow1(~jgE#N9Pjrrgta>F&>0swVkr* zS?02f$R35<^vQ$27YeaDb!p&YtNZ=PH&xfU3Z)8)+F`uJ{oYxQmK>QfM+acY&Uc1}Z8@IxRfF_f^`k~I5{qgxlFjh$(w27@cw$wp#Qrp>Yk;i| zF44juS!&1mPl^;Gt(JDw)E%<=>dmb7#ycWIQT0m&@@=qe-ff)0Y`~ zvTwmn)HfJ)sm>CTj;@2mK(Y&#!0|Y=`mXkk|qxiXVr{gor}-~ zw^S~p`Z3z3Ttg;&?z_z%+m!Wwbc%%s3@rIB<9<=q={6=6tkczvNH^8TZQZN)F!^hS z=7*O6b(1!PcOUJN?9C21jc}}=bt&K~FWd-@3!f4OpU!j^$u+UfHsw)|#Zmn~8L)+9 zZ&y%)+fZlg&C#W589GeaKA)a;2l4~BvPtS6}DJdN*f{}VkhOL)jnSm2ihCA2*@24TlRlB`8sXmTRkp9WGme5e!RwJ3albd2@RpzEn>p+KK4G$d-%Qq_S7$ z|DtMui=(zz=E@R-B+@eK++mKnXvRnBB$y;X6Qi**i({>NQ)0u{I6Iurdz)M`Ek&Jt z(!HHDLQk`F7yJ^p0P`vi^7hg3m8`Ck6;vU09j~YE;@wVdW6{+h|epLA-3rhA<1pD*!dGk84v| z;wd5@%At4{Z<=`%L=&PBt^0_-?w#bPNIJO2!W4ZhO(|nh{Gw5;wC{q}j)G-TOzqd2 znYIWSvR|#u;gv422d6!mCkL4N);IfP&m|>bMD=-UiyJb>%ZwLFQ2Kbrwq|YPaEs7k zl@`;L3|#W59<jJz)-}Z zo_>5d{+{w#@F} z%Fk9BI$@@BiIdbT%Y~IA-yV4aJ%A_w`4Kc*-Ar}o#k;i1{+`BOtB01KN^o!w|3INd zK541FRjhy;6v1;HP_C`EFWTtk7ZFX$rXp>n$lWism-VE7P!u;`T#jgW)w#611DAiK zfVW_{XQvH5i7b`J9E*f!V_$0iYc$F!!Ch>7M9=Os1hK{?+Y%zUM2KtY2}NUeN?Jl9 z_hafbI0s^~y_S(U4?YW5E(h7(z+#F1oMcZKtDD@SPjSyyRRAa2}k_UB(XqCg?D5_eaIonJ*C82nXCuyHoDOQ2tw!aH!6f zor$7HGTip%(VU4xhI4ML#4mH-GNlUX&D+zNf&pujWQ@sfz*o*Q%QZP^_-`iGoYc%3 z7c(x2b8aMoYc?hmva>7=$5}#aHgiM6KQKG=aeMEICR{`H}tW%Yyq-UUuwZPcd@`y*ym(LTwUVF&d~f1(e-ISWBgH7v$P*a z>p&^(+x2kUDd$1F7nqNr21cY*e>^NNw)YzJlC zRaW+L@u5Ts*E(cb5JV1-p;V)8v&KvoLrgVahQab~Pf7{QRZ0#c$pcglpLQLuZ4`nUa#Gq(2q2C3LFpDvII>`NO|fy=U6)NRV>uZt&t&oXGt={ z(wlj*kW<@3YX5#G3=nE^cy-L!q&KcyA5S_f9DG751ES!xB4)~AQ(qDM7Hj+2+;dsYs`}~8ytwATn&Wq>aV^SRW?V$lewJ(=lZ;Z5 zC}xEczp%E-n6{=0O3SY5xgoSO+~B3$sDyKoW1jR!;*X=_DkxI2tn=Y%d>IM)c^h-NA(3j9v zZyj%;GA4Ms-;oeTEMgkXIOw*zl_q*7Qbeq8q1b}i`4%}p9oMyauWR$%B0{>lOZ8dt z@79Wu?~dbC{Or&t*KSk+I5=M~aJQ*tn6bVt`tBbaoKPQSdQ!Wk=w9od*zF_`;K9|& zbGOhmkEx5zr4sh!ulldbyiR$3i|3i0y3-MX<(v(VfTRAx<0rW`MBY8-m@l?A#6CH~ z{g|}$NVNl9P6TBr$>A~Lqr?Cb1G3K&^6k3$nRGbAPx}6w<5Odgg^rFFsr;eYJ7r8N zjfRZ7!IXYjj`>j6}1*f%M2cFa9_-#C+F3z-ysq21v#{_7v5!TRvzxB&G~RiEk{8sy3=g?>mX-`z z4m!Kpa--5k=WNohgT^Q*X~Ru)X)0K*N%IyV(kYXvyW+fP9Z~B%?6DQ6%>*o=S#BkY zxy}#tOcAS^+jdTbW;UHdmK|ky8QjU#xkayYU-DYFc2J#lnc>+Gmi(>i`zEs1u(ozF ziUBZ_S?Su&tHZ*zQM+^nUKNu^E6VM_mw00=vAk?E@Qq|E@l-QMwOD$oqv3D%2FKqC z^tx~DnKHTO-zT|u7t%R69+;Y!bZkix?8v;fDfXIGPYKez9O-h*7)dXE@-gP8Mba;>LU;=Q{j461Cr^=PJFQuF+ zenO$3ojSITrV&Sek{^e0VE~PRm=AXW8K(eA7cj5(@=3m=-V*bjb*iC3rE6NJ@LuAO zZ1z}V?^6H%S-k|?x483}7w*XO=ni}Qs)%SNjRPV^77%5_ClAdt3RBw?&#=wbl{TyT z?HL+T;S8J}5&xv?>?;#1lEB#=s)Wc%w5YHr5w=}emM#zX)9WyH0EM_TC0KZq)h}+0 zhHQv>TJxT+9tye3LHWH~oa(on2cbi(HK>@jpt(3~GqWF{i^6%8FrXu0nb7N&RjD-9 z!hw!t6%K6~y7yN6zb?Vy+)(1i(H7#%+u|)%N-@3|!2}9uH^zIJr+MKf2?kfe zQJQD67pA_^v@rSk3u6Q@_o#1LpC{LV*Hwx0Ja>@|=QHGQ;M6H~Wlo%T>f2x|ontzE z9>OP^F@Ki>h?W&5n|Xa&rd@p&YKK}`PvHBcA+TcS|2cmP#NmAIFyu(H(+d9z$$vF} zmVC6B#Gh0XBT?wp*<^-TJ>)0CSBCb@j)(*)J5sjgZ4(+l3sx$o{A@aRF$8WBhNd$a zN2_=Ipu@|&d9pV^!qcb7c{xOT?}X0$=ud$(q?|0?=L+>B%0_#Qp6l5VpftK3z12dg z3u*nQ474sMxH3Fd{X8JLXy~tjvI{3V%sD?z1^6Er9n6lP6PqWcQSeQ-%LS&T-sh%~ zFAdd{_Q8lYLK2R>f~KU%ehD2>wj9Le=iQ=j%wL4N)Z0?WkTmC{MWzpBuL>r-Dz?M0L~rG%8qm5saFd}osGf_sN*FYd!4jI6I9X4z4oZvx=D1awzbWLOAuO;BQgVdF?~HCeMTBd}_x5NZjc*q=grsEbFW>5y(*- zYU{&-)Pt?AtH#KMiHj;6+#@dTuaM~44=|&d>&A|XFGK7#{CB=PxLN~Pqd-j1&pMU7xlm?J13NZiU%MRR7qeI*wK!AgNRLeUQ|o3b45 zR}t_+=HQKkad`OPDLK+tH#-NF!&m9lM)Ff=YPUV2#*z+)NtI_No}&j&dP8^6fW!6XSVzyL_@N=KXR?}D^VhOr+LOD? z%8bMrNjK7O%8W{8DvWB!jYJuzKE$K6SDDP62TAbh43P*tZ+VBU-no3SAgOefUe9)U zG6PtGZiyYfuoF(%DRMXZUiGENHbDjcg@qaG2bL6PT$L*|nfurUT-5`a`}kwViF}3` zRZ}j(u>t5h6Fo3##u8Yz2}f>$iIFR0(_hoS0?tkH2ERZ)OO@713D_~5Xu)=vxwI-W z$bK!8pI_cshkcuCXB;`d>)K~V(H&4l90ESX$14t+r!#OxM_2myd)k4~KUp$j@cJZ zV^}Q2EwvYCvol(7!TDj$CZR%=AKD+X9?al6Z^qPRMkhOVZaRAmo}V+aI6777blWOX z=fo7PA~la6>N;dXXx({EyOEUB!J6Rst@vbW#9B`Vm7j36PtrHF-qyTroB(#+!)Vfs zsP4l)ipCim`Ug((mln9MWyF>iQMk(`cH#S_1eyj?@efxj9yyCjxTy-U04;De+W7d= z1zj`ca%CeyaS~x>b{7PFR&N4LjP0Fx!QAstZ4(>U;m8@8aC$ZX1`>C_D12#GkuX}^ z%8^QnZx+RpH*ZaL?I)l^kKpn~JTCKI9)Vc;5J8GiAmUO_?FmqfV<2r*Fm|9PIo0q^ zvoy>R&iaMbiMY^AdTe+bW`P)OaF(AdToA{w5Yojnmr7pWJ~0+5+7?bS9Z)qk{)9nw zAVttf0>xB9nXD?xmlg#%EhAA+;HqHT*oWe@L6-^B0SG$vmCb!MN6wr3nzNVJClM{u z?yOsC^yvil42lL{wDRF8rcQ&o;H*nR6#ctBnh%rHSOJ?FCca9DO;S*Ve=DJo@q(S7 zzpw5d-`Quf2|OVqs|G-ApeO`Qx!js_eOaSCLbcGcQ_4FSeeuN%`4KWxv7D^=A~8>i zVoy@ZyhK0RTTcY_DM$o$^$6NBbFuysn5_9o1c-7Jn=B}$-WU|28>8rj3Ji9ROLWUd z_GV2I$QKm8$9+sz_xtDH*wHj55YCa??uTt{`{Ql4Bvz z3K-_f*tQQLa|=6U2#ejMNq{)S7@#KbEmCtCw(#g1{t`=&Xif}k0T~mFr$B3mJAU05 z0K=+;PA?;Z1%t=p#3ct=PZswBy3H^6Mk=+ItzXo7^$R7hriPvt+czQ2kWc{$uz|UO zuP2~%Ms8v9YXzDzY2A8d4M@ggF}Y^=Pr&**HGL zw2^oU?M(g+z*n}Agw~UaM)3O9JOm&5(M?8BQA^W2^KlIiwkK;qg33!^MCYR9Wn%g_Njd&6Mx6Z}H@PD4DIODyOU`~qH%nXBP0WRcGvr5j#V9HNV<22dk8^uNY(ME;;lgG)1FQM_Y(HZHXar^vc^- zvuL48uHE}r!ps~-&Y`($ZwbL0B;#>=43Gc!jHCQoEY9Ahis3}E*?F^pF!vlaS_g#$ z7V{>(z}kIxt@|cEwj3VBITkTP&pv!Axm&C%&5TgJN_YQ&Ns>4z*T(xbyyMp&CAIY{7nm>XV@k=->*mprV9M#a z6d!(kJ0B5}AHQl0&_Kf`V23XcQS&NSW8sTNBKFY?DZQ>6WE{O((bK~wz!f4JH6#R+ zA}EdDzh;(J=20<@u?B+%&)j#LFu^xR-=H5BJ@z3!QwB>T9iB&Van}G|iO!FBSQI(r zOEwWV5Mn0f+ynt~4-)%8(2Y_%@X1@o409*!F>eFz%71Y44P6yNIZB zd`A1qrn`?ZXtX$w9a>#Z>mkeTi2E_LivjO`ku#E)L6q}6o|*LvlAJ>17M3S-UO&ddS;{aNpWwI9KV>eA&u`)M)&cnGy$7j zL?pMPQ}tzL`L44RP+q=Y)8x;sj4K4wnr6lBnlN$IQrucv^244XOHh-U=p{uTK#|Jh zZ>{ahi(_hl+da^{MIzqpX>SIqkQe60QjMFOz;h)AGPwySQIE(nJAS`T*P1Q14lqD! z$tS2fNv$d$!HDnnO(U+PaY)HOOQ$`bj&(`_gY|w7j4uS4@DGF)E9nt9+rJB{AdpUUUPQ7{vXZd{~K6CMdrqZxKIU7wpUaQf%Ylg>EJ)&7|1?B+4 z)T*LTiDHNAR~(YJNW9hbA;ZsU=-1mzBxJMOYJE_=h{#WvUId)82lS*ib@{K_eK6}{ zIyBc2=XJyjuH~F~2y@mP3x#L+zF!I7PMV`23AXRrS71=`^;G5LJ-4jWvy@) zzI>gY#t9)PO=ODbGGSz{xd1Qs5ySPG)o;{)5|NOAsVb2K>0^_aT%kO5>OHhMx*~;P z5Jr3{8&|}{vm2x7<%_wR*AB*G)jzUWF0|%ZN!(E8F>Wo^&lqG1|N2=i>dq;Woh~my zE2nxQt4x9II0?(=t^^t3vFDz=^an=1rh6*4>565MfGo4(^hJM$HIr?E#KuZD--b}3 zP3=mba$BPafFv`K^9u;@H!`1n0I5IYkra5fVWRzh1;Pb|{^x`T+FY-P&#ob(a?nPu zw`hW#>vs@>+r(Lk9KS?{K3xxS*1Ga0Q?cp^@a?)nkbl?R*o}_85Oml=b{_Db4CQ*Z zVhCPO=T5R>2;8E~;!Vv7$nlSU+c#(v3(T2|#|J0{Wy#t`?=M|uu+5Ue1nXsR=rf*S z)k&n2aV`@e?1I6m8|D48RmIwbJ3~0NKY>PlpJkS^KO#%XwZTUd zs821#663`ycL30#db3oGP&;#;rK$oNz&yf_K}0LQ#E*#)!ZSKZZ%n*cs|Ju@m}BsG zI}Fd%lC?(C3dK9%)wqc|zK8DtRiXw5k*D$<14wv1DvEw2l~KLP)I5JwslVm?2Ie}- zrJE~rGz#%JIp`j=F*;%PPGFQEE8f=?Lw{7u`X`>JEy^^@c9VD9(m?U)i0n(?@36o9 zE&ph#W7L4+Q?|dvr$9ZnBMpCE3Q&AHS(Kag2`D}V+FsgFwcMd4f_OH!eI;gqy4%l3 zm4`mNZspovSDrKKQPmDEK@amNKvGl(g(erWvOZa0;#GSIufmi!+LKO1OWp1#*$C0v zffeX`|D%5Wddu&;PMv&)Rr-Qg4b)Sc{iVURKI9$(8gFPT{fRUFYW{48pM4y`%$S8< zn90BL-fX9S4oZHbn_R*48oFFG@r4j6s$x$W&Z%a{u^vk|@==m|q~Egcl>NcTQ!Y;M ziw#!9#!4rk8$`X`*ftnw2l=nYH`D!ow|FZLDeLkRI8T5!$G_OJVZFrpS>`wcEk7ec z8FktAKS@bf3KT>AMxDmtk{i;$s$-qxqq;x=yDm`#D8@R8e}lyghkbEJ@)Ol;ePX!) z5gxMNCV{SfRQQu4^De;Iv}}lz<-pH^d{k~AMtlqgOPumy{2wX%?{4mk23VGvyubrJ zBq93$Q#9;~bSF`uTj{r3^Q!D2A;q$r zFPM4K+=!;yG1WhT?ubyMx;ua~WzMF9wIoPO#y+uiD2*Lh*0uatE*G$V*ePA5G1_Xa zh;|jz`M?I*nalwV8~FYXoX5{f4a1f5-V?VW>r zC31O>JzJ&vP6Iel0p0``l5IE}RN`VJ{Euk#5*&XG^qI!3lccXr$usL8g# z>_~rj9fMG`0ZSxPP~2#=emI0bu<|NzcIb+pe@e$l_dwXpegEyVs84$;;Cc5MJE(*! z2BH5nRV-r~hCzFvG?5m;b*8iNaw4@pEV(9&NZo@cwml@NmRlB;d35 zsOOI_$pqmaKz!Z(Z0WNb1Z*wyB@lIS<$|C1SSO+6)zE_(=N*8g#o*L@4a|;kI&OlD zmm=MvpFZ(-?SRIK6}VF%OBm7c>m@Aq*p2_i5|ezQEb~WcK#BS~%fFBZngZe`ig+o2 z1l0T&0m1c}96?u;=FG~e7fKj`QRZRt!wL=~{iYl`@vgFqAcZ&o{0s|@u=)zBu=JEf zeSk}Tdvte27{5w-j491({Ad!c2e3tdB>nw5pMa2ZgE|3C2hxcS#oIpc*8bySr|Fu>PqEFv@1epH`_SO{7-8b6EYyLKX7cLWOw+KL^gD ziGbGmKZd{mrc{vnKZd{mq?C7j08EJ%Xzc^q?eOD_H}CvBxxS02*L*`(p!K``k>$S8 z2z|fSeEZv$7}r4<<0ib}@<2MCoG(lWv?uX@x3Av^x(okfPcaoVIpqJc!vyr05b{T+ zHuq!wLsQc}zx^7qjFj1mgj`$sP)+0BN*Ak}Mi& z6#ttIXeN_w+bUNcdJQ{#OCer=NrqBF{}S+d;X7m`cP%w=_?617hVkZWTlW8V_?6=D zuZHeuDO%5gEA&S|p*bTJ@L-X0j$xenTDQLso@JAuO#Z=T_<|n!-cRzs+xQdEAv0*H=VtWp(gPMEKk0_yWg;xh;G|XVkdj}h(b+bvu-Tq^<3nNc( z<`A49P416}QxV1-%`#^u2fsPYZ&WpMWO7dvceyrWW{4iKm3hg7m`JUi+rdZXpHNy3`n6r~CWI!Cr7V zFZ(N!xBGg)x|?&nE%u@Ao{58djQMQp7dFO6l!kbZW&1=Eb2q5(KK>?(F!ZC2Ngli` zoJOwIkpyaRZSpPaZat#5dWW&Zwk6lN9>FzxEk8NV0GR7|+WW+jgR`8M&rdk&g!TA39nP!^$u> z&4Aw>+$ZE9y<8F=PW-@J+=M~V5+0ISC-kMXhO!1rtWL=m>21g5mj$iq+HH zR|NM6@U!Z;S4MriY20W!JPKPXR`60&vl$k3MQA3|Wp{!DKc1X4@ zJ|lk#uOY#-+gQV-=uU1XEaB3zb;|==ym-lyPRwkdvp?;cw2 zJA*@qSECM%wk<&z|fxlt%uzu-Yk;Mt}Q8#9FWTV31AV_G}DhHS&h65`#7 zuVOA1W^Ap}CitwkeMA|$FNZ;hrIeUC;ms7kjDDUtQoSqhAPAc)OTdz+@U24IH3reX z&%WPzMYZavat8Ds#)oQAv26PK0FgkeLa=EEW2JesW2g4KwBz7jC3ZN8bss+j z_-%Gwlv&6N4H6A<_SGTL)|T#ZwTC;B@DORifs~~?j9;$au;t)Snvq?}>7g~KV4ZZv z_s#2qS?U9TAj1wL`pjqXJ4w$+&}y}(@~$O~WA|InA>F6f7`i-JPg76Ws+1T`b;WWA z(xQ0Zle-QTe+do-Vo@aQ&6c1$CBESnGcRxti9k3bF)UR9g4r)WXpn1XZ(=~CgO*>q z4)jhte0TG3a3!GhOUW7R+eUG1{rl+&%-p$q&0w$%U^=ixoo+SLl!@mQMt;*c#jBJ|ZmXfl8O$LTM@c?NLqytI%68GSv(ZS_qAlX6N_23) zZzl8)I&Bm27M=Zp$C2xX9H%MtUElh$-y*urZf1fz*qTP#TE*sv`H;&S!v&z5&)g1H zzFQl9YPb*TA)H)7jyG>`9?;#i(%z-FZeq`Bo-y;j5#`-9Ax#gp&qU~$E4Svb@xruh zn0@P=XJ^^=R<(``=l17Z9f-Vn8uZqlAma z6i*hBWTMeX_66PkvdB*JpuBXj-0eu`XPjAj=oKx!e~GKVA`zeZDDCrZy+RBU=T!Vo z$T40>=4*oRU?}eH0@L~@#|?UTPUTX2j&<1|Jwh(lcK9|FCaePMRXC5w0F9D{StC8K zhij8YYme~PDDA#DY+o$fHu<#$$58&BjTL5Q{-@>tprX`q}`vhXK>hYnh5+bL%4s{+bsQ=iuWH%r0#O-j=M8IjW+C=9%6z()BKoW2!Z2t0x) zm}nQTWRiwk@wjNz6m^qFph9Ul!>zaw+6p))IV{d#T+@6$8@5 zY1t=ZrU5fqSE~D;=m9;iQ*MxG)zK;qP@lgW^Wn8$GAOfJ(>k#={{vG9ELs?iw(k)%W91R+B`k|<1U}Zvk7+xA`I9?`FH*R~mDX1GNPHIaET2(rIy^aHI0H4}2)H4ixChWwx&k91p@)XFbdtWg1Xb$xVE-6gSAH<5QR{rldr3L`gl{l`5t zjz3>h){6~>s>|i@$tPvl?fg;4!AK3AL~=gLe~H(xWGQX-A+Bxau8svj$3Uc#?NsP@ z%=;KgA>m^054zVB@u@QuR>qKNcP z_%0M=*DG}-sQIj2klxrkB1l?J-mG#y`Q40=KU+MCWN$woe%y47R8rYbH_V#gX)Wdq zoIPQTk`E*RkvLmt^LgaU7b`7i86=S-g0zD0@OFW_(!@K`xMUT1*t!nFsn`%2kv>p+yf3YM=A+(N$65ir|!2++Hx<74kuwHXoNa1OF(su>F zHLa!GlOV+LgSOvBxLpMKA{0GtGdU}?rFl93w#g4p2GJTTGZAuZYIkXmEN~czhGZU= z+?F~rg5G>Lnl{_?uwA{8pesWC=83~%2s4juRyyfy*UEAp`8U8lV%3GTum11c=?;gM~RI-TqI1iP5UqG`|3t(IIY&)_XQb}}q zGdWkCnt{7_Alw%U*AYzx!;Up|=ykM%TqGuc9wkdWve z(3$MPc91^!X}9PS@+-p_6t9>4KM4ztF zMbR*Ash2yoY;;~)82HI;(%7PR679U6C6SLzX{r&MjsprOqf?8Yo4A&vF&}prx+dZP z;$GgFONG6+P;U5k)2r}YmG7U|bO*2@qc5G99e<|Vch})6Kj)PifiHd5CO4h2aA)@+ ztW(>Rknog3?PXR>?Jmt><$EcGxZ z&V%d>N%9@oO6zG3uasbHZB=Ie<>yYZ70ry~+d|@>qcc4p3XPC#>iHI4+jCAAmNhn7bMBOiE^`BIAvsh4(`0AT`)gPby{}Aml)mvBA?( zRK}s+NxIgLxO|Y`G?rP5YiB5xQeQaeJ5}iB=`<4o7o+a{$)&_yH}g2|g9(#Wxo8yC zVh5$Wf38?CRS>^%&gRLEx+W*thhikdlZwb+V_jM&hC1G*OP>2BA4^u^^1&Y}1O0Gv zE7o<#IGl<^Zc0G_+VH4o^qlYR2DqogpAOjiab9T6iNl$WbK1qJ*a0a)}QdJfIW zi6;Bf8D@%@YP0ZObfPMlM#6V(;i;vH2Au{gNbLdNx@eI#?a#Gq{w~vC7|U>w8YIC* zlg|j^0?IEqOg~waGNdCjrA14BQ^CT{DNvi%+zVU!)>2s{Dt)6tGcf)9y&N08Y*H>k zW%{+*KqcX}jZZHUnTX^U=NfoEzrc-|n+y;fhgiLlO20Cfj%yLn>^2rGeYpG@U}Nk7 z=GU@ZKz##7!{`bSAhW$d{biR=agR5+a{ECHJ@ptB{w1lLffhTV;tnqf-ZnInW~B7^ zRJaf_B@s*b!B=wMmjHjvRxyILfQAK#OmA#K#D=Tv@M1XGIy>NmQlRseA{VXqbuPGh zU4|e+8t6f0Y-Ze=345Z7xzz!adSqzJ}cFkPt z?KaCK{WVX5vo^V}zk%^poDR zTVkjquNcS`>gxMNf;vhGgo|Kq-Za6s_Y7fR>JRx6S^BIQSFYnpPx}e+x1YTkl&4SO zE*=W@8eXVH^l$g55>}wOp{E-cj|AEk8X&Q*0UEl1N`{A$m_t(NU3`dmm+l(r;gEpO zoisS2LqFJ;Yl_FKdy2RTF4Zl@JAP}>;VSa`pNpQcfXaa3=+-h;b$_ZcA6TSp;XAtQI%(3~3G2v13#^t9nR{ zWy&5~;lkB5tNLRDpI^+lR;}&po8BeQI8A1&A~^HKfL`86Py6kD-bkDA0^4}%#fqnj z%WRX}LE<%>Rljg>4-Yy4b%?hP`k4sM*JH(g(=QdU+X1wc z;41$yfJz-rLoLn$nE=n#3{lH-jkwejTCh3!=7!1J_Wx#WnAdg(e0VGxd6o z#Svm$fmiqu0`~&9{F(d7SUo$gvHMB+^rT57R0k%@tV}dqTTAe^X8h08$2c)7iF4tc zPQnotk+Haew4B;UBZa@u1A&9B9DI8P)B$DHkZXYORnEy@UK4>&EZzzz*@K55a4P0o zzFuVtt?-1NaAf8nYTFFXI488nVLH(_+L@l2{JZH|2w;%6oiTUZ?_T2Qt$hTewp#)J z3Ms}P{eyT`{@Nt;SN*LHOPxWQKND ziu5}-pw~|#fhJ<$*J|Q))dXwPk3&JQ7oMTon0i6vWOYnlYQP_|f_g0hGVSv~$@Sf21fJX2jC?NeTwqE@sNiCbzcC zfEFoDjbo!bS;DW1dC^YPZEzQd;4mu#yqSI}tNze(WvhAMa4I(tF*x*_mT%ovAZ@^m zxvqPuslJwNj5l}m_NJG7D9vK7|CIOjv@8tt{uiV}bGBTcUYbaF8F+?6xkdP^0$ux} zA8R=FMdQ&nSG2^MwYCvXhmPWAkqT31b)XLCP~Uf4`;}o?THy)95)16PtR;mB5f{}* zbio2DQ^V^cjrnVBmJ_N8JG?zIbs1{bfM%k^MV%CzHbYHQl*U5_t`Q{W9rgYff7IkS z(&YsFEl31$fDud+7G=A2o=_+wghm*;KBH2bCiY>5i0Xzof!W#S_!k&k8~_Avc~uP4 z_#jRh$G<_dpYyanMTt{Ijnmdib`Yw6tcTtP%>ytF{t$A87qDp>kec*nLs3(1ESk_) z#nfbe-T%Q|bDAG{cUw#D$NO*MNcbXeAz4bkXkY6$BLHK^az%W$e$We z#%gtXFt3x3Ph@3oXpk1S>kLEf@wA+=!0I+#efB&s2iRN{Wztgmw^qk6X+xnC&Wn%E zIq0dbY^IGoUDH;~#vUM$M4Ln7dfBddL&boqH@xxZJaj~tGKd<=Ll3s3ORjkym_~yf zVUF_0>Zw9N@~yf^6OR~z7J&w6mrKnC@~ztlQjhC=N;27dtbrKb@n~cD_DT4wrC_?1 ztXTRrPU@u$&$Ej7JCrEy4H2O7nuGJnXO;ztn}$9D$;Uj6ZL%xT72TEohc8AK$$K8t zW|`=}vZysFIs(Uce^504t}v4X2Bp!^aL@vGmZ4-HCLhe&^EwVK;1ymux%TrC&a>&4 zd9`-*u#Pf}gEXVgHLUZ+zek@N$XN*n0+XG01N**>JvQwWpCOuS4n5M~FmsMQ(nJI* zGfB&Gc;t4j?qGlBFhppqtHw|n`13;j=n!Z|r?(gyZY+-^-cGU<8!MFO8Jgw@rWeC2 zrd0#N!%i8YVt6^h3ZqYlV14RHJ?w?bApQ($JiJQYlO6c7GRQ*jYFjPTynen)oq}W1 z&CwYCV`?EXfo>i^Df>t0K9_bQfden055mxE4P1Dtc9ZwF%l@58b4@_>(k#BYubDXc6zrd0 z4rOL;tc+l!4p2Mfb6UQ7c3kH;`4I*-dcE$%$>W@}eTeiTP<{fJz`yvN32JBe5w=n| zn0evH7$*t$%gJe8h!dVS!FKYKE3sVDU;3IILr2;^NAB%v`PMn zGk=SBR*tr9t03*F>^ik(>&8JjghCT&i$=jB3E$3Nzhyyohi=`R?a`9=oMB?C3p{`t zP%{dAiSDZhI2M#kpXi9>8sB5xNDiyhFG`5@w;hhL+=0&F)^USkBqmMVgY!$<2&=AU zy8sEw_p9Oqwn?7rp>ZiynxCY>Z7Z$NUcM6NbM9r%c2y8*O;clURmgwL1Ifp=9Kdw6 zv6V=9)B8LIKQA%xs{k4a4-LZ-7V@zceiwZQt2F5T=AoWsIyk#_y*gst=ox#_(~P|| zCy*(~pS-nMWIYE^*e*n+IFL6w zv=>S=%}-r5C_8)CY9pZ`IVd*YjC_)C@$)w@n6*Xchp`;@rNkeItScIP-U!(iVfl6} zItU!X#)5k9$6dZ5s{t8+GDj1I2ld?Pc#(WfW=P;*#zp5=aEEjhuhYKO?1R2*d~Gks z!C?LFCrRhZ8vbjR1u-XJXoOME=#)Ty%W;f2^{QiyoPRF;dXvDA5{t9Bt%3+0j#*q; zwKT|d7ooIIluoh*@@>Qm zo>E8@du3vLFi%6G;-b8TizHk|J&^&j<6`V(_c+&P>-#B#Jf|y~y~)0GO)UZ+{Zk`u z8$_GX{j)n)wrgHg?Y3H=r6?>fZaChq zGNm6qNt~@b_lYcK#bJ;d8y4kr*+^sLg6{xw(S|93f?b1pWc_#GK)E56$P6aFy~%-7 zzVwW10o7tRWR?9l*WTPm9dPgB1Nd#l;6Q|+JPux}s6$dHM4rl~_V=3~vNYTVGwF0t zEx&#-=`=U3N^x$CH$z2sZs;C^)PK@~?Iz+EveH&Jrd#1&k8%$I3$yVKDsr`6{8H5v z?lEPfQWIRJ*P_>on$bTUPe$PSTm{j>Y>XylRpaGPCdtTC7C_6chf&mItp#D$!m8Hi zF_J7+!?spK_Zp=jngN|_*Sg@Xy=IIBsAwZ%rSI9|KJ-Ndv|tV3+C49L12TDM{Z9A; zbGs^T#!cnZ{L5yqNq%xss<`MMH|pN*Mkr|Mzf1lrucyP@fp_*lYqS3n(3)nvgdE>o zShF&0Fo2f+|LqWs7;6EFluJe+N4Jwe$96tB%i;5MPVpXaj9>jVK-MHZOxr zS^R4c+|gASu-hB0xs<2Y4kmyY)}eEU+*!eLF?SV=zMq;ZyB)d`3epay)>Fom9m%~h zX)ch(t_V*U*y~Ig_O=zu7C!$=pRCB_N_QI=p9+EKF_kG(RN9|o z*x!A&faiR+KdL1EtwcRph!>qfeOuASHd_!q5%WUxWN7WBvu8eLpJO04#Up9Z)vh2r z*eUDPeLo!-K+lESpQG1c(OvZ>RxcNFm9QH90*tnunv5yAZ9!2AE&ukc%F@V zP}p;&xAtS-;lx`~Gpc(rv)nd24 z#|kWWa_EG+jPmzZ@Pq1IzrAehKV!dzUjG#c5;Vv^P{!e)Ug$TmEw3w%{96{wJM!^& z_@t!CJ6eHixa^l3O+EhU6zk>6znv0)x$4Kp;MtsqxDG)5OZpr}f!gKocOF|EEF~DU zacM=Y$KSyR;PLHUX1sMYSZJM=+>Dmvww4bq{KppL#VG70)(~E-R8}lfz!NI&IY7A> znAF0rjDLU*H4sbGNXyP?c4QF=4l+Cn4F6lhnV9<5>Uq$a|BUBv**yJwIDz;d8|uH9 z$cZlLJ5Cf3KvM<+X#NZPIDAq*LJ|Yf6Ey$11wi`995=B3ue`rw<^=3U{6U4_rs5h+sT@%^0@p9i5N4Ui~e>+#l!H>Q4B6Cc+5$Y$?Mh>fW1Z7iO8 zyK?O0$TtLes?psxpI;`@Rk`;GIYH9oFwawuW0El%?dziyUoHk;wstjoE6@ra23IdA zx;9WTl}>d{l=_?IJ(#XM^RsVo%$xZ|x`t)`V+b#3E2c~NAzR#C{zbckEp3F4Qxzmz z{TqVvR_YyRj`lxZv&m1+Yq+S^(1zLfCZ!#7sdiSdO$-wW+G3e2p3ubM@eP-{8^1>f z4DYggR$#_alAE<0hTQ!V&Hh@-?*qA*BG1R#-R}zWTmlzaC!wUYYDs~9_3@b;n)@ij zfo-`IDZ8>TQ`XH#^ZWKg$Lq)FKyE2?RO)#hIwGrp)xir~D!eq5w&{~W9^sn9yMI)=UYM7@Kn{4US0)Siza-t16=Pbo?SD}^z*uf# z>;PM_Qp8Cvv=&*1OzA%!;D1eOY)gzb)lsYMHFl%yG!p-kaA%&j{#9eI=S;s*dmzrT z{}0zCdb6ta9r(*+ugRteWE1}@0|&u+;`_4RNsZ7pTMN2sD93tB9Q(LGJ-3AK{xL!S z)j5N7!)>DZFKYKVMK(?Uwbh62H#ZhJehd%WZ76^|&i^(eM}Px>tD$nB|2@(VrG{-^H6Ia)g&e9u|$}lDHpz>?tv@=|AH%bkYOu+1QM+>_Y~+chtPp;(QKVl(`B1d z!&<0$n>K9jHi#udKZ*ey+8HfbmT{iH^DIq48|X9+WMQ|~sS5OP$4x+{;kwW@8BkCZ zN9DRA9VHq`!dbIMk7@0{EZaWy^czIRqpk}L2)HPUK_-`(U@EbkKnA*xP^J83ut4(V znRSK6LRRIUo?}Hn1gE{OmX4#Q6e7rZ4|PWre}OP$;To)G5Mvp!=}sq-A2b>`C*VLx z_NxESjMKEC=A5UCnx2;Z&D`F!2_bZz0QFzv&# zLr4>IiSU-Je*PBgW&h7)z4#XuRpfBE8nZyDK$sB|oa$?|EjlItzhufv;sHh%njo?- z-slR5DEhanNG^n*|3>0}rAnnf&;LsrPqm_S3A_L4>$-B)$^S2a%s3_qeWMgtZ1&EeN&0_UN1`{h!X?L-#* zz4UYNPAVEwvwO-VsmWB`CM7YCr@e}eu0f5w++vdLAZV0&{VgX2m0KG?ME(YKw51fs zKWQ@)VUKh?bU6>0Zb)k~fpZu2!1P-F73s@A>Ed?Nyw>n8Ns28kSVfK(Zmao%V`DHM zmaZ`Xn0(g~vU><)6A*^Dh`J$%k0Z>vt_yno0`@=rANGLw->mc|(BIYuW5(vp6f~0n zmizvhN!Uuqu-vC9@!ZNsh2)LYn@W(mKtgY!7InrGQk5whysZ@6n$Z^wgm0RZ7>;D58%Xl!?RP`vSTj6c7sUl1^|NAqS7N(QB* zs~6PV1rYgc-is4zW z;NRf|8?-^dETdAf$Wc#6A)-7X-)`_T>{fHU0Qt8r4j+w><*5O+b9;t55uUCch3%kv0e-u8@JcSE| z#8G5U9i6f9$*&Fst#cb8b%f3ji!!-d`4+K0PX7E&Qa>f&bR0e7ny&ktzq`AONcQo* z8vh;?w?MZLFbkRBnLQic2pAV~^`X@Xj*yQL^`%YLy`(XYwsYTiK`QpX^)-G8_EQRV zn7ZlacVMzkG&5p#1Z_epn^h##XvXsc3%Yf2|1pH+{Jf0ysvQ{n%25;RDlvm~4G|mL z`Z6rZ19cXrb$>VofBx!=M&1Qtv8JWLKravpGQ7=7T-M5aVmemw&1|&ke~Q4P%&i-C z#L;|tHXs-}#xSdJ$udyiG)9`!z!;IaowvxMcf+6IoF?zAQFdF${*W*FdiQInKx*~kq9(2GVX_HDf3B6|zZdS%`C z0e8Q>9*nO^OS97;OAFFLm`aYxHkYeLBQ0YB_ zt>?`jnQ3}<`^S7A^Ps3~rr`HdfbN)dh?c7ToA+cwe{tBwpxL#h-sb3py~cCUOP2SI zD1g9xl={*AVWlePp{J6I)iyk1!NmSY`w}8IQy~KoI5v8{%)=^Sac$}-}nI_#!qnW^I^?h}rHt*?QSy)*W3$H$d^pVB_SA?2JzJ!IxqG|D;rD=LsF2;XLLx+UY-wAUF- zv+61R3s8@kYd-Ydo+#*I@Du`zMqjjGtcsROZOt6+n)aS1M$?m9`K|^iUWbZ5js0vQ zb^S_IDes5ds1PPAM{JbRklu{=#Cs*+GGQ9mfTH5W)M`g`-rQU@CmK* zXWWg5FP9f7=P15o`w=&h`7#f9L6RJ`U1nQ=CCDG7e6-3@>aw|4j!sDxj5>Ri6!nn2 zL*ukEOR5&FLmO!a5PEzZC|uVUPCU&|UQizdx6_^^ZtT*p`r)RGvyQpYNhXK?VAd=#}$u#a4h(<3$}__ixs`bpZzDfcUDiOZ)+0Es1ORIor&DD8G6pfnz_Ix zq`Q5G*K7N4hpEh(D169n>9Ov*w$ieC=$Ac@ED;t1HWZ^Z!@Wmb^3+#HJ6-tjeDrV$ zUv=F+u3?iMxcKef@j1h?Z>QUCuevTu(8kKExsGM$k=(s@sMzqrwGOiV2yw6*`-_== zW}!lz@`U3y_LcM8S56<^Ftuc(9)Du`9$9h~fM9m}HMh4|s1g;!j>21k$2IF(lvjeK zVgrC6uURNm(l&n^!t)X@lc?$=^NoicfP?>yg`RZJRl7(xIoF5l@TptK5Us-Ie zHDBQCPK}3P98i1*)jkLHlndOfu9%M*rlr|9hqL*@EF-6`>5MHHGbXR93_t~k59)+E z!f;wE(BNeFdhA~Ftbg^zh1`i|GbMFKLOW3$`7k(`xDrh&bxF@NI}YBGqRxh4daHDMg5v;FJ?&X7Bmc-7@eTO|d7@zh zAh`ak75Px+hqfVq9hrPNVL5+44F3DZ*b&8N{hm8hmS&Fu%1wo>m3}}Mq3qT9`mJfi z)dF@PbjKIo&>Y?) z>rD1_`ICq3keiTbFTIsYf?NJg=XMSchC|=)^RM;?#V27Y#ZKz01LNMjn3qoPy#kG8 zAFQV*bQy@bykpr8FThaoKKC5mjAQeW3hTXAJ!e;7*a>@ymYjP!Tc%$|xlr_4TuO|M zDQagPs>f7HwGlj$z*9 zqCE&a?C74?b;23S+)1!sVeTxs`AHj&ipavvUL|IeHgIpul-#$kTq2xZz)KdoPzzR+ zCBjyR-gO_rwS4~l2j|?bho~AMC$j)C{7~CZlxT< zbW!x@VRsKpr+WeAoycI4H?i^PTUmJeEQa$&L8+{hXGN;DOn@#P$A*}&3e%E>W+--r z348jb?+If{t);(cm0rOdmSaWNKD(+H`i0~YFURWsvGBno$I<}>)tc4!@h5i zKj19!xIJBVsjc)889ieSROv9e(b71T)g|tIukSD!2{mM#y7A19dEj+QMaqb@y3uPS zt^7zc$if-&kdMak6W4f5dcHEqUeMI7WkhBNW>=fGLvju6zW0$AcL|*qU%z+b>MKPg zZ{H$;q~hJIf!%+ov;BlyDnZnt!Im9)7HW3AR+cpo&K#XhH z_soQcwHY+XG$W)H(kg^7O!gf|E`DhwAX{7Ku!m4A1lS(J8H+vOoN5nnTXz_?NG+gM zlB+)kytzL&4(qK+f6>Y%(=>>z76z*AGO~T+*x`}s`hDZ&u*t4nXF}2bzVYE@n-NKV z7(>dN7ZM{(PP-zAnBusV(bbo|fLYhtkf#&Q{lof9Hd7$xXnq4PpO2q|Ue$0iOqfpd zMHB#S&@b9k-)?rg?$zqkaE|?CgY_pA#LD1tJ_2OXoMu?C#P4n&;9jhuNQfj~1fnAG zlJ<_i2J!*IWsXE!;8XE#nGe)=qUuiGcfW!(Kq*~WULD_lB;%dTN4X^iYevWZcH0<1 z3nXx|`C1x@_r`uNK_OZFhv%Jj6zR0)QU9rCX7gN)+xN?DpO90ezO)W?UT8kPpdO94 zoe*d1DjdSy7v?y)K;{^@KfJOSdrz6)4eQd1cMpZ~aBhvIsid&lXLA{(`7z4#M#Z=f;Wo4j@ zYwzeTOmVtTN}S&~n0dp4hLRKiU(*b1D<$$;${u$%FRYlC0XSH;knEr(ISCV zP&4}|v^-TeMu)^=KuNduS|**vgPlpd06oqgB;g#V0-KBP)In!b znUng@4j`12qk+}TLf>Xz5oqENZe9JQ`luLBu#DOAJ$r59ccenb5bnj6C>|0SeI^zr zmag|;XVbHFY#ZaKH1dwtDIHsH7ST7S!||<41_IWT%++@e7No})n8ZR#CeUI_+Z0Np zs|W&+GR^8N$Lmw?|?~dNPZ6j`S zny@q^FoPp4|9gt2)4E8N003MCu8Oj2bV)DO;Z*5m$|nv?tcyS2-{OAl!R*z=F6j|U z2R$##IB6vKY+BJgBmcl-o2+H&LSno;>~*)kc6>{68AJ@lhJcGPNzBj>N?@-%vQBni3p zF{u^m${Ff>X(m&_1JQ+K^MXkV5C0=WEyFvNz&-Aal6s4CmGEpr9*2TU^)Fk zaZf0ZXxTosaAuDG+*5y9EiFEJ+vUN(rL_O|lWelKA9lG|a59v;0x0jj?(1-v>wZE%@P9qbUIG)VU)?(KPII6OW&y#VwbG+X7L^~N&o@1@<`A*3Rivt zW5nYp<`Jx;nB+a}(@~lO8OmA&Coot;Q_eY9=8@tno?3+P09jnq1mtoaa8Nt~TTMRu8aqTcw8NRYK7 z1rIzjkp*^nK~x(`y0DGApYtgJJpx3vLYcaH&jb&XY;qkp(NNd%$9q2VX^D0S|J~WI zM4IhFyL=Z52bWyD_#Xxv>QPKpGNgvD7W;LK-4o)Amh5SnPW(QUQ+B1o2@;SO+Yagr zcWB}XCrI#Tu>^&P*~yx{Qz)o=a9=+o*TsrYMU{+UHdDqK#--o*?0kKDW3?>9HzPLx zrbecE_G^eSnv!B54Nv<9Xy%&-vBqncfybpH>9V^TlksaCGFB{>2)8T?8Y4-vIC+!{ zhpucB441|uYYRX|r!haC)p=OM@9o1BEt>@#CUXu`J0r+knoW6}??3I3&2#guSHz|z zEwQ+9vc6xWNr9RPw6@*TOY3)4w+S|S?hRZ}&6vu+aiP&=jDL}vrhl0>b2s{ovrth# z`@M1s^lYd_t1s@h9wF9p75!L2Swe2-Y_=) z=GJraH9S5+d8!V9H>VG%9Un^wxp2MkyaN@5t^gYWN-_FsR$Ii+4i*axl*!oOoC~bO z?RcEX>eJ4Nrzyn`*<;UR&1A32q9ywlLGTo3S9%O^=LMU><5@cf#y#qtG{4ueWGN2R ziqUapT86F2`v`d=%qi)Os(qzNJPnkLF?E1yl;t&5?x!TcVDBzc=vD@O!LI7wVQ#bQ zu!gjN^q>pDWq9#^iw*(>51=D`H(E%R1&P5EKjFwcV6muf%Z@G%;+T# zG~UzsJ!cchcF}pXvu=%=)DYeFP!~q(8|?BpuYNs=?Z3Ps6^qodIi8p~G2WB)(q{WJ z^$bMweoRTbWl_DiU^#1jD1>ptoxjBNb2I~-IBHfKCM<1a#9G+W?{6B|Iq62cuyj&T z8jAU3J`15O+q(vG141s3du~%J>z?%iQ}wD|Tz3&a>(N$*Gw-0APLeNfunaZRpT8$k znC)1IXH)on2Xn3~aa#T}3~>GG8+H*|{kX#J_5Swjf*gy695K~yDnyVDDS%m15Z8XH zq{_~2u_vpzk{*ZZ)H}C0O}@UCsX_8S)rgZ76Iu=l6;86TyB)F|p|9_#3RaRCJfV(_ zlOCzB@17&(wb-#0=gg8v< zf8De%eoVSAd@TNk@J13Ez+Tj4d0NGgzeQz-F9bbb@{K>6wA``)Qm8^0ekqe{9_jTv zcb*A1aYE9{Cps9pE$8$pHv0NYiD|#|D2t))ZbE#S(Gu*SemRA{JGpPk!evbk9;H+2 zb$$abmQ&8fb5BYoWc7GITLn-F%{3vI<77rvB{grB`tSV1uj`N96xJZI=^3)i33+cF zioX=xl$t0sqNnB68KTkWH!=BHDn+!)`CLy*{q~QiY+e|q*b^>Z9v|iA`%Y}3ehK?X zZ4F)@Lj&NiTQ;WCbx)D+vo80jG1t{KX1xsbC5OVt3Y_lN)+g;+xQ)X3X+Cn~b{RO$ zgYYDGv!^Xz;MzmezoGZ$yPo(3v6jXh27F&E@!V}tS>E3P8+gVv98@G`Q*%CDO|Yc>A7n2qkJ+oFBW zxj}KUbUBbYr!;%8eB=syH8h5`H<9AFfoScCvWdE!dH8S@vA#_&PXHK#sLp1`wY;w@Y>G%k8S+qpbSHv8Z zG->8))S3J&5&x0?f&zGIc)1$3^7`QJ@?;$RMg=9OkQ^wZZ(e=>1gz&`q_Ww8y^gtk6Hjhv|Z z2edjk-e7`qHH9tT`wU(>e%<|9I~^F5EnVS+sTfMzcH0+~0-IQ-PnT?n)k@#roeXcp zL4uAzZ?{M;9e2H-M0PHE@jr4|UdOU!xQ2~82(cl+iSard!`c~SyH+YpM_b`sOY^-M zvtw!7%k<+L_UGS1(89R?Eb01M>|dtER@1XO+BZ<0dz^M5AE9G31rOfL@Ff=TCrx|sMFw5V*OCJyC%M~w&%;!C{Qpxy3c$vx7j;`BbR?md&A+hDvT0r~uC|*u# zt)4|^5E$eGhl0$CbBY;)3Eds@IB3IJyjVr^<7o!3zbL(?WQ?8Hatuj|`WwesaHEy_ zAy>|sDy7@e&7oG2q!Vvk6x6_N6v+Txpl-?^Scb_LoL^H(j3R6cXoEVt04T#DtvSTg z0po89T4CYZS=DEOy6A0!lDPZ+Td6Q+jBo-ZjvB0yDZ`Q8eb_^}`t3@Kv@qIw{E6Vm zFNoG>@~=1*iwGIwwsO@Q1K@}&$bPsFSS*&1OFIEfM zQyGxto{BWTt41TTXeSD@YpBKI|MY0=iTlA&hOAo9ywV`Vt~oz{e>6+A+Q*ePoU^#u zIh=}YxmS}Mz|GQUacMbLHuna&hRDB+fwCO5RE ztF%sqdu)Q1_v`>=<=){K%6c;biDNFhoF#IA}4Iswvl$ybD?uA~V=3bc^TOJ^B8HDq``zxh?@y zRtmst8gXIkAIsm3hPlsSIm%(v9?&TE2IxnHh$#KmS9`3p+P~rpmH}XMe(C^pUT6U# zc<|2S4`bPO5-IMSN5xtTL)kwqZeb2sBpM_^KG`h4xUYovXDd5$5&ow+&Hd2^*LKzH zm~_M(2QRUHHW0GVV~4trrPCx`Q~prpd%G-2jGI~sX zXVldfO$W(Sd<8yy>BnASt(}d()g`orkF}+)G&Ky#35lJ|XPKdl>t`!6N>C`fhUc6m zo5vY6rOD9(()ykD^;~t`FrHz1NOlY##MCio*A>341tId2rfJ{Jq;J|qrem zqNhOAe|Q*CL#TgQ_Imp~T=k9=H{ zW~@!Eg6|=OYT+Jl53&j}EMsq)QW^JY1yVAZ1+g4dw=#P!mNJy5mrZ`p&{;;4JE*>a z+(wzG-S`zLwprb6@g&?t6|(DzhAeNmO0yRRa^Vu#{H=5$W@n<%Y_UZWCJ+o@hi*5T z5HZBHHcP@xIX{pn_x?PZnm|2@K+#CJgJ;3Ci?n)e&7UV{aNGQ+N# zp?>+$xN#dH?d%U*)~had+6tWg%L8YOolF<>j3tX#(DnjKW!_I{I%NE2VN90(oGXs_ z3A^FS!7TTTcaNcFVI-jh17rmDRQU%}ZJC|;%fUgLPPfOU9Oa+K*m0cx{u()53n_yd zGE()yv7^~M)ZXZZ|K^z2*j^r%r+ScwdUK|y)$NuWhMie|yU2I#2{?KE3MyXwgAqx^ zAFXGXtO+Lhc3W@2kT|CmmDk6F9+%=@9Nx`>6OWCQe{d@AcYgmbCjK8BgPZ6dZ~f-j zCM18H%lS8hefa*>D|XdzXz<$7vB~+;`>eK|X}aj8oY|H<3?QovO*<^XyB2d%H{ouh z$$F84$Gt8A83t(Q>Rv;J~XGv$nX7#Kpxe@g698+-Y zYTirZW8{Xx%Qo#WfQ!k^c*1*S#m(NU-(I>T2FA=821*0>(kt_kU9YEmJVyN+b#CPO>SN7YsQjPHLK*bT2a)ngl0b9O=Kvc7MH{D1LMKJ#_MZ zbL=P%Pc;Uo(mPIi;cBtbw&ZK|d~I?%uQ&x=d7CTf!riA}6i!^ybgz?Mx=m;3Ocer5 zgP$~K_NE6#{?!tV#dUKi4Nmi$N&BxF=b3C*(-Wk%(44N1sv;zZfkTK-ELEo)FT z&Q%aJT$v=7@wZyak2@EghLNR)y$XWdS5JuvLJL+Ps%3m*4DCT?2}I*%Jq zRGOMGw4NWOUfmz95cI(;syBNwon=Czr8RLmB!ncEH%H>oxXpQw%qsU-9U3Q|@(YV@ z;`JMA>o+uZc1lt0LzO}{pZksTg|W8&!FhJw;QfDT+iisC657B+{q*+dT70%S+mjsa z&$y>)yfN{3c`^`=&(ClsyaB2!;O$%7fs76;&)sP-v+a8g3iBJ!y$HzEC(}mVUUb6oL6W562*Q=)qfMb%0zOaLtwE0xuTq+%J?u8kJMj;#F}Db`P&IPLm{&|pI2 zPQ{9g1y`pX}|6@MgW>4NY4un$4Mk6$Yf4!u>oe(S!f6Fsi>f|M|k zknr-JZhGO#kYEM9wXAudgQHd`%RbXL}AC_d71 z8#o({@Cmod2e(#jJYT&)F9w6%J%HnOuoX9a-=P1}X0Lfap^%U|O$#wU-gsUhe%_a^ zH%|urYCp>}podj@5{|5o081;}L&Q=FIfyK!fI;r-rbDYa$0|#$ul#~lxoOvLG*4ef zE9|<*`pQMZNF# zEJH-Mcvf-o{R%O$;z=*%sD53sMF^Ur50}F>q(UU95x#^dE5Hd+_c8ul4D<=#hk)N! zX5>YAs^sv%iP5j71{e7s4P8u)RTzMTt7&gx{tLH&jI0qhQQ5pj=0SabSx7I2<}I%r z5D#nKDtADGZRlV_E(od#R5=)ti_yK{e4zNpuuD?Ok-}) zcUb7QuZ8CcM~}ZxR!A63-&7vj($(nj4y-`In|>5N!4z&Zaxi)AvGdE4cAh2p%PI*7 z734QXqZPqhx2Do(x|H8!YYGji4a{>TzGCPi@%0vkP5y+>IJI}NB2IgMtOXXYap^_v z88}W>Wb3`?;iq+iV~6ZbShr&9DQ9|n&=jul_ONQOV8O$)gl^2=hiATI!v0c{;rPht zg}Vjy{r(JPq4UNct$FNk*>gtT6*C(SXqn7 zM&tT9Z_lGslFBg{;?lOdh%LrKCWG+xrbkaND=$W5sG=9p#pQ!8e!<;2Q~}?=lmZeg zA^roWUjDm8k-rU5gdi!3eOXly{+O>x9P;;A8H0BP-!{7KBlvzUQQOiDnmxLIx;N0|%PkaEdm_&8L5 ze+`~4au*)B$^3nAsH5yQH7oIjO4%&q1tny0tRZ&6D{eZ~ZYV#{G1At%N=Yfeu$%i^ zlg-0PyD1%^BI*Xw11mAGyJ?6#SnSN=*b7}A#pJ%=?i!#8SIw{9UovTT>#=l|&)9>p zv`fk!p11KmSKh6US+l$KLrLUylb#h$&em0W9wn%oCv5F|upiq)R^8`6oT1VQa=bQ` zwMr`-`c;YUJ-GAKo=5%Uu~pkQ>Fl4o8pXv#&_<@hshkyO5DmrNUM=({zTc!32N&S-Fo%~V_Il_K%kb=}r2O2m1m~a3 z=0=x8D@<;Cn%3aK@>p?HidbJTrGv>wALTmy|cO_lsbZjhhpn4A27WVUxd3cCR@Owqvl>TdtyJ~ zQa;v(&8s9H={%)+{UPTxoECA9#_$|^Hp%JBZbi~fM|+dQ1Nup8wt}AS zYzIg45i~a=Zu*K&Wi4&k% z5(;{nHk7EC=gaJQRY_5FaX&ISJSrPssPyULH!KE}@JegZ0;!SHidMWUdNHl|hZ@Du z*cB@WAr%&f2?}c~`GU~f^;M_SY5J<=L^zF!U_2X7DAe~4G#c?sBeD*EHi4D;(ZW(G zPYqUg=)j&N4xL1ni%ymefw_^Ms<8qk?1Ca@s~&=1@Fk$U+Q*7u!q3pKyG^boG#8^z zY$Z4cF{epnS0IGi@WXs9xt11z|_Uo z#H2J?ujb+}JPKUcZQHHKC}>m$_Up2bV7A0K^sFAnNxjM;;*GeZ-9ZYD!BMh& z8>^6e@Qj&iBoMJxJ1HMbRek{o@nzSUq->$9mBY z2$CELRnQV-<<8PIPmYA_q8GlvT`Y|ZVqTtD66gEk_&0*4hi3HDgh`JCCnM{5dD=;5 zr0txljGfcS8Yj)s)EhKrG;T>xTsKR)NBj?t`CpNs4@N(J3aD&~ik&|pg)K(ZeJg;oQ%exF33JUIB-MEkY8CB1}x5A*)wN6Vj}pC!}5D{IMG3A->$Q0)8#hOu>10 zn8fIT+2O90^%rB8v-4u#A{+K1$%}T|O(5%`hf>lw@22_nzHe-W=Fsde$Hc=N1NAK# z2vrMDs`5i99r?)d@N5l=b3XNYqCnfaO|J%r&6r#}7uCX*rA&Yq@_T03c$Dcw>S_<( zKu1wMD5+gpfZq#N;v1;c$ZCY{H&``7WtAj(UbrvY$k$G?CC6gcslQeE_g)UnTD$lnhg=y(GU-gR z_?EphsT7LO`y1aNNP7w@;rgh9lr6s^o2h0+ZriW#>Wh811r z9cjR?nxJoG)|iXKAi;6*Y@OGC%_j;Ep~zXPW@YxBt@GNE?nHR?Nw^(@~hRshm0EL^~<8)sf3)x$(D^LU1Sv8rOwmBG-(fe!for4_zWV3g92pq_P| zDTe;j)uwWGk7uj>UhQnTR%GFsOa;vtz7`=i#`n2{@M^B}voi>f8F97;GM@3qI1~dl5v&YCF*|JRAu^pTRJort0H{qOi=Qj|5|Jyn*aa^uxvuMwBkg z8Cz~vgx#>grk&tGsFG&bx0oJ}VZAtJKGEFjPQnJX5eb6E-)P!(*_9K>GL_kH((W5T z%A7M#}u9z7m;8o;M znMYMTh0Z7l8@!;XmLtlW=2}%{&seL;U{Vg{Ocfzt9Cx1|*1xQ%;(O837;ehEPAfPz zMwQ27U8h?QUu8cBS9?=Fv)vLnJ~;TP9a@Y7_u8M;IJRZ*i>tA+ZDj!{(U2CJAb-H+-#-BJwTdtD#w!9=W1KZt zWkcsnPy`jzv?}GDBduDP)@PJ+r76LVF-sfsES{BLR*_#-OM8Y?4~wwE4_Y@Jeot~_ z3H%H6*W8?C%$mPSQ=P41{ybZqi=->^CQO9v9hPBvFHPj>GYnOc1EYl%4roev9r8wQ z&co8iP2Pruf?qlGwQ=FOF078G5QAR}2hKa;%E>!fbo(&}#?>J`0Z;RLfm?WL^#9~K z_)gg6Yv6Rj58uQ03DEKZP*-fHIp<|5K_E0x_y2=)`d5^O!!-Ycvsh~cC?d?H|AX`T zHT!t$H>WRpr0$OYi^E=g|LT_jN~}thy{EcG)db(N3w8_~eknnN2O!xO3zeH20}yxN zhakAXcUx3K9|k{LggLNA&EmPSr%Mp$KU7mO7_d${^hR%>%JFr?f zwp&-fz_9pNobON0h&SE`kw%h5uqaOBYITy7{vf-@SI*#S36j&~lrOGeXcC-+?{Jg- zy_a7XaHI!gTj#UHuy2uyK=)w)kVK)xw*e6F2EkWZ9(nVJXun3N3&FKaY zC&@R!C2)6n*qu2U3Bz8HfGAm|mcMf!EDh!0huFc+vQSXZks&J|}W-BNMtc-WB@2`rjD=z^v($&i3wnOEdGvtxO}~FQ#|z^b28Zg=6TS-IVeMKV-F%x1R>i^$T+BT zYy)tK=&Q;~o@qLqrbLvB{Ywn3&t*XD42xtShYyktmbXxlDGtIZ5C~zdRJ4&VZ>PZL z?|7QCXfdy)9ani6nLJ2c9a=@n5d~N}brt489(A$|iU}k2VYgsqXt&y3>Ha<&*IS0& zgEdqbbLe4s>+nWBICn8tU{QJ6!mi2!{jl&vgWXk!Pfv`CVRzFNlcL*Y5v#z*#3IGP z*r=AE;n6c89#1gQVjnN+4(m z`VB7-@Damq@V9xnrUPiq3==Rl&GAm0b{{A>=E~C@?l{)t>NJ1TYNLK-lUyl9tF2h# z)u~>HRO6lQ&xPFqF>bWbmcWo{izpfvs0>hmSsZ~AWsCzI72?^S$Ys*^4Ld?ktMhmMp60P-Q_@Nv)e<`u}~TrB-YSWvft^| z+^Y%BrpMqPU@83kiB}jZ(FPWC%r8=o6C~f)R$G&L-t(3hP3YWC&U*9PSpi322Fs| zu7Q&-9zO<0u^0kS_ePV{rO;$Znw-?DcIYuZ?c_+ZoG#Btf>+~#z>nKL;(T8m|Hegk zffbd)U!{|l98F}D1r_HbX$lnWdPH(Z~l4UlRfGhAB#-5gp;K{LUMKGL$b#k<~6^&O`z z*H*&_CIl-zMx+eTS(&4z2ujg=Yl@#Y6UmK-p~me`5x?khfxRFD+Urr#1Q!UafajUavbe@`;tYlYRRe*i}&X5N(aL zyV*V$qAx9%Psq*I2i(9#co-(I3oTaS(zif2aR?zIi;y>k9xje!-k4-p=n@jG;3g#A zNBMJ2$S)+y#9=~5|95fb6hxFP>udyq*U07E5XvH3M&y)X1rz|+_3}uc0&9C?(_}=~ zccVP`$Pml^ifOF!&b*=?VRL!X1vqh~2YucUbYeci`tfeh9Xru~)842&QfaLMY;kRB zH|@K?6o=Id;)Yfwb^@M2B@>4_gl7f(x+a4zpFtp z`dad&qS*@HYf+k_=`fX}Mk0d+^vfb|P8qEjyvTW3H4g-pdLkyhX|D!YBlluhxJ4%E z6<|C3p2Tm5;B7rlhG7yU?z!s}2XsdSD4%#Srdq6GEu_LU@C0LbQ}*|Nj*}hMPckWU z=^$lpUeRTGoaVIjKpl(xnh+tc44g0{^9ceFgr8(Jm3qJZf=U38@FFUUd&49@EigvW zD<*^mnHvT+#A{apWy<|~J%|#LX#|IcE8AuE>Ibdjvlj;%;QNDvs%E}u?XL!URL z@^Ua?l{DjK`4l$2JL2#u^u1obBGFI~$a$e{tO4YX-dFgY(u?xVW7J;VKmR#qOkua~ z=@sFECnqv=t*NcQIgSHf?apY~|Kv?(DS6DSL|tWyV4BrXV}kD$X{& zL|_8REIF@kABOY*aYjIo8LPh46${v&eozs`b6MZyKz}cu)o7GH&$WQ=%DphPZyRHA=%*yhvZL8|a zKR86|xZnEC@n$!>mH~v7-yHVh`&Ylv+5Vu2dVP2+tpk}`#lDZMbvvhk8r!V?-yhwN zA8taros7UYj!o;2&fN;(rsF_V5Bl$E)=@2U2dCj|$Bqv+9Hc=8@iV$yu-{4JYfq0QfiWHj%b2=n_FZ;az%By(v5WDs;_ZSpY%EVOww= zG^$JSNXJ>LH#pxn$JDkzk9Z~t_>E4&S|;(nK};T)auV4jC-NyJHj>=&w--y_i9!#T zBnqH+w7B8E-9I=2_W0nKLzJY|$RuecXajKK;>2e~+!nxIXUU8GWQ z;GpV1vFa{bGk4MT^~rkgh4aDTY&)%QI-S2-J7MJtM)QN-^QNhyF9uHKrF{5044N+V z#lT_4i{36oq`9>Jey()0UCoYBjf712@8%d#4@i{YZ#a_L?5NkOUkO9k>@*@E6M-(! z>>w6E04mNrG&}zH2HF5teuC$9I5RyW&O2LMx9gcWXESAs%BeDz`=4oRf7 z92Z`;i@%qLCI0>OQi-SFKhSL#nm?d{D=2}a7GkBpLe_iuLdDHY74Xlck0IzdJ0VEJ zCRu305SZ8U?l5ys=*YcD0#xLS1dqs152f+*w`o11X%i^3+4d>#FFHrfn0KVkDnCfbkn(IMQo9g4YBCR+ zGB&X>01+HQIJjkWyv$;PgEkV^BZZt8vp<)?Uz$aoiZ$@OXTvfsfe({&=s{3Y?(lV- zXcDZ-;F_N7ykP4(wsSk7S-O2;Vqe&yTkrUJVuIs6V>|=&1yIw*X)2cw%s17#sJ8^_U%z7jL|R4C>UddkeV`^>aIp-+ckC z2MBZBwgl)OK@>r6xh`j+U$lEV!LbvXFbu|dQpv`T62>{&l*&oX9`M_vS3+cpUdu}0 z1$W0}qTfyXW=8l60}J>UkG2n|6S4;8^L5t@NfOKy*3zS5M*UG~op@p*HyN<!MuVivIfiKnPi64DIWQUZMkUH2KvgA?)WS{0%R zK6eiKJWAaeAbLD}|AL z1T!s1#cqSh>%?5I&2fBHss~dy?|~c_`Vpj2T9W&B&`h7#i0v|bK_s`geIvIOUa--1qtyr3Se{LS0{(kb<-Q~^U8(B z#NJ@xNauXt9DU=W%@@PLUj8VZHD_opgM6?5>tInb=;sHCv*1bUrV1FPhBZri0!ZVc zRSPRQMP-YUL)FzS$3IqTecMMM?zhfLglZEY4e#4DPHbo zvyvl5lBNntNC8>hP&O0gWyOTbNkVoA-? zh#%U+>do!x!`X~QD*XL!dl3kMWz-8x#!f(cQn9hPr9&B;V%yBi@a%QBTs5VVenQ!v z36jhe-HwP>5@ji3X3Iry!6^^6@@3Hkcb}rw3f!$YIjGZU6 zdKrqD{0X0OD)4RxJ^H>^LSfBp32!e|9u(8lNjv0Uaz>@BHigwxDfl2nWV$zugZ`a% z#ymm0AOmznH|zw>aXSVvt8{=MF)o#_`Y;qlzdG##sl)QIvRU?k@?pxLl__5(a%_dA z81sqMiHs=!sIUV3?F*osYPt?D(|`-xc@Tyv>mZRtb;&fXlCH^E$Ts)j@C}ciZ0Dp1 zY#9q{%LOD1@Si!FD}rzeL*09{hPBJ z3zKv!)Cujdgv*tjS2^=;6-H;jvicp>x8Hwp^0%ze>i8EU5{N(gz>e9)s$Q=O%fSge z#9mk&{9hc$L+phG+yB7{JVdDHy8p>>Jj8tKH%EYoSai?+7sD%o{_K^{;Ug3uK_vFt ziNqw_wQeO)Q97C!Jcp)v4)~jHJGNds-n>a54`dzqUUjoFD#dpkcBt1Atg!3f>;}k$ z($HR(zgOOZb&SMbSxnhs43c(?#N-gf<Ghlq(6&Ak$%AqP76m<$HeLBiA|$)oQ<7fqm(v_nC9 zzyO3faIgb^(VE|jrW<3`@axAayE%9#Xniy2_*GzF5GTf(7`9$zic%(1c(CzgHe*qCFlA7BH>B1P62YP77eeC2p>0T-nmK3(*tt0LQjOl}rCzjf5--ls8g^QO zTsL7#+#OE_r7Y>KCBFX*9~gVS7a>1s(Z#;>Dre#7W05hx&ui5pF7UeiaDERKu!pxd@neXoas1IEaSzmg~{i zT|Tj?XKBrQe-xDaPHpEo4u`rqG>@vuxOZMD48X+RE4RP`FtPWdTn^#Q4lP?QccB;0 zAGy$Vp4N*t_QDfB9!~e-xY0sPM62G*jfz$)khgA4rPE#-gDrbgWLUSHIc2$G3LD6SM;+CWnBDhhDV)Q?B*!7%DvD=}{J( z?n4WT&~3Zrm1kJ6zm#Kw3d`!bRKDuRQh4ovi4Z&aEVjkiUM13$d26qnmdMSSjJ-9V z=yr@)-j*ngPT5HdnnK@8#kIX>Ot2)75kDf7r?9qw8QkJfF6 zb);a}8%6P(QXDwqJyKL~0z5rPd!u@yhx3Mg;P*?Yi5KbF;pEVV#mhvbi_jI^@V5HZCly0Izl|`*hHQVh}doa zmmqmM(rv@s?!R-3&0n`8n5Jv;2W;Nn9zTy0nKJ+ryPa%=$Kim9-A({?_0YuBPDc{h zo<|r%R2(p|cW!k#U}Coun9PPDjI$#|)OQ}n^`$K!2TTNq(37%hOG<)Re}|Txb;Lx7 zcmgJNJC)?flG6D?e;VvIuoCg#8q@i2!PfQUIW0!$3?_P-Z; zFY&qr#Q_sT)C8D#=&6~1xuAp>?tqCM$2~>>CU!f>XgNzECLUTg+YuAH9S%o$tWg|I zi6LxiCm9oy9As|rfw@9)b{s&-kPdHnsKawdcHUs6;TcVtddE!cc1DF-U{c`K?a&Gp z^%oN~F_#>*A{H3jY@SGokq*$rjtda|%Xieeotj{te`}E`%kH3wSXMBg+;EP`b}!l1 z6=45x(&n|KvDEB7%qgZ;oRmhHd=^$1xJ~t)HC4NOZsHUmS;W``Itq zNABwt`Pg;eQNRUGCvIYL0OxXkLbYC5XWbi>mDthjc|XB!c_nu5 zcvd9!q47%WK6GA@)CV`q>K;zLkrcl_IhNthcevVuc9gJ-V+YtSlCDM4!cDw5z)iep z%~#MW=6i88A3<}A;-=rv-*A+~Gd5jCXn$}LH!(S^7Jbpo<{RBF{EKA3`AM=;2%L1~ z7YxmyNFpXCsmrKfuo}7C_@Fhv7tOHTW^aA0vYUfKj$a)pqb0n=B(>Z`I$B~f zmm*6k}#(QmiSXCFf=K22?8xKIgjFG+@Nsa5X4!~BMvQs;M_4j z3SLmTa$=JpnCF^S*>z6W@o8T=#G|&Z4d?(9KE6=p)A?^WU}CB(8Xs?^;}&>75;4(x8akB&k-CaQl~`dI%y#K29*=e~ z2A_?DYdG`8JV!iH9ZZZLsN89}v|&{(Y;S{tb-_x()I1|KvM!ubdT3Lhi0i6p(c9lk+6w}!*Vu)P4uYJVH4pJ z5hPKSK-?*E*hDz(SYU)r>~@C@=s^yf=#IVsvpmvu+{A9z;?O7uPION#ffGF@a^OVw z{2e&4+Z_pf(}5GS>qJh>p&>3J2CpYhB3#l=T!MH)D-6hqhz^7X*~aDc3OLb&1qV*- zcCs5_LJpkhezXH8b~_`Dv9?nia=H^Z5zz&mD~KUzBHh5|UbOp2!ExY3k5F96=1;OD zKsG5fRWzHxiPi)Gb{(3#i?->zh;c%%Cxu zg-{rJLY{rvKbP8c7xzP0EaE15gzIJ-Qaa}aIsvgH4i<+>;i`iwfi5yE?6{|J1f1yc zt`H@H6o^&QJd74^S5E*H6?s?L_XwC(Io@07aA>~LZcX?)j$)?*S3o1D3n4T$n`eOf z=2=PiKP{?i@>nt5io*gn5tBFWC(065I8(s5ukd~)Y$6gk1hE}T=q$oUP~A#u6E+bc zX&J%!zB#Z7Nh(@&+VOQRj&fm*+ca`mFIupP7l$&Hw8U6(a(d>;p^V-1!WVK_?C~xb zBF9Wjj(;F%dTB;CO_x+ia1>Yvt)&!n1lqx2xR5lm#z{M7A~?@TavgN47*<=XIZ(S1R?UItb-6~n8W|pJS0q< ztGVk5_rLW4w{j6Sh8-kMpG%8l2YMp>iaaE75t~RL9iPxe_KI#?rWO8#$aAPamxP?e z#U1*B`?j3R$)+tOD(^u`!>K_@I8s2Yg1{{JlJKayfQfI{6bXFS!ai zF=xF+9JP3&Kp6(eiNim_xmW^1bm&BAM6`;~iK!vws^{RTBE#p%G3mVk0w&xcvkLvK zrQTSj5spw=!N3rDx%I|+>W5~TTY!l;;Dt0YK^=@ zMK`)k1C`a>k5DkV>pi!d3M$AL3P(*moFR`y9oa}rgvTt**l?GXL$MwuMP%V( zf+B)7?1|a0CyEgGWlU#rP*phUdWe{ep)6!D{VUUZSh2zzFe@yNp2IF+d|i&}lDkYJ#~ zVIT$(+OJUpbYfqs2$p+1Hqb>oHd_Oq(1}UR0Hm*C76A!H%=Ey~%l*iB_cx4I+gNTJlbK+^8xu(J&K_`MU*Y(a? zf7CHE2Xk%WJ?4+Tg&7SZCqfBvPnD;Jrpkf^a-y$)hfX}r<~@EvCmxz*Hv&5mtC@Sb zjCt0>Yd?ZU#NffkJ9Z+57e>gR@I~NXP{p^vPsEJE#1KCbD-$9}{KRhfC~#&RKk;yQ z5=Z!nZdDvVu`d--4E#jcA!KTXbWr0NXyGR&9qvzZXcXcLNXF$c$WBOL?J`gbdWj?|lDD7q&R+hcM%SYF`rKo|>J>K+BQ9X&BP zQ6d?B`0D@UI94LU>-|qoU?sZ8|1XYXCFWbdIgXXsQ7d8nljHTGfA)+1*QE27@QH`x zXl2~Fm{oLjJ9P(*4=2-0%LY z!zUtgUNevmlJ*+Q$szs=d}fx3MxYR_isJ2zN$w}qE!BRGjz{tK7#bCCkD*h^`5auw zPdpqV=>&e_2WR9fs$zf9x=x)8Ubjw~(x0^7<4Vp@sN^)KD@b2p$>DS)&E2n??w>#5 z$ccS+Rq6i42`t6r088;Au~Rgu`w}eU;tVDyf@Vp$r2Wibax{fb155ED1(*X4z`mM- z#Gp097fnBGR;|}qXE%pZ;j{;yPRFm-S6~cV!L4XtazPVI@nSI57(x_l)@h}VlfhG6 zNiT_+(_UZdhhjkJJ9y$J!4#7-wX3xWNJ6*~qzV8THX{$qG?9=5yA>dTt{93kw-7mo zA1>s!ykoW?R({{B;SY8&5*7r>2S;sr_N9I>7KqNDeGiS5v(7&=5s_~f0nFw1nTfcD zt_bIhEu73ZB<#%LaA#M*G^t@Z1{2%c38sjlCrAtTr(!Bt$~|d^Q@l8=wi;h}8Sd#9 z98NJ?u;rV13kh?OeQ-dJzYW^sof3i)ko1)o(RLouxQZak& zkct=?EbJyzy&b3;k25hJkcyGRanJ2dNA9VdC$9S8d zE%|)`DrN(=B;FfHz_eIom+qSZ9r(UnwM2{M0i(HGnR$A~5^$wnzUF!fP^&t^7Jm1n zHFe{DVmHB}a4*4AX9QF{lElpk!54<)xqb~<6`&$=IVBJlzi$RDfYYvklP(@l21kJz z;V;}Zy=cESnjDH#(t3TB+y71uWh-bE7gUlfK@~lrl%R^q@o!voSJ2zq1*&*)IGagh z5hW>5#f!tRAZcDRN!qInDXtD`1}*7m zqb&Qr?5ZH0X@N{DV0bkQrc2vBPLnyS7)hf6?8-ZT7af|;Ia6B;{sn?6#!t-HX7e@- zZL@hB-E~zb(zo?qy7%iIjeE!I6-J`YaL)G$h{QR*Vw}U_=0pUHTqwGDV7tGq54efT zIB_T5x^Ka3wGo?*+C_*UBLq%SNC+g+3sYnxj0vGupc6u`f&Q^9{%Ws_cSQnMF*(Fl z?AGF{`LSi*-%rd-a2)dzEgM3LBCcXzqeT3~+W^+5o{*A#5d|RzXN?&A-mJ~`* z#lBeG-9Z)m+5*m$W3@elB(XDeymwx$B&b3}(2IpO5>pYafU_l6Dq5{D-uhKaxIP#O zfnGM**d=#PX|5Q%NQAAS=+d9?32)lR>6P$vu^Lu$+%;~PGoY(05{B2CyQ;nCg}mP(mq_*%#3S5?IlM4$FrSYiD4T zM^ol)%@w$dTSMFaT&X$Jc)g^%wBD-3Tet=BNzBSb2M{$ z(Tto}3S6zjD;U{-p4FLCWn?ho^xnr?amsG)nP2*ug&Qnh{ zEb~@4u00CYg1OA#=(gS*8&0_*Y|03Z(m-ConxI+``Br)_|UT(s2}7<9uRJ+cczIt)*0qFy!}= zBPC4e+jdjb%4+T7*1WVG#(37CdFJ3B)tH;S?>{BCcO*K+CHS7-sUApsSI941_oF3S zzGbk}V!5Uz&nV;gclN3Y=+*6uXYWP_6#K2e8&NoOKnSL7f>N6wC5P!eZKIzWiV99` zi{xL>^a+}UoPZ1U?%tDT<4MM_r5}82!!Rr-Z}MoFwGqaYKA>gNYVQ761R+w=6CGh& z*Fbk{)HpV%JxLNb8m5?=|)=CmFGqAOg{9eXuvR&Ur9?k9EPCMzW4)dn9izF4VA>Y_8j^dP` zN4H$w5;MT6W}ex+aAApUW}usp(ePp_Cxk3SdL(VM!|1rW$uzw3DDr}j?CI9F?9u}W zE}ej?vd>JzY_SEp3v|adx>`T4cXpZDR#O#ZcTmIGJ~NP$<*!4t&MM`_UZRF!G?FNe zE*DPLN}8q0ish$Xr87kaU=On}5Y9+AysUrZ-&5o}MpPQUrh2qQJOzI_z4oETxuo3H z5{`w{N*~9Q16-_~^qT-w#TCpb|t9vfWS0M0Y!=L{WHcu~nG z3K?|hGu-NDe{+R@aO`2@F>HWf|EygmiIVb)A#8jgXGQa)i}U14;`fiQaX|=ztm8O5 z>5QX@@m)CA>wD%|Hwa8e7tRU`CRfDw!5C;lJx<_)*2FB+$>k5yHYfTk1!5W|e$?7i zeFq3FQ7ydE{Ys?`k<&IJ~JtND1QusXEKU?xi@YhtP>nz%!Lq5xbe&mP2x zcM%F7AmTd@XP{SVi@#PwL*>7JP(HiW@E%NHkz1*nXOGCdEB<^vScRiedI!E%FSp+B z%4^K8ELX3P6c%Qbv-ugnoLU08*@rxu0o^>>?|bc}4T5()h2bGC3d&SJx|mY?w4PjE zoKsZrgFe3lV`o#*T{*T+a!VttRg{S7tk^a3GZENC^ z>ex$pdRD4wi{HY|mvu}3R9nfd7$10_tnV^9EItzO6yYQB)YY643jJi0{+3nF;ZtL| z>$ORJ`@3~s>wR_e=f*{fwl?kW8jK+2W6wGrsBPKP5P8-{23i!M)OG!gy%;4T5SP@a`BXgtwjrcP3^+vvRHe z+}MfaTG@uSlWGoc*1a?07^krV;gxX4=#(A6VoZAx{mBB{0mSXQCVlF#QMZP~^ zR#SQ#uTo)WP6~BSYB%(`^ZFIJx>onAMITbbN&VEp;>WhgG>NATZ&7xvVeP{6BPls+ z#zDnl`WLv}&sy4!gb7&fl<%H26*?8II!tE1o*Z^2Sw~5<@!9yY!(#g4*GpGIN?6-b zPcxr6b8h6DMCOkx+${*ZPLkA5 z@THVE_1N#2Sn$NbgaNrl!$UPw*A4MBGt3E5kqe5V$xAMQ*N2x^*Eh~s)0kXpg*XCx zm7b1^@gXk0h2~ef{b0lwt4o99Man7o5AzzRt~q>r1Z7(H(h6A+J@#R#Tvfww!p=nH z!iZLH@0~f^!rLkT2Sa^1=f3}l*%{G|{p)9@jGS)VBi=0wnkq-;b--sS*9pXQnwE z=(cs~h4zA0v)*1|>W02Zjw9|41o^37zTOhT8?HT;9h@P}KtGladB*O_LlhL8#3JwK z_7PbgBb>}`euip{`IM2$W0&T?SRANS;w#QL9;^7>{*u;OOWo!y&u)@(uxXulVWnJE z=oa)Hx9sCQNR;t_!WAx)ch`MJMZU$OAEP>izOkG%XIEMmC|QiR-cn?vT;`Mic|w_I zPJjUV_VPWj^J=U84HFq<-ck01q85qLXY18>D^p&OtmaiSqB-qyBFXURQTCUec2FeC z!&j)j&-fII%0rQ=b8*HVRHlBh8C;Hn>CfB3XRUc2#@)ob7-MQ`(qDAOj^SdT^toxN zPp(qydYfjM?|UD1Eq~PJbJytTAYDF|eP#?SZ+Tm|Ag5iD$t0j|y~w-~6TfYYCmPV?!H?~xa4bw;DRZ2$tZB<3|S^pR_d&Ze5DACF*iCNnfmE}Loh5J;@z4}4me01=Zqxbx~`~t<3oyG4w7YZ5* z8Jmq7XAY^<7s@y>Ux7}hy0@6U{kVN){*h2TgBjC-)mdO~l{}GyrZIdLS5@SFCP#UR z4W0IfMsA;b=n~+^=KJRR>FMdi<;7ikQgnD}B1nKB(F!r_rof=Q>k&O8AmqET-`0ws4Q&fc#C>ZmT*}DWCACLcU`H^;(=m%BE_+Ed_41{j=Bm?x#S;yKyctYIOpd* zs9^Wgy2re3(BmMww&6PRJN3L+whJT(!f~;CA1?W@84u1 zT~J~C;WS(Vt7%0p7q#1K3Kn3F7Gx+Pt0{*Bhk{wN0L3tbM4hz7w*S6 zkg7z>z-sDiv7MU1(gh(yTP0j}kL8ZE^Oz!!P6UGsLYOQmOxzT2XovA&!qB;-tGqk+!pB}ZyJV9=bK zN#pHd8ES~zOw%!(cJHyOk>@5m&Y|@^I4|rL>ju7eAq2B%5ykEyKB{(bd#cxPss`p) z)X!~ah0{0Bl$V$j8OaaFfH?vxtqWZ4#W;X9b;}ZB?bEKHtL@dACU*{%hfe8awLGpn z5)%0&YDObbaV5vPh*v$APU`saZ{}ui$BtV+o?a+bxP_`_*8XS};mkk(+2Wc%+5J^H z@Mfpc@aoEodv)&OS?Uopf~CIE9?}Jb)!q!&Qf=pZYTR}cTh{QZAr|=XmCJB+BcgYW zzC-G&NzwIyXR}uqpLv@nyRpjJyKc^iHUb-3-70zzal?c`N&;J$LDbM5ow(SM$tqip zoAQz_SnlSz#$aK3%e-E$XCzalqxH(=4;<0d(Q0d-cwkhn2FD62=)Q3GSd{J;m0o!X z>`MKYEO5ai_blG3i2EAiSOcoaM7N3mdFL1di9_V$1)i#s5`{|%G1rG~U8Xc~%gXpP zP^>WBS+d~5GsPEg==Wz{FFj6G(E`s2jZ^K4n)^`CGq2;9mEEsgs~%kRQjh{;vzVLS zp=9lE)ZwgppMQ1nxN?mve6ApK1|=&uCbFB@^3&YxmP>F*QNgR^^wkpr0=UDiDkq$F zy)va&^xV*!MpJiAjLLC+x>`PUSbUg^<-p;--X^6&N5aFEoV!;v3vN?(^U_wSs2`H{ zEpH{dti|>6TStDfm=w)tkZxtr{DNFZDE3EQcp}P=o{MLTq^>K<503Bk^tf*~MEH>r zABo7W_vI{7bH#RXoND1KCj79<6?Oabes`3M1CDxk;U7ia>H(YY9A%atbD2y}V7^AjY4m^MMKvGYcA&ur~dA@z)sNS;@mL-!nS3ORg zUAx%B&Df>yMl;NAMXO8TgCSPM+n9q0zD4&ukkzA^+Q^}$-Pc?2!08pr=-3Kv>p6-? zX@F#zt>!KEcu074)&zy&A4!c1xIR%Lxz=vNHy6EC$EA0Mz}=Z z{8AXHd}Cdp<3azUp+(KBA_gOzQDZxoH};(SG!q9qb80^H#I6O8e;G)Sgmn3RuAJIr ztTP=XyKU-)qP4g2X$EOJY31s)JX@7B1A-=29Y`H?X?XC@uN>^=1B0Fs=~AZz8OjY( z&7LtePoAw-Ek5tT`+nfvo}1ovjvr47TDg30RRQm@M7F79yB?WU*>nQ`{ zfZBMy=*sEAH(KWcIwG)Aou_A84u3rh-!ZjWOqY71-g7-7*ZKaZhJ^vLZ|(DjW%s3^ zv1^ku!PET<-qVjo1wTFzpZs`bF1<;La^%kDTFF!Pk&JU3xq4&ZS!u(R;STZ&WfDoR;k0#kq^^itBx2tf$Y`*QB5#a|_~A z*Uxn;n^%8>%2aE~!c)~SOe}j5#Ex?%9nSg{m+7P8tPCoSnhf951-77a_A;)BGiPDM zJawLUz$tGCeR+R^Q@#^=KiQcByLR}7>S%5?^HZKrxn&$^h;GI`?P%wn6BA-ldItij z9c&jmuaZhUO3vXxj?cNN#16LB^G;?7yaq{K#uZ_5KODY0kUGv)G#G{Z9u|9)OF7J1 z#g_Q|V8X(=@3-d?ldp2hi{F-VObC;*19_s^cl3Qb5@8QKq#Ok_e8DCa0^Q2ho5I57 zZo*YU>ujtY=ekp+BpjdgATe{-Ic##BP9HHxGWLSxW0qdm!Q>ew?kspn#9Qd3xS-w6 zF(Moc3ovJeYuc8RR>Fk9Eu^U25Mi@#ZEVkdrev#hagw1f`m)^iZ;5WLJFJOKzBO*L zJT>$k6Sz~3{1=-C+E0>XGwpX`Cx#xrP%_dOzbU`_Nup5f>snYk_w;!7F2~w}bTP+> zV^Nu0%wa9afr?xMr&+iGX5p*J9OYJ>hul&a;pfuo>eaF{f=&&@pUZmUnOgBiVu)!T^+GRQW8k&mdldPZ4%D?&~CyVc*Zr{A`hU;-DhM}i-Rap4@ zaWYEvGG>0aRw`X;B30H2L5$p;>Al5`;qM-(9yOdUQ^ByGu%4|k&xfaaJtz(=>8HEc^ez3vsh#2I%QpPGD7pmK$yG;c6NoJ-CyKs0Bn*?_RvCmxw%7Qb&$Di#hfE^+eM?eo!qRxQ zB=@Bqk&S89Dv)xM1frODLkf2Yb9O;UDOt}6wBUpj8@VvBYBqBzAgavD&*GI+_q~gy z^v)5oZxUNXEFmkry9b>1GIz;tQp1xOfqVIK7OdW$>=b)#L{j`>_6xZFsdTyZ zOq*4g*+USg9TI0kW@wt7zn+jv>gS2IATU=cE)Tu0oI(`!V{%*$0`6^!knoN|O%HP=HUVxSE&9VA za&C`4iyj6)qRweGM{9j?Io*1xC%#MSNR4xTeDmkKw&0pe6_H{pXSzinu2q z%B|Kwz8&vM<#;P~SP=AN?B`2n_30O81Q}-2n|t?Om_@wY!Hyu0=*VN1ilGAcwO3r_4TCEC|ER+ z4QP=t=hzS+C}{s%6{)NY`;(~ho2aP?aR?@3AvS0)EW{G)iAU>`fJ_ygKuY=E@i ztgwHv{^m45)6fKx*PkMOTWX1=p*?{f5bAHLk^jm6Z@bwb);5+Pn6~zBMf=0}!$yc5 zl5L;O?%!7IOa0yX%ZGoeV}scHV`%$cb+)vCSYUm0vWkkf_V37O>I9L|9zIwa z2!r*)`)YwdH8q1lcuy^`ld2`ul5BwW#+!yvu=XKV4jv&s9w<++jy9X74jKq3Rxt=o zR>a{6G%SS*!csl7Bn|8=j3xI0LFz$7G7%UxD2Pb#rK$&Mfq${61MPh>1PuBGq4{Wm zoh@xZG!lv6gQtPuN+>0mB1~BUgrlH|*gz7+2Y7f20R}`;JaOuFhQ_}I0>8At-ZUCn z9Rdjq3{(nKRw7ZnATSgP1%bjLaJV9XP^1EH#zF@v`ckC;eZLIBJO7K#m#Xy3CM6FN z5rTJyz?7hnKNT4Q!=d2GG(5={w67SAA^Fp^!2bStPj#p&0~At{FgZWA_18V zgbebpbwisC^bZ~XoS=U%mcXK{1rFR_3W3&t7CHF8*Wy33TIRncwJcDO_HzVq_I{Sg z7y?NJgTr8OBpeE~_OlBNg@OSXkcIyX;&&#<{P%1DL^$jRQD#3pvj3_mK@=>G4GMxm z+4fhjKMoK=RaIFPgaiFSQ$-@+K&jb3K)!#{P%t&1>is7Tsfqv!)Zb_-%75nt05G8V z{v8JcE)4!gL!kao9Y|%sw|~PS5r4taC}=zZOZipD?eQU4U~C|W9f<^#?EQKPf|&W@ zNTB@y0T&NuhM?1$hDaz}4Q7bc*Hczifx`9Fkj8q(D44#AvA(Jv(h#Zrza!lCuLh_z WG==udp{gilRVdr><3`rTZ2tpLZSEBS literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/error.pdf b/BookGPU/Chapters/chapter15/figures/error.pdf new file mode 100644 index 0000000000000000000000000000000000000000..203190a54ed60e6513b1046a03de2d594b33684a GIT binary patch literal 9131 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 literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/histo_speedup_4cores.pdf b/BookGPU/Chapters/chapter15/figures/histo_speedup_4cores.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc1d80bc8a263477ba84779a653cd2f83f097ef6 GIT binary patch literal 18577 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∾|lbepi9jSi#qM3?P!DlRs^6QgmVa+D&IK(@L{eScCBJ#fiH;=3aj~7 zG^-ncKV(Y}k(>LOKuj?3jSIlA0r8ug+F+eP5K#zN6bj4G#bN$2NNapuc?#%b5a0$jOR;452&UV|6zl^2A~+sR7l& zslk7}KnOS-hzYR-ZO9-9B>vnr{snUUE(1fvflu3HU@$)Vcw0UgU<^OYAP6{WXL%?D z(EOjDg+lOAT-#(Y^v-+;_|AN2=#G3a2zp1GVdD71M?cpAL*g~PO@;=zX`4(OijQ>o zIiENjyrW)mBz`0I=X?M??Z5yIhVG~r3IT7&4-6N_A6fXhJSec4x?KiG{R%651kBIR zB4GHq!JlPNG=0BLWRAtC4;eS?YPqs4xH7KwoFzy*dt?~tLuJKF+7 z!*|q+f+2Uv#G&{g=%4FFA@K+OewK-gqjvNc4Z%kQZp(+nM<)C%L&L#4+6)K(LIy+a zXdfK5(>CBJe0ajob-PE66L9X14k@3aj-w!^LPyhe` literal 0 HcmV?d00001 diff --git a/BookGPU/Chapters/chapter15/figures/offdiagonal_nb.pdf b/BookGPU/Chapters/chapter15/figures/offdiagonal_nb.pdf new file mode 100644 index 0000000000000000000000000000000000000000..46b67bead6a9bda09162ca744dba463654a9129d GIT binary patch literal 53322 zcmXteV{~Rs({*gywryu(CllKf+qP{?%!zH=ww+9DT}i&o{k-3wv(~9q-Bn#(wQF~u zL$3HkoSvD14TgN=BCY_2orsCZ&d3smkB?E-)Yjbj7ZJy|M43_C!rIx?k%&>;+R)kb zhpDlhiK&19jFYpYsi6&wdvR~Hn`G8;>NK6O&EXa5fWs>PwWiG^e z_vsbT7#H#kO~D0%EwIPvE+m++_t(kFBYrmn!2Ij$<7DOQPH=t2575(7eZ8teqyM#2 zbMxq@aN53)G?bf9tk!wQ#bs)h1u$WSI^X4u34{s+Zw@S^6-AXQMIz$ zq4xU#yzO*JM-0 z)0kF{ru0CTk5nn!j@-iL*L6|>jt)+d*9gT^3fjJHbmcu=bS{&oQjBTjM=fclk1XW} zyya;XK56-S)z2KB&nQ8|ES9g`o?k6`(zrMi;kO+Ret0rc%?w>L#;X%OkBK8XX|a0q zIvDy}abDC;y0bF48fhpx=#TQ-@r6z^Sc7hx*w6dH$t3JdE`fgl?+)X0DD`vi!#_wP1~CvOET$jPb8&N zA70b4U5lU0`gi&}-WGA@PJg(M2?$$f@f)zv zdjV|qx16|B`t0{gLF8#4-A_EXId6KsJ<>gZ7^95!FzV^Nsz5qeGdZ|kv|@wY)C@sHzD|1l^NwoW{LCp7}4up zvY{*dyw}jmo(Pox+ll+-LZx`Eq*m@zE&V;jaanTxuyH`K|-jg|&x~@mtfj{4w@l zBKlDfUGMR^0Ui#*xV%R$)Z*}aI5S<2hR6Di`5B!C@Y1-^?)UcEJ%%gQo^y6|@Ou)M z-E+KrZ_m#yz4|Y{_k9O1?)sJ>Zeje&V{YN?v8h<$zhId!HiX@8-Y&%1X?c9>#o^m2 z5$WG|jC^C1pX^+xpZ+}p)EN~+Bx>-~EGaz&tSZ*H= zGwUazEFSKC1M|xn-@`)ky`F(uh1X0s9q}cHqL`aw)V8#9pE;JUzeINPF zm;0?Y5-Z4y`+rsA@_z&Eq)EkUF4w zw~Ej3zq*@$Hm*pTD&~ei3VG3liZ;-(!aSgzw0&5;hAW+07F8w)GNyk>aDqUU4q>2GLAJ<`0Xb?JCd&F z{AmOh<$s;tu-0`Sr?JmXMw;1hEv9J&WaacvSam%^b%r+|)tw7bOMMc{owddL_47QH zk$+HV&0brcOui* z?0MGjT?ci27nGCC&Nb*p!829Lc(rYO=wv}g3CH5QC&|2b5B5ZsW5PEt%WAMC#NUZI zJk(Bd0vBY4eL*GdY>Lr)kr>M_xeBae6}Yz;EFk}+dQw2t}~n2_VbPrFJI=@ePHkJ zC6m3?tL|@uxwW=DKhsS^iQXOkLFtauod#4a4Y!Tl9Q4|W2_eUkav2syc^Q%s?G^0d zJs6`9U!ng)+%pmKRXUho+>q7_0n{J-HI0ikYk4`kT*n^_%E_eTSN%-aZp@5vnFQ@j zlkd8+dfJ4PM(Hgb{(ZH-`LXst5Tt|00T+GWO2DD7Tu=j@8)6VaXA+39?ma@E<8dfW zJu&V>5_MF$*Dlj~Jx|yjv95>D-(O8>+>|lo@@nrj#`%?UucXZnGsYGk)v#VthSd`< zBYM>a#!|(8Cw>>jsfNZGMh}8Kg9p-Fdl8{#u*@sWDi9o%N`=d9AemRZd=+9j{?g5ulT1(H&R4`2@XCH zGb`qwlVf_6he>6({hS1xdShSLuzo21Xn-WQKgIm7`D@d>f*}sCksRO*Yfxy9dl>q1 zl*GWP!@eKgg4C^Vwr~A?p?(fFKHlpe|Lvra&Oak1sj&O`SvS$Lc;kLJVmu9)avG0a zMV-uuC1zymn5){c39Qp?qhOD7ylOFw{Rp)zZwcG->HmkCf~$6od4jX+x&wIcG5WEW zo7=obO>Hh-JJ;;@O&wN)Ss=@NO?`3yO|S6eHMQ2_7UPQCo4LEb^$jl0=We;54nxWL zzdF7SxIVD?;~W%&j5*j%BymXbyuLshw6?r_b8%Klau#>f<=_EF=c@qoK})CeCvkYM z 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 literal 0 HcmV?d00001 diff --git a/BookGPU/Makefile b/BookGPU/Makefile index 011ff95..43eb90f 100644 --- a/BookGPU/Makefile +++ b/BookGPU/Makefile @@ -7,7 +7,8 @@ all: bibtex bu1 bibtex bu2 bibtex bu3 -# bibtex bu4 + bibtex bu4 + bibtex bu6 makeindex ${BOOK}.idx pdflatex ${BOOK} pdflatex ${BOOK} -- 2.39.5