\makeindex
+%\includeonly{Chapters/chapter17/ch17}
\begin{document}
\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 {16}Implementing MAS on GPU}{363}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\newlabel{chapter17}{{16}{364}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.1}Introduction}{364}}
+\newlabel{ch17:intro}{{16.1}{364}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.2}Running Agent-Based Simulations}{365}}
+\newlabel{ch17:ABM}{{16.2}{365}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.1}Multi-agent systems and parallelism}{365}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.2.2}MAS Implementation on GPU}{367}}
+\newlabel{ch17:subsec:gpu}{{16.2.2}{367}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.3}A first practical example}{368}}
+\newlabel{ch17:sec:1stmodel}{{16.3}{368}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.1}The Collembola model}{368}}
+\newlabel{ch17:subsec:collembolamodel}{{16.3.1}{368}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.1}{\ignorespaces Evolution algorithm of Collembola model\relax }}{369}}
+\newlabel{ch17:fig:collem_algorithm}{{16.1}{369}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.2}Collembola Implementation}{369}}
+\newlabel{ch17:listing:collembola-diffuse}{{16.1}{370}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {16.1}Collembola OpenCL Diffusion kernel}{370}}
+\newlabel{ch17:listing:collembola-reduc}{{16.2}{370}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {16.2}Collembola OpenCL reduction kernel}{370}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.3.3}Collembola performance}{371}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.2}{\ignorespaces Performance of the Collembola model on CPU and GPU\relax }}{372}}
+\newlabel{ch17:fig:mior_perfs_collem}{{16.2}{372}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.4}Second example}{372}}
+\newlabel{ch17:sec:2ndmodel}{{16.4}{372}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.1}The MIOR model}{372}}
+\newlabel{ch17:subsec:miormodel}{{16.4.1}{372}}
+\@writefile{loa}{\contentsline {algocf}{\numberline {16}{\ignorespaces Evolution step of each Meta-Mior (microbial colony) agent\relax }}{373}}
+\newlabel{ch17:seqalgo}{{16}{373}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.2}MIOR Implementation}{373}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.3}{\ignorespaces Execution distribution retained on GPU\relax }}{374}}
+\newlabel{ch17:fig:gpu_distribution}{{16.3}{374}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {16.4.2.1}Execution mapping on GPU}{374}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {16.4.2.2}Data structures translation}{375}}
+\newlabel{ch17:subsec:datastructures}{{16.4.2.2}{375}}
+\newlabel{ch17:listing:mior_data_structures}{{16.3}{375}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {16.3}Main data structures used in a MIOR simulation}{375}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.4}{\ignorespaces Compact representation of the topology of a MIOR simulation\relax }}{376}}
+\newlabel{ch17:fig:csr_representation}{{16.4}{376}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {16.4.2.3}Critical resources access management}{376}}
+\newlabel{ch17:subsec:concurrency}{{16.4.2.3}{376}}
+\newlabel{ch17:listing:mior_kernels}{{16.4}{377}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {16.4}Main MIOR kernel}{377}}
+\newlabel{ch17:fig:mior_launcher}{{16.5}{378}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {16.5}MIOR simulation launcher}{378}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {16.4.2.4}Termination detection}{378}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.4.3}Performance of MIOR implementations}{379}}
+\newlabel{ch17:subsec:miorexperiments}{{16.4.3}{379}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.5}{\ignorespaces CPU and GPU performance on a Tesla C1060 node\relax }}{380}}
+\newlabel{ch17:fig:mior_perfs_tesla}{{16.5}{380}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.6}{\ignorespaces CPU and GPU performance on a personal computer with a Geforce 8800GT\relax }}{381}}
+\newlabel{ch17:fig:mior_perfs_8800gt}{{16.6}{381}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.5}Analysis and recommendations}{381}}
+\newlabel{ch17:analysis}{{16.5}{381}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.7}{\ignorespaces Execution time of one multi-simulation kernel on the Tesla platform\relax }}{382}}
+\newlabel{ch17:fig:monokernel_graph}{{16.7}{382}}
+\@writefile{lof}{\contentsline {figure}{\numberline {16.8}{\ignorespaces Total execution time for 1000 simulations on the Tesla platform, while varying the number of simulations for each kernel\relax }}{382}}
+\newlabel{ch17:fig:multikernel_graph}{{16.8}{382}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.1}Analysis}{382}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.2}MAS execution workflow}{383}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.3}Implementation challenges}{384}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {16.5.4}MCSMA}{384}}
+\newlabel{ch17:Mcsma}{{16.5.4}{384}}
+\@writefile{toc}{\contentsline {section}{\numberline {16.6}Conclusion}{385}}
+\newlabel{ch17:conclusion}{{16.6}{385}}
+\@writefile{toc}{\contentsline {section}{Bibliography}{386}}
+\@setckpt{Chapters/chapter17/ch17}{
+\setcounter{page}{390}
+\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}{16}
+\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}{16}
+\setcounter{algocfproc}{16}
+\setcounter{algocf}{16}
+\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}
+}
\chapterauthor{Kamel Mazouzi}{Femto-ST Institute, University of Franche-Comte, France}
\chapterauthor{Nicolas Marilleau}{Femto-ST Institute, University of Franche-Comte, France}
\chapterauthor{Bénédicte Herrmann}{Femto-ST Institute, University of Franche-Comte, France}
-%\chapterauthor{Laurent Philippe}{Femto-ST Institute, University of Franche-Comte, France}
+\chapterauthor{Laurent Philippe}{Femto-ST Institute, University of Franche-Comte, France}
\newlength\mylen
\newcommand\myinput[1]{%
\@writefile{toc}{\author{Rapha\IeC {\"e}l Couturier}{}}
\@writefile{toc}{\author{Christophe Guyeux}{}}
\@writefile{loa}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {chapter}{\numberline {17}Pseudorandom Number Generator on GPU}{389}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {17}Pseudorandom Number Generator on GPU}{391}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\newlabel{chapter18}{{17}{389}}
-\@writefile{toc}{\contentsline {section}{\numberline {17.1}Introduction}{389}}
-\@writefile{toc}{\contentsline {section}{\numberline {17.2}Basic Remindees}{391}}
-\newlabel{section:BASIC RECALLS}{{17.2}{391}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.1}A Short Presentation of Chaos}{391}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.2}On Devaney's Definition of Chaos}{391}}
-\newlabel{sec:dev}{{17.2.2}{391}}
-\newlabel{Devaney}{{17.1}{391}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.3}Chaotic iterations}{392}}
-\newlabel{subsection:Chaotic iterations}{{17.2.3}{392}}
-\newlabel{Chaotic iterations}{{2}{392}}
-\newlabel{eq:generalIC}{{17.4}{393}}
-\newlabel{equation Oplus}{{17.5}{393}}
-\@writefile{toc}{\contentsline {section}{\numberline {17.3}Toward Efficiency and Improvement for CI PRNG}{393}}
-\newlabel{sec:efficient PRNG}{{17.3}{393}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.1}First Efficient Implementation of a PRNG based on Chaotic Iterations}{393}}
-\newlabel{algo:seqCIPRNG}{{17.1}{393}}
-\@writefile{lol}{\contentsline {lstlisting}{\numberline {17.1}C code of the sequential PRNG based on chaotic iterations}{393}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.2}Efficient PRNGs based on Chaotic Iterations on GPU}{394}}
-\newlabel{sec:efficient PRNG gpu}{{17.3.2}{394}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.3}Naive Version for GPU}{394}}
-\@writefile{loa}{\contentsline {algocf}{\numberline {17}{\ignorespaces Main kernel of the GPU ``naive'' version of the PRNG based on chaotic iterations\relax }}{395}}
-\newlabel{algo:gpu_kernel}{{17}{395}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.4}Improved Version for GPU}{395}}
-\newlabel{IR}{{18}{396}}
-\@writefile{loa}{\contentsline {algocf}{\numberline {18}{\ignorespaces Main kernel for the chaotic iterations based PRNG GPU efficient version\relax }}{396}}
-\newlabel{algo:gpu_kernel2}{{18}{396}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.5}Chaos Evaluation of the Improved Version}{396}}
-\@writefile{toc}{\contentsline {section}{\numberline {17.4}Experiments}{397}}
-\newlabel{sec:experiments}{{17.4}{397}}
-\@writefile{toc}{\contentsline {section}{\numberline {17.5}Summary}{397}}
-\@writefile{lof}{\contentsline {figure}{\numberline {17.1}{\ignorespaces Quantity of pseudorandom numbers generated per second with the xorlike-based PRNG\relax }}{398}}
-\newlabel{fig:time_xorlike_gpu}{{17.1}{398}}
-\@writefile{toc}{\contentsline {section}{Bibliography}{399}}
+\newlabel{chapter18}{{17}{391}}
+\@writefile{toc}{\contentsline {section}{\numberline {17.1}Introduction}{391}}
+\@writefile{toc}{\contentsline {section}{\numberline {17.2}Basic Remindees}{393}}
+\newlabel{section:BASIC RECALLS}{{17.2}{393}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.1}A Short Presentation of Chaos}{393}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.2}On Devaney's Definition of Chaos}{393}}
+\newlabel{sec:dev}{{17.2.2}{393}}
+\newlabel{Devaney}{{17.1}{393}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.3}Chaotic iterations}{394}}
+\newlabel{subsection:Chaotic iterations}{{17.2.3}{394}}
+\newlabel{Chaotic iterations}{{2}{394}}
+\newlabel{eq:generalIC}{{17.4}{395}}
+\newlabel{equation Oplus}{{17.5}{395}}
+\@writefile{toc}{\contentsline {section}{\numberline {17.3}Toward Efficiency and Improvement for CI PRNG}{395}}
+\newlabel{sec:efficient PRNG}{{17.3}{395}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.1}First Efficient Implementation of a PRNG based on Chaotic Iterations}{395}}
+\newlabel{algo:seqCIPRNG}{{17.1}{395}}
+\@writefile{lol}{\contentsline {lstlisting}{\numberline {17.1}C code of the sequential PRNG based on chaotic iterations}{395}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.2}Efficient PRNGs based on Chaotic Iterations on GPU}{396}}
+\newlabel{sec:efficient PRNG gpu}{{17.3.2}{396}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.3}Naive Version for GPU}{396}}
+\@writefile{loa}{\contentsline {algocf}{\numberline {17}{\ignorespaces Main kernel of the GPU ``naive'' version of the PRNG based on chaotic iterations\relax }}{397}}
+\newlabel{algo:gpu_kernel}{{17}{397}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.4}Improved Version for GPU}{397}}
+\newlabel{IR}{{18}{398}}
+\@writefile{loa}{\contentsline {algocf}{\numberline {18}{\ignorespaces Main kernel for the chaotic iterations based PRNG GPU efficient version\relax }}{398}}
+\newlabel{algo:gpu_kernel2}{{18}{398}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.5}Chaos Evaluation of the Improved Version}{398}}
+\@writefile{toc}{\contentsline {section}{\numberline {17.4}Experiments}{399}}
+\newlabel{sec:experiments}{{17.4}{399}}
+\@writefile{toc}{\contentsline {section}{\numberline {17.5}Summary}{399}}
+\@writefile{lof}{\contentsline {figure}{\numberline {17.1}{\ignorespaces Quantity of pseudorandom numbers generated per second with the xorlike-based PRNG\relax }}{400}}
+\newlabel{fig:time_xorlike_gpu}{{17.1}{400}}
+\@writefile{toc}{\contentsline {section}{Bibliography}{401}}
\@setckpt{Chapters/chapter18/ch18}{
-\setcounter{page}{401}
+\setcounter{page}{403}
\setcounter{equation}{5}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
\chapter@authorfour\vskip6\p@
{\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationfour}
\fi
+ \ifnum\c@numauthors=5
+ \chapter@authorone\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationone}\vskip12\p@
+ \chapter@authortwo\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationtwo}\vskip12\p@
+ \chapter@authorthree\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationthree}\vskip12\p@
+ \chapter@authorfour\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationfour}\vskip12\p@
+ \chapter@authorfive\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationfive}
+ \fi
+ \ifnum\c@numauthors=6
+ \chapter@authorone\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationone}\vskip12\p@
+ \chapter@authortwo\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationtwo}\vskip12\p@
+ \chapter@authorthree\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationthree}\vskip12\p@
+ \chapter@authorfour\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationfour}\vskip12\p@
+ \chapter@authorfive\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationfive}\vskip12\p@
+ \chapter@authorsix\vskip6\p@
+ {\it\fontsize{10\p@}{10\p@}\selectfont\chapter@affiliationsix}
+ \fi
}
\gdef\chapter@authorone{}\gdef\chapter@affiliationone{}%
\gdef\chapter@authortwo{}\gdef\chapter@affiliationtwo{}%
\gdef\chapter@authorthree{}\gdef\chapter@affiliationthree{}%
\gdef\chapter@authorfour{}\gdef\chapter@affiliationfour{}%
+ \gdef\chapter@authorfive{}\gdef\chapter@affiliationfive{}%
+ \gdef\chapter@authorsix{}\gdef\chapter@affiliationsix{}%
\vskip 14.6\p@
{\leftskip\secnumwidth\def\author##1##2{}\@input{\thechapter.toc}\par}%
}
%
\newif\iffinishedfromfour
\global\finishedfromfourfalse
+%
+\newif\iffinishedfromfive
+\global\finishedfromfivefalse
+%
+\newif\iffinishedfromsix
+\global\finishedfromsixfalse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\newcommand\singleauthorchapter{\finishedfromonetrue}
\newcommand\twoauthorchapter{\finishedfromtwotrue}
\newcommand\threeauthorchapter{\finishedfromthreetrue}
\newcommand\fourauthorchapter{\finishedfromfourtrue}
+\newcommand\fiveauthorchapter{\finishedfromfivetrue}
+\newcommand\sixauthorchapter{\finishedfromsixtrue}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\iffinish
\newsavebox\@AUtwobox
\newsavebox\@AUthreebox
\newsavebox\@AUfourbox
+\newsavebox\@AUfivebox
+\newsavebox\@AUsixbox
%
\newsavebox\@AUaffonebox
\newsavebox\@AUafftwobox
\newsavebox\@AUaffthreebox
\newsavebox\@AUafffourbox
+\newsavebox\@AUafffivebox
+\newsavebox\@AUaffsixbox
%
\newsavebox\@finalAUboxfromone
\newsavebox\@finalAUboxfromtwo
\newsavebox\@finalAUboxfromthree
\newsavebox\@finalAUboxfromfour
+\newsavebox\@finalAUboxfromfive
+\newsavebox\@finalAUboxfromsix
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\@ca#1#2{%
\fi
%%%%%%%%%%%%%%%
-\ifnum\c@numauthors>4
+\ifnum\c@numauthors>6
+ %\setcounter{numauthors}{0}
\resetcounter{numauthors}
\fi
\stepcounter{numauthors}
\sbox\@finalAUboxfromfour{\copy\@AUfourbox}
\def\chapter@authorfour{\copy\@finalAUboxfromfour}
\def\chapter@affiliationfour{\copy\@AUafffourbox}
-\fi}
+\fi \ifnum\c@numauthors=5
+ \sbox\@AUfivebox{\CAPlusOneFont#1}
+ \sbox\@AUafffivebox{\vbox{\hsize\textwidth\CAAPlusOneFont\noindent #2\par}}
+ \sbox\@finalAUboxfromfive{\copy\@AUfivebox}
+ \def\chapter@authorfive{\copy\@finalAUboxfromfive}
+ \def\chapter@affiliationfive{\copy\@AUafffivebox}
+\fi \ifnum\c@numauthors=6
+ \sbox\@AUsixbox{\CAPlusOneFont#1}
+ \sbox\@AUaffsixbox{\vbox{\hsize\textwidth\CAAPlusOneFont\noindent #2\par}}
+ \sbox\@finalAUboxfromsix{\copy\@AUsixbox}
+ \def\chapter@authorsix{\copy\@finalAUboxfromsix}
+ \def\chapter@affiliationsix{\copy\@AUaffsixbox}
+\fi
+}
\def\@caplusone{\@ifstar{\@scaplusone}{\@ifnextchar[{\@xcaplusone}{\@xcaplusone[]}}}
\endinput
%%
%% End of file `sunil.cls'.
-\0\0\0\0\0\0\0\0\0
\ No newline at end of file
+\0\0\0\0\0\0\0\0\0