\relax 
\citation{Tanner1992}
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{3}}
\newlabel{sec:introduction}{{1}{3}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Sky map example synthesized using our MPI/CUDA implementation of the {\tt  alm2map} routine. The units are $\mu $K. An overall monopole term, with an amplitude of $\sim 2.7\tmspace  +\thinmuskip {.1667em}10^6\mu $K, has been subtracted to uncover the minute fluctuations.}}{3}}
\newlabel{fig:skymap}{{1}{3}}
\citation{Tygert2008}
\citation{Driscoll_Healy_1994}
\citation{SudaTakami2002}
\citation{Goldbergetal1967}
\citation{Tygert2008}
\citation{Gorski_etal_2005}
\citation{mathForphysicist}
\@writefile{toc}{\contentsline {section}{\numberline {2}Algebraic background}{5}}
\newlabel{sec:background}{{2}{5}}
\newlabel{eqn:map2almDef}{{1}{5}}
\newlabel{eqn:alm2mapDef}{{2}{5}}
\newlabel{eqn:YlmDef}{{3}{5}}
\newlabel{eqn:Delta2map}{{4}{5}}
\newlabel{eqn:DeltaDef}{{5}{5}}
\newlabel{eqn:assLegRec}{{6}{5}}
\newlabel{eqn:betaDef}{{7}{5}}
\citation{Gorski_etal_2005}
\newlabel{fig:pie_plot}{{2}{6}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The overall time breakdown between the main steps of the inverse SHT algorithm as computed for a typical cluster of GPUs. See \S  4.3\hbox {} for details.}}{6}}
\newlabel{eqn:pmm}{{8}{6}}
\newlabel{eqn:pm1m}{{9}{6}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Algorithm}{6}}
\newlabel{sub:parallelization}{{3}{6}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces {\sc  Basic {\tt  alm2map} algorithm}}}{6}}
\newlabel{algo:alm2mapBasic}{{1}{6}}
\newlabel{algo:Generallalm2mapS2HATParallel}{{3}{7}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces {\sc  General parallel {\tt  alm2map} algorithm ( Code executed by each MPI process )}}}{7}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Exploiting intra-node parallelism for {\tt  alm2map} computation}{7}}
\newlabel{sub:acclerating}{{3.1}{7}}
\newlabel{sub:multithreading_alm2mapmt}{{3.1}{7}}
\citation{hupca}
\citation{hupca}
\citation{hupca}
\citation{anova_book}
\citation{anova_experiment}
\newlabel{algo:alm2mapS2HATParallelMT}{{3.1}{8}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces {\sc  $\bm  {\Delta }_m$ calculation per thread}}}{8}}
\citation{Schw82}
\citation{Gorski_etal_2005}
\citation{libpsht}
\citation{frigo2005design}
\citation{CUFFT}
\@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces {\sc  $\bm  {\Delta }_m$ calculation on GPU}}}{9}}
\newlabel{algo:alm2mapS2HATParallelCUDA}{{4}{9}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Experimental results}{9}}
\newlabel{sec:experiments}{{4}{9}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Default assignment of two major steps of Algorithm $2$ to one of the two architectures, multi-core processor or GPU, in a GPU/CPU heterogeneous system.}}{10}}
\newlabel{fig:heterogeneus}{{3}{10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Architectures}{10}}
\newlabel{ssub:architectures}{{4.1}{10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Hybrid MPI and OpenMP}{10}}
\newlabel{sssub:mpiandomp}{{4.2}{10}}
\bibstyle{latex8}
\bibdata{RR-biblio}
\bibcite{mathForphysicist}{1}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Hybrid Multi-GPU}{11}}
\newlabel{sssub:mgpu}{{4.3}{11}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Multi-GPU versus MPI and OpenMP}{11}}
\newlabel{sssub:versus}{{4.4}{11}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Conclusions}{11}}
\newlabel{sec:conclusions}{{5}{11}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Acknowledgments}{11}}
\newlabel{fig:titane_bars}{{4(a)}{12}}
\newlabel{sub@fig:titane_bars}{{(a)}{12}}
\newlabel{fig:titane_total_scale_time}{{4(b)}{12}}
\newlabel{sub@fig:titane_total_scale_time}{{(b)}{12}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Runtime distribution over steps of the algorithm and overall GLOPS for the multithreaded version of the {\tt  alm2map} transform tested on Titane with 4 OpenMP threads.}}{12}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Algorithm scalability}}}{12}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Overall algorithm scalability}}}{12}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Runtime for the computation of \text  {\sc  step 1} ($\bm  {\Delta }_m$) on Hopper-II.}}{12}}
\newlabel{fig:delt_hopper}{{5}{12}}
\bibcite{anova_book}{2}
\bibcite{anova_experiment}{3}
\bibcite{Driscoll_Healy_1994}{4}
\bibcite{frigo2005design}{5}
\bibcite{Goldbergetal1967}{6}
\bibcite{Gorski_etal_2005}{7}
\newlabel{fig:hopper_bars}{{6(a)}{13}}
\newlabel{sub@fig:hopper_bars}{{(a)}{13}}
\newlabel{fig:hopper_total_scale_time}{{6(b)}{13}}
\newlabel{sub@fig:hopper_total_scale_time}{{(b)}{13}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Runtime distribution over steps of the algorithm and overall GLOPS for the multithreaded version of the {\tt  alm2map} transform tested on Hopper-II with 24 OpenMP threads.}}{13}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Algorithm scalability}}}{13}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Overall algorithm scalability}}}{13}}
\newlabel{fig:cufftvsIntelFFT}{{4.3}{13}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces The overall time difference between the FFTs evaluation via CUFFT on GPU and Intel MKL Fourier transform wrapped to FFTW interface.}}{13}}
\newlabel{fig:mgpu_bars}{{8(a)}{13}}
\newlabel{sub@fig:mgpu_bars}{{(a)}{13}}
\newlabel{fig:mgpu_total_scale_time}{{8(b)}{13}}
\newlabel{sub@fig:mgpu_total_scale_time}{{(b)}{13}}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Runtime distribution over steps of the algorithm and overall GLOPS for the multi-GPU version of the {\tt  alm2map} transform tested on Titane.}}{13}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Algorithm scalability}}}{13}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Overall algorithm scalability}}}{13}}
\bibcite{hupca}{8}
\bibcite{CUFFT}{9}
\bibcite{libpsht}{10}
\bibcite{SudaTakami2002}{11}
\bibcite{Schw82}{12}
\bibcite{Tanner1992}{13}
\bibcite{Tygert2008}{14}
\newlabel{fig:comp_small}{{9(a)}{14}}
\newlabel{sub@fig:comp_small}{{(a)}{14}}
\newlabel{fig:comp_big}{{9(b)}{14}}
\newlabel{sub@fig:comp_big}{{(b)}{14}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Comparison between the three versions of the {\tt  alm2map} transform, tested for various data sizes on Titane and Hopper-II for $1$ and $128$ MPI processes.}}{14}}
\newlabel{RRlastpageofreport}{{6}{14}}
