\relax 
\providecommand*{\memsetcounter}[2]{}
\catcode`:\active
\catcode`;\active
\catcode`!\active
\catcode`?\active
\@writefile{toc}{\changetocdepth  {2}}
\select@language{french}
\@writefile{toc}{\select@language{french}}
\@writefile{lof}{\select@language{french}}
\@writefile{lot}{\select@language{french}}
\select@language{french}
\@writefile{toc}{\select@language{french}}
\@writefile{lof}{\select@language{french}}
\@writefile{lot}{\select@language{french}}
\select@language{french}
\@writefile{toc}{\select@language{french}}
\@writefile{lof}{\select@language{french}}
\@writefile{lot}{\select@language{french}}
\select@language{english}
\@writefile{toc}{\select@language{english}}
\@writefile{lof}{\select@language{english}}
\@writefile{lot}{\select@language{english}}
\@writefile{toc}{\contentsline {chapter}{Contents}{ix}}
\select@language{french}
\@writefile{toc}{\select@language{french}}
\@writefile{lof}{\select@language{french}}
\@writefile{lot}{\select@language{french}}
\citation{MathematicsNature}
\citation{DataEffectiveness}
\citation{FourthParadigm}
\citation{MapReduceForTextMining}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {1}Introduction}{1}}
\newlabel{chap:intro}{{\M@TitleReference {1}{Introduction}}{1}}
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Contexte scientifique}{1}}
\citation{MapReduce2008}
\citation{WebSiteMonitoring}
\citation{MapReduceForTextMining}
\citation{BridgingModel}
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Contexte de la th\`ese}{3}}
\citation{Condor}
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Pr\'esentation des travaux}{6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}Chapitre 2 - Introduction au Cloud Computing}{6}}
\citation{SCOPE}
\citation{Dryad2007}
\citation{DryadLINQ}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}Chapitre 3 - Introduction \`a Azure}{7}}
\citation{AzureStorage}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.3}Chapitre 4 - \'El\'ements de conception logicielle sur le cloud}{8}}
\citation{BiauKMeans}
\citation{KMeansIsNPhard}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.4}Chapitre 5 - Algorithmes de Batch K-Means r\'epartis}{9}}
\citation{DhillonModha2000}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.5}Chapitre 6 - Consid\'erations pratiques pour les algorithmes de Vector Quantization r\'epartis}{10}}
\citation{BottouBengioKMeans}
\citation{SlowLearners}
\citation{DekelShamir}
\citation{LOU1}
\citation{DekelShamir}
\citation{SlowLearners}
\citation{LOU1}
\citation{SlowLearners}
\citation{DekelShamir}
\citation{LOU1}
\citation{DekelShamir}
\citation{SlowLearners}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.6}Chapitre 7 - Impl\'ementation cloud d'un algorithme de Vector Quantization r\'eparti et asynchrone}{12}}
\@writefile{toc}{\contentsline {section}{\numberline {1.4}R\'esum\'e des contributions}{13}}
\select@language{english}
\@writefile{toc}{\select@language{english}}
\@writefile{lof}{\select@language{english}}
\@writefile{lot}{\select@language{english}}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {2}Presentation of Cloud Computing}{15}}
\newlabel{chap:cloudpres}{{\M@TitleReference {2}{Presentation of Cloud Computing}}{15}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Introduction}{15}}
\citation{AboveTheCloud}
\citation{CloudSurvey}
\citation{CloudInvestment}
\citation{Drepper}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Origins of Cloud Computing}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}HPC and commodity hardware computing}{18}}
\citation{Condor}
\citation{grid5000}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Grid Computing}{19}}
\newlabel{grid}{{\M@TitleReference {2.2.2}{Grid Computing}}{19}}
\citation{freenet}
\citation{BOINC}
\citation{folding@home}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.3}Emergence of Cloud Computing}{20}}
\newlabel{cloudEmergence}{{\M@TitleReference {2.2.3}{Emergence of Cloud Computing}}{20}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Cloud design and performance targets}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Differences between Cloud Computing and Grid Computing}{21}}
\newlabel{gridvsCloud}{{\M@TitleReference {2.3.1}{Differences between Cloud Computing and Grid Computing}}{21}}
\citation{BenchmarkingCloudServices}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}Everything-as-a-Service (XAAS)}{23}}
\newlabel{xaas}{{\M@TitleReference {2.3.2}{Everything-as-a-Service (XAAS)}}{23}}
\citation{CloudAutomation}
\citation{CloudCost}
\citation{CloudCost}
\citation{CloudCost}
\citation{CloudAutomation}
\citation{lenk2009witcaamotcl}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.3}Technology stacks}{25}}
\newlabel{technoStack}{{\M@TitleReference {2.3.3}{Technology stacks}}{25}}
\@writefile{toc}{\contentsline {subsubsection}{Hardware technologies}{25}}
\citation{CloudCost}
\citation{DatacentersDesign}
\@writefile{toc}{\contentsline {subsubsection}{Software technologies}{26}}
\citation{GoogleFileSystem}
\citation{bigtable}
\citation{MapReduce2004}
\citation{sawzall}
\citation{Hadoop}
\citation{piglatin}
\citation{piglatin}
\citation{AmazonBusiness}
\citation{AzureStorage}
\citation{Dryad2007}
\citation{LokadCloud}
\citation{LokadCQRS}
\citation{DryadLINQ}
\citation{SCOPE}
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Cloud Storage level}{28}}
\newlabel{nosqlParagraph}{{\M@TitleReference {2.4}{Cloud Storage level}}{28}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Illustration of the Google, Hadoop and Microsoft technology stacks for cloud applications building. For each stack, the DSL Level, the Execution Level and the Storage Level are detailed. In this scheme, SQL is also described as a stack in which the three levels are merged together and cannot be used independently.}}{29}}
\newlabel{fig:StorageExecutionAndDsLevel}{{\M@TitleReference {2.1}{Illustration of the Google, Hadoop and Microsoft technology stacks for cloud applications building. For each stack, the DSL Level, the Execution Level and the Storage Level are detailed. In this scheme, SQL is also described as a stack in which the three levels are merged together and cannot be used independently.}}{29}}
\citation{CAP_Theorem}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}Relational storage and ACID properties}{30}}
\newlabel{acid}{{\M@TitleReference {2.4.1}{Relational storage and ACID properties}}{30}}
\newlabel{sql_listing}{{\M@TitleReference {2.1}{Relational storage and ACID properties}}{30}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2.1}a SQL query sample}{30}}
\citation{CAP_Theorem}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}CAP Theorem and the No-SQL positioning}{31}}
\newlabel{Cap_theorem_section}{{\M@TitleReference {2.4.2}{CAP Theorem and the No-SQL positioning}}{31}}
\citation{TwoPhaseCommitProtocol}
\citation{AzureStorage}
\citation{CLAP}
\citation{NoSQLmeansNoAcid}
\citation{Eventually_Consistent}
\citation{BASE}
\citation{CloudConsistency}
\citation{NoSQL}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.3}Cloud Storage Taxonomy}{33}}
\newlabel{sec_taxonomy}{{\M@TitleReference {2.4.3}{Cloud Storage Taxonomy}}{33}}
\citation{MapReduce2004}
\citation{Hadoop}
\citation{CloudMapReduce2010}
\citation{MapReduce2004}
\citation{Helland}
\citation{Hadoop}
\citation{MapReduceForTextMining}
\citation{MapReduceForMachineLearning}
\@writefile{toc}{\contentsline {section}{\numberline {2.5}Cloud Execution Level}{34}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.1}MapReduce}{34}}
\newlabel{MapReduceSection}{{\M@TitleReference {2.5.1}{MapReduce}}{34}}
\@writefile{toc}{\contentsline {subsubsection}{General context}{34}}
\citation{Helland}
\@writefile{toc}{\contentsline {subsubsection}{Programming Model}{35}}
\@writefile{toc}{\contentsline {subsubsection}{Technical considerations}{35}}
\newlabel{sec_MapreduceConsiderations}{{\M@TitleReference {2.5.1}{Technical considerations}}{35}}
\citation{MapReduceForTextMining}
\citation{MapReduce2004}
\citation{MapReduce2008}
\citation{MapReduce2004}
\citation{MapReduce2004}
\citation{TeraSortWinnerYahoo}
\citation{MapReduce2008}
\@writefile{toc}{\contentsline {subsubsection}{MapReduce performance}{37}}
\newlabel{sec_MapReducePerformance}{{\M@TitleReference {2.5.1}{MapReduce performance}}{37}}
\@writefile{toc}{\contentsline {subsubsection}{Recent criticisms of the MapReduce framework for machine-learning}{37}}
\newlabel{MapReduceCriticism}{{\M@TitleReference {2.5.1}{Recent criticisms of the MapReduce framework for machine-learning}}{37}}
\citation{Graphlab2010}
\citation{Dryad2007}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.2}GraphLab}{39}}
\citation{DryadLINQ}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.3}Dryad and DryadLINQ}{40}}
\newlabel{cloud_dryad}{{\M@TitleReference {2.5.3}{Dryad and DryadLINQ}}{40}}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {3}Presentation of Azure}{43}}
\newlabel{chap:azurepres}{{\M@TitleReference {3}{Presentation of Azure}}{43}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Introduction}{43}}
\citation{AzureStorage}
\citation{Dryad2007}
\citation{DryadLINQ}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Windows Azure Compute}{45}}
\newlabel{sec_AzureCompute}{{\M@TitleReference {3.2}{Windows Azure Compute}}{45}}
\citation{AzureStorage}
\citation{AzureStorage}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Windows Azure Storage}{47}}
\newlabel{azure_storage}{{\M@TitleReference {3.3}{Windows Azure Storage}}{47}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}WAS components}{47}}
\@writefile{toc}{\contentsline {subsubsection}{Azure BlobStorage}{48}}
\@writefile{toc}{\contentsline {subsubsection}{Azure TableStorage}{49}}
\newlabel{azure_TableStorage}{{\M@TitleReference {3.3.1}{Azure TableStorage}}{49}}
\citation{AzureStorageResources}
\@writefile{toc}{\contentsline {subsubsection}{Azure QueueStorage}{50}}
\@writefile{toc}{\contentsline {subsubsection}{Synchronization Primitives}{50}}
\newlabel{sec_SynchroPrimitives}{{\M@TitleReference {3.3.1}{Synchronization Primitives}}{50}}
\citation{AMP}
\@writefile{toc}{\contentsline {subsubsection}{Partitions, Load-Balancing and multi-items transactionality}{51}}
\newlabel{partition_name}{{\M@TitleReference {3.3.1}{Partitions, Load-Balancing and multi-items transactionality}}{51}}
\citation{AzureStorage}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Elements of internal architecture}{52}}
\newlabel{internal_architecture}{{\M@TitleReference {3.3.2}{Elements of internal architecture}}{52}}
\citation{AzureStorage}
\citation{AzureStorage}
\@writefile{toc}{\contentsline {subsubsection}{Storage stamps}{53}}
\@writefile{toc}{\contentsline {subsubsection}{Front End Layer}{53}}
\citation{AzureStorage}
\@writefile{toc}{\contentsline {subsubsection}{Partition Layer}{54}}
\@writefile{toc}{\contentsline {subsubsection}{Stream Layer}{54}}
\newlabel{sec_StreamLayer}{{\M@TitleReference {3.3.2}{Stream Layer}}{54}}
\citation{AzureStorage}
\@writefile{toc}{\contentsline {subsubsection}{Extent replication and strong consistency}{55}}
\newlabel{extent_replication}{{\M@TitleReference {3.3.2}{Extent replication and strong consistency}}{55}}
\citation{AzureStorage}
\citation{Early_Observations_On_Azure}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}BlobStorage or TableStorage}{56}}
\citation{Azure_Pricing}
\citation{BenchmarkingCloudServices}
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Azure Performances}{57}}
\newlabel{azure_performance}{{\M@TitleReference {3.4}{Azure Performances}}{57}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}Performance Tradeoffs, Azure Positionning}{57}}
\citation{AsyncAPI}
\citation{BenchmarkingCloudServices}
\citation{The_Impact_Of_Virtualization}
\citation{BenchmarkingAmazonEC2}
\citation{Early_Observations_On_Azure}
\citation{AzureScope}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.2}Benchmarks}{59}}
\newlabel{sec_AzureBenchmark}{{\M@TitleReference {3.4.2}{Benchmarks}}{59}}
\citation{Early_Observations_On_Azure}
\citation{Drepper}
\@writefile{toc}{\contentsline {subsubsection}{Bandwidth between the storage and the role instances}{60}}
\citation{Early_Observations_On_Azure}
\citation{Early_Observations_On_Azure}
\@writefile{toc}{\contentsline {subsubsection}{Workers Flops performances}{61}}
\@writefile{toc}{\contentsline {subsubsection}{Personal notes}{61}}
\newlabel{sec_PersonalNotes}{{\M@TitleReference {3.4.2}{Personal notes}}{61}}
\citation{Early_Observations_On_Azure}
\citation{AppDomainTrick}
\citation{AzurePricingCalculator}
\citation{AzurePricingDetails}
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Prices}{63}}
\newlabel{azure_prices}{{\M@TitleReference {3.5}{Prices}}{63}}
\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Compute instance price details provided by Microsoft on April 2012. \newline  \texttt  {\relax \fontsize  {9}{10}\selectfont  {http://www.windowsazure.com/en-us/pricing/details/}}.}}{63}}
\newlabel{table:azureTarifs}{{\M@TitleReference {3.1}{Compute instance price details provided by Microsoft on April 2012. \newline  \texttt  {\relax \fontsize  {9}{10}\selectfont  {http://www.windowsazure.com/en-us/pricing/details/}}.}}{63}}
\citation{AmazonBusiness}
\citation{Helland}
\citation{CloudDP}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {4}Elements of cloud architectural design pattern}{65}}
\newlabel{chap:conceptionCloud}{{\M@TitleReference {4}{Elements of cloud architectural design pattern}}{65}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Introduction}{65}}
\citation{Early_Observations_On_Azure}
\citation{AzureScope}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Communications}{67}}
\newlabel{sec_DPCommunications}{{\M@TitleReference {4.2}{Communications}}{67}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Lack of MPI}{67}}
\citation{CloudMarinescu}
\citation{MpiEc2}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Azure Storage and the shared memory abstraction}{68}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Workers Communication}{69}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.4}Azure AppFabric Caching service}{69}}
\newlabel{sec_AzureCaching}{{\M@TitleReference {4.2.4}{Azure AppFabric Caching service}}{69}}
\citation{MapReduce2004}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Applications Architecture}{70}}
\newlabel{sec_DPArchitecture}{{\M@TitleReference {4.3}{Applications Architecture}}{70}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Jobs are split into tasks stored in queues}{70}}
\newlabel{sec_JobsAndTasks}{{\M@TitleReference {4.3.1}{Jobs are split into tasks stored in queues}}{70}}
\citation{MapReduce2004}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Azure does not provide affinity between workers and storage}{71}}
\newlabel{sec_WorkersAffinity}{{\M@TitleReference {4.3.2}{Azure does not provide affinity between workers and storage}}{71}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}Workers are at first task agnostic and stateless}{71}}
\newlabel{sec_WorkersStateless}{{\M@TitleReference {4.3.3}{Workers are at first task agnostic and stateless}}{71}}
\@writefile{toc}{\contentsline {section}{\numberline {4.4}Scaling and performance}{72}}
\newlabel{sec_DPScaling}{{\M@TitleReference {4.4}{Scaling and performance}}{72}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}Scaling up or down is a developer initiative}{72}}
\citation{Early_Observations_On_Azure}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}The exact number of available workers is uncertain}{73}}
\newlabel{sec_WorkersCount}{{\M@TitleReference {4.4.2}{The exact number of available workers is uncertain}}{73}}
\citation{LooseSynchronization}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.3}The choice of Synchronism versus Asynchronism is about simplicity over performance}{74}}
\newlabel{sec_SynchronismAsynchronism}{{\M@TitleReference {4.4.3}{The choice of Synchronism versus Asynchronism is about simplicity over performance}}{74}}
\citation{Helland}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.4}Task granularity balances I/O costs with scalability}{75}}
\@writefile{toc}{\contentsline {section}{\numberline {4.5}Additional design patterns}{75}}
\newlabel{sec_DPAdditional}{{\M@TitleReference {4.5}{Additional design patterns}}{75}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.1}Idempotence}{75}}
\newlabel{sec_idempotence}{{\M@TitleReference {4.5.1}{Idempotence}}{75}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Multiple scenarii of message processing that impact the BlobStorage}}{76}}
\newlabel{fig:idempotence}{{\M@TitleReference {4.1}{Multiple scenarii of message processing that impact the BlobStorage}}{76}}
\citation{Helland}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.2}Queues size usage}{77}}
\newlabel{sec_QueueSize}{{\M@TitleReference {4.5.2}{Queues size usage}}{77}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.3}Atomicity in the BlobStorage}{77}}
\newlabel{blobStorage_atomicity}{{\M@TitleReference {4.5.3}{Atomicity in the BlobStorage}}{77}}
\citation{Spolsky_LeakyAbstractions}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.4}Lokad-Cloud}{78}}
\newlabel{sec_LokadCloud}{{\M@TitleReference {4.5.4}{Lokad-Cloud}}{78}}
\citation{AMP}
\citation{HotSpot}
\citation{Goodman89efficientsynchronization}
\citation{Herlihy95scalableconcurrent}
\citation{AMP}
\citation{ShardingCounters}
\@writefile{toc}{\contentsline {section}{\numberline {4.6}The counter primitive}{79}}
\newlabel{sec_Counters}{{\M@TitleReference {4.6}{The counter primitive}}{79}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.1}Motivation}{79}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.2}Sharded Counters}{79}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.3}BitTreeCounter}{80}}
\newlabel{sec_BitTreeCounter}{{\M@TitleReference {4.6.3}{BitTreeCounter}}{80}}
\newlabel{eq_biph}{{\M@TitleReference {4.1}{BitTreeCounter}}{81}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Distribution scheme of our BitTreeCounter. In the current situation, the tasks $\{3, 12, 18, 23\}$ are not yet completed. The bit arrays of the corresponding leaves ($N(0,3)$, $N(3,3)$ and$ N(5,3)$) are therefore not yet filled with $0$. When the task $23$ will be completed, the node $N(5,3)$ will be updated accordingly. Since its bit array will then become filled with $0$, the node $N(2,2)$ will then be updated, which will in turn lead to the update of node $N(0,1)$. Once the tasks $\{3, 12, 18, 23\}$ are completed, the root node $N(0,1)$ will be filled with $0$ and the BitTreeCounter then returns true to lift the synchronization barrier.}}{82}}
\newlabel{fig:bitTreeCounter}{{\M@TitleReference {4.2}{Distribution scheme of our BitTreeCounter. In the current situation, the tasks $\{3, 12, 18, 23\}$ are not yet completed. The bit arrays of the corresponding leaves ($N(0,3)$, $N(3,3)$ and$ N(5,3)$) are therefore not yet filled with $0$. When the task $23$ will be completed, the node $N(5,3)$ will be updated accordingly. Since its bit array will then become filled with $0$, the node $N(2,2)$ will then be updated, which will in turn lead to the update of node $N(0,1)$. Once the tasks $\{3, 12, 18, 23\}$ are completed, the root node $N(0,1)$ will be filled with $0$ and the BitTreeCounter then returns true to lift the synchronization barrier.}}{82}}
\citation{Hennig99}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {5}Distributed Batch K-Means}{83}}
\newlabel{chap:KMeans}{{\M@TitleReference {5}{Distributed Batch K-Means}}{83}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Introduction to clustering and distributed Batch K-Means}{83}}
\citation{KMeansIsNPhard}
\citation{DataClusteringReview}
\citation{ParallelMiningAssociationRules}
\citation{DhillonModha2000}
\citation{ScalableParallelClassifier}
\citation{DhillonModha2000}
\citation{DhillonModha2000}
\citation{KMeansJoshi}
\citation{KMeansIsNPhard}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Sequential K-Means}{86}}
\newlabel{Sequential K-Means Algorithm Section}{{\M@TitleReference {5.2}{Sequential K-Means}}{86}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}Batch K-Means algorithm}{86}}
\newlabel{eq:EmpiricalDistortion}{{\M@TitleReference {5.2.1}{Batch K-Means algorithm}}{86}}
\citation{KMeansSlow}
\citation{BottouBengioKMeans}
\citation{BRA1}
\citation{DhillonModha2000}
\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Sequential Batch K-Means}}{87}}
\newlabel{algo_SequentialKMeans}{{\M@TitleReference {1}{Batch K-Means algorithm}}{87}}
\citation{Drepper}
\citation{DhillonModha2000}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}Complexity cost}{88}}
\newlabel{sequential KMeans cost}{{\M@TitleReference {5.2.2}{Complexity cost}}{88}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}Distributed K-Means Algorithm on SMP and DMM architectures}{88}}
\newlabel{Distributed K-Means Algorithm Section}{{\M@TitleReference {5.3}{Distributed K-Means Algorithm on SMP and DMM architectures}}{88}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Distribution scheme}{88}}
\newlabel{sec_KMeans_SMP_Algo}{{\M@TitleReference {5.3.1}{Distribution scheme}}{88}}
\newlabel{Synchronous Distributed K-Means Cost}{{\M@TitleReference {5.1}{Distribution scheme}}{89}}
\newlabel{eq_TMComp}{{\M@TitleReference {5.2}{Distribution scheme}}{89}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces Distributed Batch K-Means on SMP architectures}}{90}}
\newlabel{algo_SMP_Distributed_KMeans}{{\M@TitleReference {2}{Distribution scheme}}{90}}
\citation{MPI1996}
\citation{PVM}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}Communication costs in SMP architectures}{91}}
\newlabel{eq_SMP_Cost}{{\M@TitleReference {5.3}{Communication costs in SMP architectures}}{91}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}Communication costs in DMM architectures}{91}}
\newlabel{sec_DMMCosts}{{\M@TitleReference {5.3.3}{Communication costs in DMM architectures}}{91}}
\citation{DhillonModha2000}
\citation{KMeansJoshi}
\citation{DhillonModha2000}
\citation{DhillonModha2000}
\citation{MPI_performance}
\citation{DhillonModha2000}
\citation{MPI_performance}
\citation{MPI_performance_measurements}
\newlabel{eq_Dhillon}{{\M@TitleReference {5.4}{Communication costs in DMM architectures}}{92}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.4}Modeling of real communication costs}{93}}
\newlabel{section_InDepthMpiCosts}{{\M@TitleReference {5.3.4}{Modeling of real communication costs}}{93}}
\citation{DhillonModha2000}
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces This non-realistic scheme of the merging prototype logic highlights the tree structure of many MPI primitives. To begin with, the first worker sends a data chunk to the second worker, while the third worker sends simultaneously its data chunk to the fourth worker. A second step follows the first one in which the merging result of the first and second workers are sent to the fourth worker that already owns the merging result of the third and fourth workers. In two steps, the data chunks of the four workers are merged. }}{94}}
\newlabel{fig_MPI_Tree}{{\M@TitleReference {5.1}{This non-realistic scheme of the merging prototype logic highlights the tree structure of many MPI primitives. To begin with, the first worker sends a data chunk to the second worker, while the third worker sends simultaneously its data chunk to the fourth worker. A second step follows the first one in which the merging result of the first and second workers are sent to the fourth worker that already owns the merging result of the third and fourth workers. In two steps, the data chunks of the four workers are merged. }}{94}}
\newlabel{SpeedupFormula}{{\M@TitleReference {5.6}{Modeling of real communication costs}}{95}}
\newlabel{eq_MStar_DMM}{{\M@TitleReference {5.10}{Modeling of real communication costs}}{95}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.5}Comments}{95}}
\newlabel{sec_DMM_Comments}{{\M@TitleReference {5.3.5}{Comments}}{95}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.6}Bandwidth Condition}{96}}
\newlabel{DMM1 GeneralCase}{{\M@TitleReference {5.3.6}{Bandwidth Condition}}{96}}
\newlabel{DMM2 GeneralCase}{{\M@TitleReference {5.11}{Bandwidth Condition}}{96}}
\newlabel{DMM3 GeneralCase}{{\M@TitleReference {5.12}{Bandwidth Condition}}{96}}
\citation{DhillonModha2000}
\citation{HPS_2}
\citation{HPS_1}
\citation{HPS_1}
\citation{DhillonModha2000}
\citation{DhillonModha2000}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.7}Dhillon and Modha case study}{97}}
\newlabel{sec_Dhillon_Experiments}{{\M@TitleReference {5.3.7}{Dhillon and Modha case study}}{97}}
\citation{DhillonModha2000}
\citation{AppDomainTrick}
\citation{MapReduce2004}
\citation{Dryad2007}
\citation{CloudMapReduce2010}
\citation{Graphlab2010}
\@writefile{toc}{\contentsline {section}{\numberline {5.4}Implementing Distributed Batch K-Means on Azure}{98}}
\newlabel{sec_KMeans_Azure}{{\M@TitleReference {5.4}{Implementing Distributed Batch K-Means on Azure}}{98}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}Recall of some Azure specificities}{98}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}The cloud Batch K-Means algorithm}{99}}
\newlabel{sec_CloudKMeans_Algorithm}{{\M@TitleReference {5.4.2}{The cloud Batch K-Means algorithm}}{99}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Distribution scheme of our cloud-distributed Batch K-Means. The communications between workers are conveyed through the BlobStorage. The recalculation phase is a two-step process run by the partial reducers and the final reducer to reduce I/O contention.}}{100}}
\newlabel{fig_CloudKMeans}{{\M@TitleReference {5.2}{Distribution scheme of our cloud-distributed Batch K-Means. The communications between workers are conveyed through the BlobStorage. The recalculation phase is a two-step process run by the partial reducers and the final reducer to reduce I/O contention.}}{100}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Distributed Cloud Batch K-Means : Mapper}}{101}}
\newlabel{algo_CloudKMeansMapper}{{\M@TitleReference {3}{The cloud Batch K-Means algorithm}}{101}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces Distributed Cloud Batch K-Means : Partial Reducer}}{102}}
\newlabel{algo_CloudKMeansPartialReducer}{{\M@TitleReference {4}{The cloud Batch K-Means algorithm}}{102}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces Distributed Cloud Batch K-Means : Final Reducer}}{102}}
\newlabel{algo_CloudKMeansFinalReducer}{{\M@TitleReference {5}{The cloud Batch K-Means algorithm}}{102}}
\citation{DhillonModha2000}
\citation{DhillonModha2000}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}Comments on the algorithm }{104}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.4}Optimizing the number of processing units}{105}}
\newlabel{eq_CloudKMeansSpeedUp}{{\M@TitleReference {5.13}{Optimizing the number of processing units}}{107}}
\newlabel{eq_MStar}{{\M@TitleReference {5.16}{Optimizing the number of processing units}}{108}}
\@writefile{toc}{\contentsline {section}{\numberline {5.5}Experimental results}{108}}
\newlabel{sec_Cloud_KMeans_Results}{{\M@TitleReference {5.5}{Experimental results}}{108}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.1}Azure base performances}{108}}
\newlabel{sec_AzureBasePerformances}{{\M@TitleReference {5.5.1}{Azure base performances}}{108}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.2}The two-step reduce architecture benchmark}{109}}
\newlabel{sec_AggregatedBandwidth}{{\M@TitleReference {5.5.2}{The two-step reduce architecture benchmark}}{109}}
\@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces Evaluation of the communication throughput per machine and of the time spent in the recalculation phase for different number of communicating units $M$.}}{109}}
\newlabel{table:azureThroughput}{{\M@TitleReference {5.1}{Evaluation of the communication throughput per machine and of the time spent in the recalculation phase for different number of communicating units $M$.}}{109}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces  Time to execute the Reduce phase per unit of memory ($2T_{Blob}^{read} + T_{Blob}^{write}$) in $~10^{-7}$sec/Byte in function of the number of communicating units.}}{110}}
\newlabel{fig:BandwidthReduce}{{\M@TitleReference {5.3}{ Time to execute the Reduce phase per unit of memory ($2T_{Blob}^{read} + T_{Blob}^{write}$) in $~10^{-7}$sec/Byte in function of the number of communicating units.}}{110}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.3}Experimental settings}{110}}
\newlabel{sec_KMeans_Cloud_Settings}{{\M@TitleReference {5.5.3}{Experimental settings}}{110}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.4}Speedup}{111}}
\@writefile{lot}{\contentsline {table}{\numberline {5.2}{\ignorespaces Evaluation of our distributed K-Means speedup and efficiency for different number of processing units $M$.}}{112}}
\newlabel{table:speedupAchieved1}{{\M@TitleReference {5.2}{Evaluation of our distributed K-Means speedup and efficiency for different number of processing units $M$.}}{112}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.5}Optimal number of processing units and scale-up}{112}}
\newlabel{sec_ScaleUp}{{\M@TitleReference {5.5.5}{Optimal number of processing units and scale-up}}{112}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces Charts of speedup performance curves for our cloud Batch K-Means implementation with different data set size. For a given size $N$, the speedup grows with the number of processing units until $M^{*}$, then the speedup slowly decreases.}}{113}}
\newlabel{fig_KMeansCloudScaleup1}{{\M@TitleReference {5.4}{Charts of speedup performance curves for our cloud Batch K-Means implementation with different data set size. For a given size $N$, the speedup grows with the number of processing units until $M^{*}$, then the speedup slowly decreases.}}{113}}
\@writefile{lot}{\contentsline {table}{\numberline {5.3}{\ignorespaces Comparison between the effective optimal number of processing units $M^{*}_{eff}$ and the theoretical optimal number of processing units $M^{*}$ for different data set size.}}{113}}
\newlabel{table:speedupAchieved1}{{\M@TitleReference {5.3}{Comparison between the effective optimal number of processing units $M^{*}_{eff}$ and the theoretical optimal number of processing units $M^{*}$ for different data set size.}}{113}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Charts of speedup performance curves for our cloud Batch K-Means implementation with different number of processing units. For each value of $M$, the value of $N$ is set accordingly so that the processing units are heavy loaded with data and computations. When the number of processing units grows, the communication costs increase and the spread between the obtained speedup and the theoretical optimal speedup increases.}}{114}}
\newlabel{fig_KMeansCloudScaleup2}{{\M@TitleReference {5.5}{Charts of speedup performance curves for our cloud Batch K-Means implementation with different number of processing units. For each value of $M$, the value of $N$ is set accordingly so that the processing units are heavy loaded with data and computations. When the number of processing units grows, the communication costs increase and the spread between the obtained speedup and the theoretical optimal speedup increases.}}{114}}
\citation{MapReduce2004}
\citation{StragglerIssuesInMapReduce}
\@writefile{lof}{\contentsline {figure}{\numberline {5.6}{\ignorespaces Distribution of the processing time (in second) for multiple runs of the same computation task for a single VM. As expected, the distribution is concentrated around a specific value.}}{115}}
\newlabel{fig_StragglerSingleDistribution}{{\M@TitleReference {5.6}{Distribution of the processing time (in second) for multiple runs of the same computation task for a single VM. As expected, the distribution is concentrated around a specific value.}}{115}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5.6}Straggler issues}{115}}
\newlabel{sec_StragglerIssues}{{\M@TitleReference {5.5.6}{Straggler issues}}{115}}
\citation{MapReduce2004}
\citation{MapReduce2004}
\@writefile{lof}{\contentsline {figure}{\numberline {5.7}{\ignorespaces Distribution of the processing time (in second) for multiple runs of the same computation task for multiple VM. One can note the ``3 modes'' distribution and outliers (tasks run in much more time).}}{116}}
\newlabel{fig_StragglerDistribution}{{\M@TitleReference {5.7}{Distribution of the processing time (in second) for multiple runs of the same computation task for multiple VM. One can note the ``3 modes'' distribution and outliers (tasks run in much more time).}}{116}}
\citation{Graphlab2010}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {6}Practical implementations of distributed asynchronous vector quantization algorithms}{119}}
\newlabel{chap:practicalDALVQ}{{\M@TitleReference {6}{Practical implementations of distributed asynchronous vector quantization algorithms}}{119}}
\@writefile{toc}{\contentsline {section}{\numberline {6.1}Introduction}{119}}
\newlabel{sec:intro}{{\M@TitleReference {6.1}{Introduction}}{119}}
\citation{PAG1}
\citation{BEN1}
\citation{BBL}
\citation{SlowLearners}
\citation{LOU1}
\citation{LAN2}
\citation{MapReduce2004}
\citation{DekelShamir}
\citation{DekelShamir}
\citation{PET1}
\citation{MIL1}
\citation{BRA1}
\citation{MIR1}
\citation{SlowLearners}
\citation{BBL}
\citation{BOT5}
\citation{BOT6}
\@writefile{toc}{\contentsline {section}{\numberline {6.2}The sequential Vector Quantization algorithm}{121}}
\newlabel{sec:sequentialVQ}{{\M@TitleReference {6.2}{The sequential Vector Quantization algorithm}}{121}}
\citation{GER1}
\citation{BER3}
\citation{BottouBengioKMeans}
\citation{Lloyd}
\citation{KOH1}
\citation{MacQueen}
\citation{BottouBengioKMeans}
\citation{PatraDALVQ}
\citation{PAG1}
\newlabel{eq:EmpiricalDistortion}{{\M@TitleReference {6.1}{The sequential Vector Quantization algorithm}}{122}}
\newlabel{def:defH}{{\M@TitleReference {6.2}{The sequential Vector Quantization algorithm}}{122}}
\newlabel{eq:finiteSample}{{\M@TitleReference {6.2}{The sequential Vector Quantization algorithm}}{122}}
\citation{ABR}
\citation{ROS1}
\@writefile{loa}{\contentsline {algorithm}{\numberline {6}{\ignorespaces Sequential VQ algorithm}}{123}}
\newlabel{algo_SequentialVQ}{{\M@TitleReference {6}{The sequential Vector Quantization algorithm}}{123}}
\@writefile{toc}{\contentsline {section}{\numberline {6.3}Synthetic functional data}{123}}
\newlabel{sec:dataGenerator}{{\M@TitleReference {6.3}{Synthetic functional data}}{123}}
\citation{DEB1}
\citation{DEB}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}$B$-spline functions}{124}}
\citation{GRE}
\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Plots of the six basic cubic $B$-spline functions with ten uniform knots: $x_0 =0, \ldots  , x_9 =9$ ($n =3$, $\chi =10$).}}{125}}
\newlabel{fig:BasicBSplines}{{\M@TitleReference {6.1}{Plots of the six basic cubic $B$-spline functions with ten uniform knots: $x_0 =0, \ldots  , x_9 =9$ ($n =3$, $\chi =10$).}}{125}}
\newlabel{eq:Bspline}{{\M@TitleReference {6.3}{$B$-spline functions}}{125}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}$B$-splines mixtures random generators}{125}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces Plot of a cubic $B$-spline, a linear combination of the basic $B$-splines plotted in Figure \ref  {fig:BasicBSplines}}}{126}}
\newlabel{fig:BSplines}{{\M@TitleReference {6.2}{Plot of a cubic $B$-spline, a linear combination of the basic $B$-splines plotted in Figure \ref  {fig:BasicBSplines}}}{126}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces Plot of four splines centers with orthogonal coefficients: $\overline  {B}_1, \ldots  , \overline  {B}_4$ where $G = 1500$, $d=1500$, $\chi = 50$, $sc =10$.}}{127}}
\newlabel{fig:Centers}{{\M@TitleReference {6.3}{Plot of four splines centers with orthogonal coefficients: $\overline  {B}_1, \ldots  , \overline  {B}_4$ where $G = 1500$, $d=1500$, $\chi = 50$, $sc =10$.}}{127}}
\newlabel{eq:randomVariable}{{\M@TitleReference {6.4}{$B$-splines mixtures random generators}}{127}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.4}{\ignorespaces Plot of two independent realizations of the random variable $\textbf  {Z}$ defined by equation \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:randomVariable}\unskip \@@italiccorr )}}: $\overline  {B_1}, \ldots  , \overline  {B_4}$ where $G = 1500$, $d=1500$, $\chi = 50$, $sc =10$.}}{127}}
\newlabel{fig:data}{{\M@TitleReference {6.4}{Plot of two independent realizations of the random variable $\textbf  {Z}$ defined by equation \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:randomVariable}\unskip \@@italiccorr )}}: $\overline  {B_1}, \ldots  , \overline  {B_4}$ where $G = 1500$, $d=1500$, $\chi = 50$, $sc =10$.}}{127}}
\@writefile{toc}{\contentsline {section}{\numberline {6.4}VQ parallelization scheme}{127}}
\newlabel{sec:parallelGradient}{{\M@TitleReference {6.4}{VQ parallelization scheme}}{127}}
\citation{PatraDALVQ}
\newlabel{eq:empiricalDisto}{{\M@TitleReference {6.5}{VQ parallelization scheme}}{128}}
\citation{TSI1}
\citation{PatraDALVQ}
\citation{DekelShamir}
\citation{DekelShamir}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}A first parallel implementation}{129}}
\newlabel{eq:averaging}{{\M@TitleReference {6.6}{A first parallel implementation}}{129}}
\citation{PatraDALVQ}
\citation{PatraDALVQ}
\@writefile{lof}{\contentsline {figure}{\numberline {6.5}{\ignorespaces Illustration of the parallelization scheme of VQ procedures described by equations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:averaging}\unskip \@@italiccorr )}}. The prototypes versions are synchronized every $\tau $ points.}}{130}}
\newlabel{fig:illustrationParallel}{{\M@TitleReference {6.5}{Illustration of the parallelization scheme of VQ procedures described by equations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:averaging}\unskip \@@italiccorr )}}. The prototypes versions are synchronized every $\tau $ points.}}{130}}
\citation{Pollard}
\citation{BiauKMeans}
\citation{PatraDALVQ}
\citation{KUS1}
\citation{BEN1}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}Towards a better parallelization scheme}{131}}
\newlabel{subsec:gradients}{{\M@TitleReference {6.4.2}{Towards a better parallelization scheme}}{131}}
\newlabel{eq:iteration}{{\M@TitleReference {6.7}{Towards a better parallelization scheme}}{131}}
\newlabel{eq:iteration2}{{\M@TitleReference {6.8}{Towards a better parallelization scheme}}{131}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.6}{\ignorespaces Charts of performance curves for iterations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:averaging}\unskip \@@italiccorr )}} with different numbers of computing entities: $M=1,2,10$. The three charts correspond to different values of $\tau $ which is the integer that characterizes the frequency of the averaging phase ($\tau =1,10,100$).}}{132}}
\newlabel{fig:parallel}{{\M@TitleReference {6.6}{Charts of performance curves for iterations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:averaging}\unskip \@@italiccorr )}} with different numbers of computing entities: $M=1,2,10$. The three charts correspond to different values of $\tau $ which is the integer that characterizes the frequency of the averaging phase ($\tau =1,10,100$).}}{132}}
\newlabel{eq:displacement}{{\M@TitleReference {6.4.2}{Towards a better parallelization scheme}}{133}}
\newlabel{eq:iteration3}{{\M@TitleReference {6.9}{Towards a better parallelization scheme}}{133}}
\citation{PatraDALVQ}
\newlabel{eq:correctAveraging}{{\M@TitleReference {6.10}{Towards a better parallelization scheme}}{134}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.7}{\ignorespaces Illustration of the parallelization scheme of VQ procedures described by equations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:correctAveraging}\unskip \@@italiccorr )}}.}}{134}}
\newlabel{fig:illustrationGradient}{{\M@TitleReference {6.7}{Illustration of the parallelization scheme of VQ procedures described by equations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:correctAveraging}\unskip \@@italiccorr )}}.}}{134}}
\citation{SlowLearners}
\citation{DekelShamir}
\citation{SlowLearners}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}A parallelization scheme with communication delays.}{135}}
\newlabel{eq:delayedAveraging}{{\M@TitleReference {6.11}{A parallelization scheme with communication delays.}}{135}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.8}{\ignorespaces Charts of performance curves for iterations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:correctAveraging}\unskip \@@italiccorr )}} with different numbers of computing entities, $M=1,2,10$. The three charts correspond to different values of $\tau $ ($\tau =1,10,100$).}}{136}}
\newlabel{fig:correctedParallel}{{\M@TitleReference {6.8}{Charts of performance curves for iterations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:correctAveraging}\unskip \@@italiccorr )}} with different numbers of computing entities, $M=1,2,10$. The three charts correspond to different values of $\tau $ ($\tau =1,10,100$).}}{136}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.9}{\ignorespaces Illustration of the parallelization scheme described by equations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:delayedAveraging}\unskip \@@italiccorr )}}. The reducing phase is only drawn for processor $1$ where $t=2\tau $ and processor $4$ where $t=4\tau $.}}{137}}
\newlabel{fig:delayedAveraging}{{\M@TitleReference {6.9}{Illustration of the parallelization scheme described by equations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:delayedAveraging}\unskip \@@italiccorr )}}. The reducing phase is only drawn for processor $1$ where $t=2\tau $ and processor $4$ where $t=4\tau $.}}{137}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.10}{\ignorespaces Charts of performance curves for iterations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:delayedAveraging}\unskip \@@italiccorr )}} with different numbers of computing entities, $M=1,2,10$. The three charts correspond to different values of $\tau $ ($\tau =1,10,100$).}}{138}}
\newlabel{fig:delayedParallel}{{\M@TitleReference {6.10}{Charts of performance curves for iterations \textup  {\hbox {\mathsurround \z@ \normalfont  (\ignorespaces \ref  {eq:delayedAveraging}\unskip \@@italiccorr )}} with different numbers of computing entities, $M=1,2,10$. The three charts correspond to different values of $\tau $ ($\tau =1,10,100$).}}{138}}
\citation{BBL}
\citation{DekelShamir}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.4}Comments}{139}}
\citation{AsynchronismGPU}
\citation{AsynchronousHeterogeneousClusters}
\citation{AsynchronousMultiThreads}
\citation{TSI1}
\citation{PatraDALVQ}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\chapternumberline {7}A cloud implementation of distributed asynchronous vector quantization algorithms}{141}}
\newlabel{chap:cloudDALVQ}{{\M@TitleReference {7}{A cloud implementation of distributed asynchronous vector quantization algorithms}}{141}}
\@writefile{toc}{\contentsline {section}{\numberline {7.1}Introduction}{141}}
\citation{BatchVsOnline2}
\citation{TSI1}
\citation{PatraDALVQ}
\citation{BatchVsOnline}
\@writefile{toc}{\contentsline {section}{\numberline {7.2}The implementation of cloud DAVQ algorithm}{143}}
\newlabel{sec:cloudDALVQImpl}{{\M@TitleReference {7.2}{The implementation of cloud DAVQ algorithm}}{143}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.1}Design of the algorithm}{143}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.1}{\ignorespaces Overview of the interaction between ProcessService instances and the instance of ReduceService. All the communications are made through the BlobStorage: ReduceService gets the blobs put by the ProcessService instances while they retrieve the computation of the ReduceService.}}{144}}
\newlabel{fig:cloudOverview}{{\M@TitleReference {7.1}{Overview of the interaction between ProcessService instances and the instance of ReduceService. All the communications are made through the BlobStorage: ReduceService gets the blobs put by the ProcessService instances while they retrieve the computation of the ReduceService.}}{144}}
\citation{FRE1}
\@writefile{lof}{\contentsline {figure}{\numberline {7.2}{\ignorespaces Overview of the ReduceService instance processing the ``reducing task''. This QueueService builds the shared version by computing the sum of all the available displacement terms sent by the ProcessService instances in the BlobStorage.}}{145}}
\newlabel{fig:reduceservice}{{\M@TitleReference {7.2}{Overview of the ReduceService instance processing the ``reducing task''. This QueueService builds the shared version by computing the sum of all the available displacement terms sent by the ProcessService instances in the BlobStorage.}}{145}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.2}Design of the evaluation process}{146}}
\newlabel{subsec:evaluation}{{\M@TitleReference {7.2.2}{Design of the evaluation process}}{146}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.3}{\ignorespaces Overview of the ProcessService. Each triangle stands for a specific thread (process thread, push thread and pull thread). The arrows describe read/write actions: the tail of a blue dashed arrow is read by the entity at its head and the entity at the tail of a red solid arrow makes update on the entity that lies at its head. The push thread and the pull thread enable communications between the process thread and the BlobStorage. The process thread alternatively performs three actions (process action $1,2,3$). Process action 1 replaces the local version of the prototypes by the sum of the latest shared version (kept in the read buffer) and a displacement term. Process action 2 uses data to execute VQ iterations and updates both the local version and the displacement term. Process action 3 moves the displacement term to a dedicated buffer (write buffer) and pushes its content to the BlobStorage.}}{147}}
\newlabel{fig:processService}{{\M@TitleReference {7.3}{Overview of the ProcessService. Each triangle stands for a specific thread (process thread, push thread and pull thread). The arrows describe read/write actions: the tail of a blue dashed arrow is read by the entity at its head and the entity at the tail of a red solid arrow makes update on the entity that lies at its head. The push thread and the pull thread enable communications between the process thread and the BlobStorage. The process thread alternatively performs three actions (process action $1,2,3$). Process action 1 replaces the local version of the prototypes by the sum of the latest shared version (kept in the read buffer) and a displacement term. Process action 2 uses data to execute VQ iterations and updates both the local version and the displacement term. Process action 3 moves the displacement term to a dedicated buffer (write buffer) and pushes its content to the BlobStorage.}}{147}}
\@writefile{toc}{\contentsline {section}{\numberline {7.3}Scalability of our cloud DAVQ algorithm}{148}}
\newlabel{sec:scalabilityCloudDALVQ}{{\M@TitleReference {7.3}{Scalability of our cloud DAVQ algorithm}}{148}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}Speedup with a 1-layer Reduce}{148}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.4}{\ignorespaces Normalized quantization curves with $M=1,2,4,8,16$. Our cloud DAVQ algorithm has good scalability properties up to $M=8$ instances of the ProcessService. Troubles appear with $M=16$ because the ReduceService is overloaded.}}{149}}
\newlabel{fig:onelayer}{{\M@TitleReference {7.4}{Normalized quantization curves with $M=1,2,4,8,16$. Our cloud DAVQ algorithm has good scalability properties up to $M=8$ instances of the ProcessService. Troubles appear with $M=16$ because the ReduceService is overloaded.}}{149}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Speedup with a 2-layer Reduce}{149}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.3}Scalability}{150}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.5}{\ignorespaces Normalized quantization curves with $M=8,16,32,64$ instances of ProcessService and with an extra layer for the so called ``reducing task''. Our cloud DAVQ algorithm has good scalability properties for the quantization performance up to $M=32$. However, the algorithm behaves badly when the number of computing instances is raised to $M=64$.}}{151}}
\newlabel{fig:twolayer}{{\M@TitleReference {7.5}{Normalized quantization curves with $M=8,16,32,64$ instances of ProcessService and with an extra layer for the so called ``reducing task''. Our cloud DAVQ algorithm has good scalability properties for the quantization performance up to $M=32$. However, the algorithm behaves badly when the number of computing instances is raised to $M=64$.}}{151}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.6}{\ignorespaces Overview of the reducing procedures with two layers: \newline  the PartialReduceService and the FinalReduceService.}}{151}}
\newlabel{fig:ReduceServiceTwoLayers}{{\M@TitleReference {7.6}{Overview of the reducing procedures with two layers: \newline  the PartialReduceService and the FinalReduceService.}}{151}}
\citation{BatchVsOnline}
\citation{BatchVsOnline2}
\citation{BottouBengioKMeans}
\@writefile{toc}{\contentsline {section}{\numberline {7.4}Competition with Batch K-Means}{152}}
\newlabel{sec:fightbatch}{{\M@TitleReference {7.4}{Competition with Batch K-Means}}{152}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.7}{\ignorespaces These charts plot the number of points processed as time goes by. The top chart shows the curves associated to $M=1,2,4,8$ with one layer for the reducing task whereas at the bottom a second layer is added and $M=8,16,32,64$.}}{153}}
\newlabel{fig:pointsprocessed}{{\M@TitleReference {7.7}{These charts plot the number of points processed as time goes by. The top chart shows the curves associated to $M=1,2,4,8$ with one layer for the reducing task whereas at the bottom a second layer is added and $M=8,16,32,64$.}}{153}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.8}{\ignorespaces This chart plots the number of points processed in a given time span ($3600$ seconds) for different values of $M$ ($M=1,2,4,8,16,32,64$). The reducing task is composed of one layer for $M=1,2,4$ and two layers for $M=8,16,32,64$. We can observe a linear scalability in terms of point processed by the system up to $M=64$ computing instances.}}{154}}
\newlabel{fig:durutgraph}{{\M@TitleReference {7.8}{This chart plots the number of points processed in a given time span ($3600$ seconds) for different values of $M$ ($M=1,2,4,8,16,32,64$). The reducing task is composed of one layer for $M=1,2,4$ and two layers for $M=8,16,32,64$. We can observe a linear scalability in terms of point processed by the system up to $M=64$ computing instances.}}{154}}
\@writefile{lof}{\contentsline {figure}{\numberline {7.9}{\ignorespaces These charts report on the competition between our cloud DAVQ algorithm and the cloud Batch K-Means. The graphs show the empirical distortion of the algorithm over the time. The empirical distortion is computed using the shared version for our cloud DAVQ algorithm while it is computed during the synchronization phase (all mappers receiving the same prototypes) for the cloud Batch K-Means. In these experiments the cloud DAVQ algorithm outperforms the cloud Batch K-Means: the same quantization level is obtained within a shorter period.}}{155}}
\newlabel{fig:fightthebatch}{{\M@TitleReference {7.9}{These charts report on the competition between our cloud DAVQ algorithm and the cloud Batch K-Means. The graphs show the empirical distortion of the algorithm over the time. The empirical distortion is computed using the shared version for our cloud DAVQ algorithm while it is computed during the synchronization phase (all mappers receiving the same prototypes) for the cloud Batch K-Means. In these experiments the cloud DAVQ algorithm outperforms the cloud Batch K-Means: the same quantization level is obtained within a shorter period.}}{155}}
\@writefile{lot}{\contentsline {table}{\numberline {7.1}{\ignorespaces Evolution of the empirical distortion for distributed Batch K-Means and our VQ algorithm. The tables report how much time Batch K-Means requires to complete a specific number of iteration, and how much time it takes to our DAVQ implementation to achieve the same level of empirical distortion.}}{156}}
\newlabel{table:speedupAchieved1}{{\M@TitleReference {7.1}{Evolution of the empirical distortion for distributed Batch K-Means and our VQ algorithm. The tables report how much time Batch K-Means requires to complete a specific number of iteration, and how much time it takes to our DAVQ implementation to achieve the same level of empirical distortion.}}{156}}
\select@language{french}
\@writefile{toc}{\select@language{french}}
\@writefile{lof}{\select@language{french}}
\@writefile{lot}{\select@language{french}}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{Conclusion}{157}}
\newlabel{chap:Conclusion}{{\M@TitleReference {7.4}{Conclusion}}{157}}
\@writefile{toc}{\contentsline {section}{De l'utilisation du PaaS comme plateforme de calcul intensif}{157}}
\@writefile{toc}{\contentsline {subsection}{Constat technique}{157}}
\@writefile{toc}{\contentsline {subsection}{Constat \'economique}{159}}
\@writefile{toc}{\contentsline {section}{Impl\'ementation d'algorithmes de clustering r\'epartis}{161}}
\@writefile{toc}{\contentsline {subsection}{Cloud Batch K-Means}{161}}
\citation{LOU1}
\citation{Delalleau_Bengio_2007}
\citation{Delalleau_Bengio_2007}
\citation{BBL}
\@writefile{toc}{\contentsline {subsection}{Cloud DAVQ}{162}}
\citation{TSI1}
\citation{PatraDALVQ}
\citation{DekelShamir}
\citation{DekelShamir}
\citation{DekelShamir}
\citation{Nesterov}
\@writefile{lof}{\addvspace {10pt}}
\@writefile{lot}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{Perspectives}{165}}
\newlabel{chap:Perspectives}{{\M@TitleReference {7.4}{Perspectives}}{165}}
\select@language{english}
\@writefile{toc}{\select@language{english}}
\@writefile{lof}{\select@language{english}}
\@writefile{lot}{\select@language{english}}
\@writefile{toc}{\contentsline {chapter}{List of Figures}{167}}
\@writefile{toc}{\contentsline {chapter}{List of Tables}{171}}
\bibstyle{plain}
\bibdata{../../biblio/biblio}
\bibcite{AmazonBusiness}{1}
\bibcite{AppDomainTrick}{2}
\bibcite{Azure_Pricing}{3}
\bibcite{AzurePricingCalculator}{4}
\bibcite{AzurePricingDetails}{5}
\bibcite{AzureScope}{6}
\bibcite{AzureStorageResources}{7}
\bibcite{CloudSurvey}{8}
\bibcite{NoSQL}{9}
\bibcite{Spolsky_LeakyAbstractions}{10}
\bibcite{LokadCloud}{11}
\bibcite{LokadCQRS}{12}
\bibcite{CloudInvestment}{13}
\@writefile{toc}{\contentsline {chapter}{Bibliography}{173}}
\bibcite{MpiEc2}{14}
\bibcite{NoSQLmeansNoAcid}{15}
\bibcite{AsyncAPI}{16}
\bibcite{WebSiteMonitoring}{17}
\bibcite{DatacentersDesign}{18}
\bibcite{CLAP}{19}
\bibcite{HPS_1}{20}
\bibcite{ABR}{21}
\bibcite{ParallelMiningAssociationRules}{22}
\bibcite{LooseSynchronization}{23}
\bibcite{BOINC}{24}
\bibcite{AboveTheCloud}{25}
\bibcite{KMeansSlow}{26}
\bibcite{AsynchronousHeterogeneousClusters}{27}
\bibcite{BBL}{28}
\bibcite{BEN1}{29}
\bibcite{BER3}{30}
\bibcite{BiauKMeans}{31}
\bibcite{BottouBengioKMeans}{32}
\bibcite{BOT5}{33}
\bibcite{BOT6}{34}
\bibcite{BRA1}{35}
\bibcite{AzureStorage}{36}
\bibcite{grid5000}{37}
\bibcite{SCOPE}{38}
\bibcite{bigtable}{39}
\bibcite{MapReduceForMachineLearning}{40}
\bibcite{freenet}{41}
\bibcite{AsynchronismGPU}{42}
\bibcite{BenchmarkingCloudServices}{43}
\bibcite{CloudDP}{44}
\bibcite{DEB}{45}
\bibcite{DEB1}{46}
\bibcite{MapReduce2004}{47}
\bibcite{MapReduce2008}{48}
\bibcite{DekelShamir}{49}
\bibcite{Delalleau_Bengio_2007}{50}
\bibcite{DhillonModha2000}{51}
\bibcite{Drepper}{52}
\bibcite{BatchVsOnline2}{53}
\bibcite{FRE1}{54}
\bibcite{GER1}{55}
\bibcite{GoogleFileSystem}{56}
\bibcite{CAP_Theorem}{57}
\bibcite{Goodman89efficientsynchronization}{58}
\bibcite{CloudCost}{59}
\bibcite{ShardingCounters}{60}
\bibcite{GRE}{61}
\bibcite{MPI_performance_measurements}{62}
\bibcite{DataEffectiveness}{63}
\bibcite{Helland}{64}
\bibcite{Hennig99}{65}
\bibcite{Herlihy95scalableconcurrent}{66}
\bibcite{AMP}{67}
\bibcite{FourthParadigm}{68}
\bibcite{Early_Observations_On_Azure}{69}
\bibcite{MPI_performance}{70}
\bibcite{AsynchronousMultiThreads}{71}
\bibcite{CloudAutomation}{72}
\bibcite{Dryad2007}{73}
\bibcite{DataClusteringReview}{74}
\bibcite{KMeansJoshi}{75}
\bibcite{KOH1}{76}
\bibcite{KUS1}{77}
\bibcite{folding@home}{78}
\bibcite{lenk2009witcaamotcl}{79}
\bibcite{StragglerIssuesInMapReduce}{80}
\bibcite{MapReduceForTextMining}{81}
\bibcite{CloudMapReduce2010}{82}
\bibcite{Lloyd}{83}
\bibcite{LOU1}{84}
\bibcite{Graphlab2010}{85}
\bibcite{MacQueen}{86}
\bibcite{KMeansIsNPhard}{87}
\bibcite{CloudMarinescu}{88}
\bibcite{MIL1}{89}
\bibcite{MIR1}{90}
\bibcite{Nesterov}{91}
\bibcite{TeraSortWinnerYahoo}{92}
\bibcite{piglatin}{93}
\bibcite{PAG1}{94}
\bibcite{PatraDALVQ}{95}
\bibcite{PET1}{96}
\bibcite{sawzall}{97}
\bibcite{Pollard}{98}
\bibcite{BASE}{99}
\bibcite{TwoPhaseCommitProtocol}{100}
\bibcite{ROS1}{101}
\bibcite{ScalableParallelClassifier}{102}
\bibcite{MPI1996}{103}
\bibcite{PVM}{104}
\bibcite{Condor}{105}
\bibcite{TSI1}{106}
\bibcite{BridgingModel}{107}
\bibcite{Eventually_Consistent}{108}
\bibcite{CloudConsistency}{109}
\bibcite{BenchmarkingAmazonEC2}{110}
\bibcite{The_Impact_Of_Virtualization}{111}
\bibcite{Hadoop}{112}
\bibcite{MathematicsNature}{113}
\bibcite{BatchVsOnline}{114}
\bibcite{HotSpot}{115}
\bibcite{DryadLINQ}{116}
\bibcite{HPS_2}{117}
\bibcite{SlowLearners}{118}
\bibcite{LAN2}{119}
\memsetcounter{lastsheet}{194}
\memsetcounter{lastpage}{182}
