\relax \@writefile{toc}{\author{Guillaume Laville}{}} \@writefile{toc}{\author{Christophe Lang}{}} \@writefile{toc}{\author{Kamel Mazouzi}{}} \@writefile{toc}{\author{Nicolas Marilleau}{}} \@writefile{toc}{\author{B\IeC {\'e}n\IeC {\'e}dicte Herrmann}{}} \@writefile{toc}{\author{Laurent Philippe}{}} \@writefile{loa}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {chapter}{\numberline {17}Implementing Multi-Agent Systems on GPU}{397}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{chapter17}{{17}{398}} \@writefile{toc}{\contentsline {section}{\numberline {17.1}Introduction}{398}} \newlabel{ch17:intro}{{17.1}{398}} \@writefile{toc}{\contentsline {section}{\numberline {17.2}Running Agent-Based Simulations}{399}} \newlabel{ch17:ABM}{{17.2}{399}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.2.1}Multi-agent systems and parallelism}{399}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.2.2}MAS Implementation on GPU}{401}} \newlabel{ch17:subsec:gpu}{{17.2.2}{401}} \@writefile{toc}{\contentsline {section}{\numberline {17.3}A first practical example}{402}} \newlabel{ch17:sec:1stmodel}{{17.3}{402}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.3.1}The Collembola model}{402}} \newlabel{ch17:subsec:collembolamodel}{{17.3.1}{402}} \@writefile{lof}{\contentsline {figure}{\numberline {17.1}{\ignorespaces Evolution algorithm of Collembola model\relax }}{403}} \newlabel{ch17:fig:collem_algorithm}{{17.1}{403}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.3.2}Collembola Implementation}{403}} \newlabel{ch17:listing:collembola-diffuse}{{17.1}{404}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {17.1}Collembola OpenCL Diffusion kernel}{404}} \newlabel{ch17:listing:collembola-reduc}{{17.2}{404}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {17.2}Collembola OpenCL reduction kernel}{404}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.3.3}Collembola performance}{405}} \@writefile{lof}{\contentsline {figure}{\numberline {17.2}{\ignorespaces Performance of the Collembola model on CPU and GPU\relax }}{406}} \newlabel{ch17:fig:mior_perfs_collem}{{17.2}{406}} \@writefile{toc}{\contentsline {section}{\numberline {17.4}Second example}{406}} \newlabel{ch17:sec:2ndmodel}{{17.4}{406}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.4.1}The MIOR model}{406}} \newlabel{ch17:subsec:miormodel}{{17.4.1}{406}} \@writefile{loa}{\contentsline {algocf}{\numberline {21}{\ignorespaces Evolution step of each Meta-Mior (microbial colony) agent\relax }}{407}} \newlabel{ch17:seqalgo}{{21}{407}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.4.2}MIOR Implementation}{407}} \@writefile{lof}{\contentsline {figure}{\numberline {17.3}{\ignorespaces Execution distribution retained on GPU\relax }}{408}} \newlabel{ch17:fig:gpu_distribution}{{17.3}{408}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {17.4.2.1}Execution mapping on GPU}{408}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {17.4.2.2}Data structures translation}{409}} \newlabel{ch17:subsec:datastructures}{{17.4.2.2}{409}} \newlabel{ch17:listing:mior_data_structures}{{17.3}{409}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {17.3}Main data structures used in a MIOR simulation}{409}} \@writefile{lof}{\contentsline {figure}{\numberline {17.4}{\ignorespaces Compact representation of the topology of a MIOR simulation\relax }}{410}} \newlabel{ch17:fig:csr_representation}{{17.4}{410}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {17.4.2.3}Critical resources access management}{410}} \newlabel{ch17:subsec:concurrency}{{17.4.2.3}{410}} \newlabel{ch17:listing:mior_kernels}{{17.4}{411}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {17.4}Main MIOR kernel}{411}} \newlabel{ch17:fig:mior_launcher}{{17.5}{412}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {17.5}MIOR simulation launcher}{412}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {17.4.2.4}Termination detection}{412}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.4.3}Performance of MIOR implementations}{413}} \newlabel{ch17:subsec:miorexperiments}{{17.4.3}{413}} \@writefile{lof}{\contentsline {figure}{\numberline {17.5}{\ignorespaces CPU and GPU performance on a Tesla C1060 node\relax }}{414}} \newlabel{ch17:fig:mior_perfs_tesla}{{17.5}{414}} \@writefile{lof}{\contentsline {figure}{\numberline {17.6}{\ignorespaces CPU and GPU performance on a personal computer with a Geforce 8800GT\relax }}{415}} \newlabel{ch17:fig:mior_perfs_8800gt}{{17.6}{415}} \@writefile{toc}{\contentsline {section}{\numberline {17.5}Analysis and recommendations}{415}} \newlabel{ch17:analysis}{{17.5}{415}} \@writefile{lof}{\contentsline {figure}{\numberline {17.7}{\ignorespaces Execution time of one multi-simulation kernel on the Tesla platform\relax }}{416}} \newlabel{ch17:fig:monokernel_graph}{{17.7}{416}} \@writefile{lof}{\contentsline {figure}{\numberline {17.8}{\ignorespaces Total execution time for 1000 simulations on the Tesla platform, while varying the number of simulations for each kernel\relax }}{416}} \newlabel{ch17:fig:multikernel_graph}{{17.8}{416}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.5.1}Analysis}{416}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.5.2}MAS execution workflow}{417}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.5.3}Implementation challenges}{418}} \@writefile{toc}{\contentsline {subsection}{\numberline {17.5.4}MCSMA}{418}} \newlabel{ch17:Mcsma}{{17.5.4}{418}} \@writefile{toc}{\contentsline {section}{\numberline {17.6}Conclusion}{419}} \newlabel{ch17:conclusion}{{17.6}{419}} \@writefile{toc}{\contentsline {section}{Bibliography}{420}} \@setckpt{Chapters/chapter17/ch17}{ \setcounter{page}{424} \setcounter{equation}{0} \setcounter{enumi}{3} \setcounter{enumii}{0} \setcounter{enumiii}{0} \setcounter{enumiv}{25} \setcounter{footnote}{1} \setcounter{mpfootnote}{0} \setcounter{part}{6} \setcounter{chapter}{17} \setcounter{section}{6} \setcounter{subsection}{0} \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} \setcounter{figure}{8} \setcounter{table}{0} \setcounter{numauthors}{0} \setcounter{parentequation}{4} \setcounter{subfigure}{0} \setcounter{lofdepth}{1} \setcounter{subtable}{0} \setcounter{lotdepth}{1} \setcounter{lstnumber}{21} \setcounter{ContinuedFloat}{0} \setcounter{AlgoLine}{17} \setcounter{algocfline}{21} \setcounter{algocfproc}{21} \setcounter{algocf}{21} \setcounter{nprt@mantissa@digitsbefore}{0} \setcounter{nprt@mantissa@digitsafter}{0} \setcounter{nprt@exponent@digitsbefore}{0} \setcounter{nprt@exponent@digitsafter}{0} \setcounter{nprt@digitsfirstblock}{0} \setcounter{nprt@blockcnt}{0} \setcounter{nprt@cntprint}{0} \setcounter{proposition}{1} \setcounter{theorem}{0} \setcounter{exercise}{0} \setcounter{example}{0} \setcounter{definition}{0} \setcounter{proof}{1} \setcounter{lstlisting}{5} }