Changes in / [f4fe7fd:ed49dbd]
- Location:
- doc
- Files:
-
- 5 edited
-
LaTeXmacros/common.tex (modified) (3 diffs)
-
theses/mubeen_zulfiqar_MMath/allocator.tex (modified) (1 diff)
-
theses/mubeen_zulfiqar_MMath/benchmarks.tex (modified) (2 diffs)
-
theses/mubeen_zulfiqar_MMath/performance.tex (modified) (44 diffs)
-
theses/mubeen_zulfiqar_MMath/uw-ethesis.bib (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/LaTeXmacros/common.tex
rf4fe7fd red49dbd 11 11 %% Created On : Sat Apr 9 10:06:17 2016 12 12 %% Last Modified By : Peter A. Buhr 13 %% Last Modified On : Tue Apr 26 16:02:48202214 %% Update Count : 55 813 %% Last Modified On : Sat Apr 2 16:42:31 2022 14 %% Update Count : 553 15 15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 16 … … 30 30 \setlist[itemize,1]{label=\textbullet}% local 31 31 %\renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}} 32 \setlist[enumerate]{ topsep=0.5ex,parsep=0.25ex,itemsep=0.25ex,listparindent=\parindent}% global32 \setlist[enumerate]{listparindent=\parindent}% global 33 33 \setlist[enumerate,2]{leftmargin=\parindent,labelsep=*,align=parleft,label=\alph*.}% local 34 34 \setlist[description]{topsep=0.5ex,itemsep=0pt,listparindent=\parindent,leftmargin=\parindent,labelsep=1.5ex} … … 247 247 \renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}} 248 248 \newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}} 249 \newcommand{\VRefrange}[3][Sections]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vrefrange{#2}{#3}}250 249 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}} 251 \newcommand{\VPagerefrange}[3][pages]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}{#3}}252 250 253 251 \let\Oldthebibliography\thebibliography -
doc/theses/mubeen_zulfiqar_MMath/allocator.tex
rf4fe7fd red49dbd 1 1 \chapter{Allocator} 2 \label{c:Allocator}3 2 4 3 This chapter presents a new stand-alone concurrent low-latency memory-allocator ($\approx$1,200 lines of code), called llheap (low-latency heap), for C/\CC programs using kernel threads (1:1 threading), and specialized versions of the allocator for the programming languages \uC and \CFA using user-level threads running over multiple kernel threads (M:N threading). -
doc/theses/mubeen_zulfiqar_MMath/benchmarks.tex
rf4fe7fd red49dbd 69 69 70 70 The following new benchmarks were created to assess multi-threaded programs at the KT and UT level. 71 For generating random values, two generators are supported: uniform~\cite{uniformPRNG} and fisher~\cite{fisherPRNG}.72 71 73 72 … … 80 79 81 80 \VRef[Figure]{fig:ChurnBenchFig} shows the pseudo code for the churn micro-benchmark. 82 This benchmark creates a buffer with M spots and an allocation in each spot, and thenstarts K threads.81 This benchmark creates a buffer with M spots and starts K threads. 83 82 Each thread picks a random spot in M, frees the object currently at that spot, and allocates a new object for that spot. 84 83 Each thread repeats this cycle N times. -
doc/theses/mubeen_zulfiqar_MMath/performance.tex
rf4fe7fd red49dbd 8 8 \section{Machine Specification} 9 9 10 The performance experiments were run on two different multi-core architectures (x 64and ARM) to determine if there is consistency across platforms:10 The performance experiments were run on two different multi-core architectures (x86 and ARM) to determine if there is consistency across platforms: 11 11 \begin{itemize} 12 12 \item … … 21 21 22 22 With dynamic allocation being an important feature of C, there are many stand-alone memory allocators that have been designed for different purposes. 23 For this thesis, 7 of the most popular and widely used memory allocators were selected for comparison, along with llheap. 24 25 \paragraph{llheap (\textsf{llh})} 26 is the thread-safe allocator from \VRef[Chapter]{c:Allocator} 27 \\ 28 \textbf{Version:} 1.0 29 \textbf{Configuration:} Compiled with dynamic linking, but without statistics or debugging.\\ 30 \textbf{Compilation command:} @make@ 31 32 \paragraph{glibc (\textsf{glc})} 33 \cite{glibc} is the default gcc thread-safe allocator. 23 For this thesis, 7 of the most popular and widely used memory allocators were selected for comparison. 24 25 \subsection{glibc} 26 glibc~\cite{glibc} is the default gcc thread-safe allocator. 34 27 \\ 35 28 \textbf{Version:} Ubuntu GLIBC 2.31-0ubuntu9.7 2.31\\ … … 37 30 \textbf{Compilation command:} N/A 38 31 39 \ paragraph{dlmalloc (\textsf{dl})}40 \cite{dlmalloc} is a thread-safe allocator that is single threaded and single heap.32 \subsection{dlmalloc} 33 dlmalloc~\cite{dlmalloc} is a thread-safe allocator that is single threaded and single heap. 41 34 It maintains free-lists of different sizes to store freed dynamic memory. 42 35 \\ … … 45 38 \textbf{Compilation command:} @gcc -g3 -O3 -Wall -Wextra -fno-builtin-malloc -fno-builtin-calloc@ @-fno-builtin-realloc -fno-builtin-free -fPIC -shared -DUSE_LOCKS -o libdlmalloc.so malloc-2.8.6.c@ 46 39 47 \ paragraph{hoard (\textsf{hrd})}48 \cite{hoard} is a thread-safe allocator that is multi-threaded and using a heap layer framework. It has per-thread heaps that have thread-local free-lists, and a global shared heap.40 \subsection{hoard} 41 Hoard~\cite{hoard} is a thread-safe allocator that is multi-threaded and using a heap layer framework. It has per-thread heaps that have thread-local free-lists, and a global shared heap. 49 42 \\ 50 43 \textbf{Version:} 3.13\\ … … 52 45 \textbf{Compilation command:} @make all@ 53 46 54 \paragraph{jemalloc (\textsf{je})} 55 \cite{jemalloc} is a thread-safe allocator that uses multiple arenas. Each thread is assigned an arena. 56 Each arena has chunks that contain contagious memory regions of same size. An arena has multiple chunks that contain regions of multiple sizes. 47 \subsection{jemalloc} 48 jemalloc~\cite{jemalloc} is a thread-safe allocator that uses multiple arenas. Each thread is assigned an arena. Each arena has chunks that contain contagious memory regions of same size. An arena has multiple chunks that contain regions of multiple sizes. 57 49 \\ 58 50 \textbf{Version:} 5.2.1\\ … … 60 52 \textbf{Compilation command:} @autogen.sh; configure; make; make install@ 61 53 62 \paragraph{pt3malloc (\textsf{pt3})} 63 \cite{pt3malloc} is a modification of dlmalloc. 64 It is a thread-safe multi-threaded memory allocator that uses multiple heaps. 65 pt3malloc heap has similar design to dlmalloc's heap. 54 \subsection{pt3malloc} 55 pt3malloc~\cite{pt3malloc} is a modification of dlmalloc. 56 It is a thread-safe multi-threaded memory allocator that uses multiple heaps. pt3malloc heap has similar design to dlmalloc's heap. 66 57 \\ 67 58 \textbf{Version:} 1.8\\ … … 69 60 \textbf{Compilation command:} @make linux-shared@ 70 61 71 \paragraph{rpmalloc (\textsf{rp})} 72 \cite{rpmalloc} is a thread-safe allocator that is multi-threaded and uses per-thread heap. 73 Each heap has multiple size-classes and each size-class contains memory regions of the relevant size. 62 \subsection{rpmalloc} 63 rpmalloc~\cite{rpmalloc} is a thread-safe allocator that is multi-threaded and uses per-thread heap. Each heap has multiple size-classes and each size-class contains memory regions of the relevant size. 74 64 \\ 75 65 \textbf{Version:} 1.4.1\\ … … 77 67 \textbf{Compilation command:} @python3 configure.py; ninja@ 78 68 79 \ paragraph{tbb malloc (\textsf{tbb})}80 \cite{tbbmalloc} is a thread-safe allocator that is multi-threaded and uses private heap for each thread. 81 Each private-heap has multiple bins of different sizes. Each bin contains free regions of the same size.69 \subsection{tbb malloc} 70 tbb malloc~\cite{tbbmallocmail 71 } is a thread-safe allocator that is multi-threaded and uses private heap for each thread. Each private-heap has multiple bins of different sizes. Each bin contains free regions of the same size. 82 72 \\ 83 73 \textbf{Version:} intel tbb 2020 update 2, tbb\_interface\_version == 11102\\ … … 89 79 90 80 \section{Experiments} 91 92 The each micro-benchmark is configured and run with each of the allocators, 93 The less time an allocator takes to complete a benchmark the better, so lower in the graphs is better. 81 % FIX ME: add experiment, knobs, graphs, description+analysis 94 82 95 83 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 127 115 128 116 \VRef[Figure]{fig:churn} shows the results for algol and nasus. 129 The X-axis shows the number of threads; 130 the Y-axis shows the total experiment time. 117 The X-axis shows the number of threads. 131 118 Each allocator's performance for each thread is shown in different colors. 132 133 \begin{figure} 134 \centering 135 \subfigure[Algol]{ \includegraphics[width=0.95\textwidth]{evaluations/algol-perf-eps/churn} } 136 \subfigure[Nasus]{ \includegraphics[width=0.95\textwidth]{evaluations/nasus-perf-eps/churn} } 119 The Y-axis shows the total experiment time. 120 121 \begin{figure} 122 \centering 123 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/churn} } 124 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/churn} } 137 125 \caption{Churn} 138 126 \label{fig:churn} 139 127 \end{figure} 140 128 141 All allocators did well in this micro-benchmark, except for \textsf{dl} on the ARM. 142 llheap is slightly slower because it uses ownership, where many of the allocations have remote frees, which requires locking. 143 When llheap is compiled without ownership, its performance is the same as the other allocators (not shown). 129 All allocators did well in this micro-benchmark, except for dmalloc on the ARM, 144 130 145 131 … … 151 137 152 138 Thrash tests memory allocators for active false sharing (see \VRef{sec:benchThrashSec}). 139 This experiment was run with following configurations: 140 \begin{description}[itemsep=0pt,parsep=0pt] 141 \item[thread:] 142 1, 2, 4, 8, 16 143 \item[iterations:] 144 1,000 145 \item[cacheRW:] 146 1,000,000 147 \item[size:] 148 1 149 \end{description} 150 151 % * Each allocator was tested for its performance across different number of threads. 152 % Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN. 153 154 Results are shown in figure \ref{fig:cacheThrash} for both algol and nasus. 155 X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors. 156 Y-axis shows the total time experiment took to finish. 157 158 \begin{figure} 159 \centering 160 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/cache-time-0-thrash} } 161 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/cache-time-0-thrash} } 162 \caption{Cache Thrash} 163 \label{fig:cacheThrash} 164 \end{figure} 165 166 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 167 %% SCRATCH 168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 169 170 \subsection{Cache Scratch} 171 \label{s:CacheScratch} 172 173 Scratch tests memory allocators for program-induced allocator-preserved passive false-sharing. 153 174 This experiment was run with following configurations: 154 175 \begin{description}[itemsep=0pt,parsep=0pt] … … 166 187 % Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN. 167 188 168 \VRef[Figure]{fig:cacheThrash} shows the results for algol and nasus. 169 The X-axis shows the number of threads; 170 the Y-axis shows the total experiment time. 171 Each allocator's performance for each thread is shown in different colors. 172 173 \begin{figure} 174 \centering 175 \subfigure[Algol]{ \includegraphics[width=0.95\textwidth]{evaluations/algol-perf-eps/cache-time-0-thrash} } 176 \subfigure[Nasus]{ \includegraphics[width=0.95\textwidth]{evaluations/nasus-perf-eps/cache-time-0-thrash} } 177 \caption{Cache Thrash} 178 \label{fig:cacheThrash} 179 \end{figure} 180 181 All allocators did well in this micro-benchmark, except for \textsf{dl} and \textsf{pt3} on the x64. 182 Either the memory allocators generate little active false-sharing or the micro-benchmark is not generating scenarios that cause active false-sharing. 183 184 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 185 %% SCRATCH 186 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 187 188 \subsection{Cache Scratch} 189 190 Scratch tests memory allocators for program-induced allocator-preserved passive false-sharing (see \VRef{s:CacheScratch}). 191 This experiment was run with following configurations: 192 \begin{description}[itemsep=0pt,parsep=0pt] 193 \item[threads:] 194 1, 2, 4, 8, 16 195 \item[iterations:] 196 1,000 197 \item[cacheRW:] 198 1,000,000 199 \item[size:] 200 1 201 \end{description} 202 203 % * Each allocator was tested for its performance across different number of threads. 204 % Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN. 205 206 \VRef[Figure]{fig:cacheScratch} shows the results for algol and nasus. 207 The X-axis shows the number of threads; 208 the Y-axis shows the total experiment time. 209 Each allocator's performance for each thread is shown in different colors. 210 211 \begin{figure} 212 \centering 213 \subfigure[Algol]{ \includegraphics[width=0.95\textwidth]{evaluations/algol-perf-eps/cache-time-0-scratch} } 214 \subfigure[Nasus]{ \includegraphics[width=0.95\textwidth]{evaluations/nasus-perf-eps/cache-time-0-scratch} } 189 Results are shown in figure \ref{fig:cacheScratch} for both algol and nasus. 190 X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors. 191 Y-axis shows the total time experiment took to finish. 192 193 \begin{figure} 194 \centering 195 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/cache-time-0-scratch} } 196 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/cache-time-0-scratch} } 215 197 \caption{Cache Scratch} 216 198 \label{fig:cacheScratch} 217 199 \end{figure} 218 200 219 All allocators did well in this micro-benchmark on the ARM.220 Allocators \textsf{llh}, \textsf{je}, and \textsf{rp} did well on the x64, while the remaining allocators experienced significant slowdowns from the false sharing.221 222 201 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 223 202 %% SPEED … … 226 205 \subsection{Speed Micro-Benchmark} 227 206 228 Speed test smemory allocators for runtime latency (see \VRef{s:SpeedMicroBenchmark}).207 Speed testa memory allocators for runtime latency (see \VRef{s:SpeedMicroBenchmark}). 229 208 This experiment was run with following configurations: 230 209 \begin{description}[itemsep=0pt,parsep=0pt] … … 253 232 %Experiment was repeated for each allocator for 1, 2, 4, 8, and 16 threads by setting the configuration -threadN. 254 233 255 \VRefrange[Figures]{fig:speed-3-malloc}{fig:speed-14-malloc-calloc-realloc-free} show 12 figures, one figure for each chain of the speed benchmark. 256 The X-axis shows the number of threads; 257 the Y-axis shows the total experiment time. 258 Each allocator's performance for each thread is shown in different colors. 234 Results for speed benchmark are shown in 12 figures, one figure for each chain of speed benchmark. 235 X-axis shows number of threads. Each allocator's performance for each thread is shown in different colors. 236 Y-axis shows the total time experiment took to finish. Less time an allocator takes to complete allocation, better it is so lower the better. 259 237 260 238 \begin{itemize} 261 \item \VRef[Figure]{fig:speed-3-malloc} shows results for chain: malloc262 \item \VRef[Figure]{fig:speed-4-realloc} shows results for chain: realloc263 \item \VRef[Figure]{fig:speed-5-free} shows results for chain: free264 \item \VRef[Figure]{fig:speed-6-calloc} shows results for chain: calloc265 \item \VRef[Figure]{fig:speed-7-malloc-free} shows results for chain: malloc-free266 \item \VRef[Figure]{fig:speed-8-realloc-free} shows results for chain: realloc-free267 \item \VRef[Figure]{fig:speed-9-calloc-free} shows results for chain: calloc-free268 \item \VRef[Figure]{fig:speed-10-malloc-realloc} shows results for chain: malloc-realloc269 \item \VRef[Figure]{fig:speed-11-calloc-realloc} shows results for chain: calloc-realloc270 \item \VRef[Figure]{fig:speed-12-malloc-realloc-free} shows results for chain: malloc-realloc-free271 \item \VRef[Figure]{fig:speed-13-calloc-realloc-free} shows results for chain: calloc-realloc-free272 \item \VRef[Figure]{fig:speed-14-malloc-calloc-realloc-free} shows results for chain: malloc-realloc-free-calloc239 \item Fig. \ref{fig:speed-3-malloc} shows results for chain: malloc 240 \item Fig. \ref{fig:speed-4-realloc} shows results for chain: realloc 241 \item Fig. \ref{fig:speed-5-free} shows results for chain: free 242 \item Fig. \ref{fig:speed-6-calloc} shows results for chain: calloc 243 \item Fig. \ref{fig:speed-7-malloc-free} shows results for chain: malloc-free 244 \item Fig. \ref{fig:speed-8-realloc-free} shows results for chain: realloc-free 245 \item Fig. \ref{fig:speed-9-calloc-free} shows results for chain: calloc-free 246 \item Fig. \ref{fig:speed-10-malloc-realloc} shows results for chain: malloc-realloc 247 \item Fig. \ref{fig:speed-11-calloc-realloc} shows results for chain: calloc-realloc 248 \item Fig. \ref{fig:speed-12-malloc-realloc-free} shows results for chain: malloc-realloc-free 249 \item Fig. \ref{fig:speed-13-calloc-realloc-free} shows results for chain: calloc-realloc-free 250 \item Fig. \ref{fig:speed-14-malloc-calloc-realloc-free} shows results for chain: malloc-realloc-free-calloc 273 251 \end{itemize} 274 252 275 All allocators did well in this micro-benchmark across all allocation chains, except for \textsf{dl} and \textsf{pt3}.276 277 253 %speed-3-malloc.eps 278 254 \begin{figure} 279 255 \centering 280 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-3-malloc} }281 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-3-malloc} }256 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-3-malloc} } 257 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-3-malloc} } 282 258 \caption{Speed benchmark chain: malloc} 283 259 \label{fig:speed-3-malloc} … … 287 263 \begin{figure} 288 264 \centering 289 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-4-realloc} }290 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-4-realloc} }265 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-4-realloc} } 266 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-4-realloc} } 291 267 \caption{Speed benchmark chain: realloc} 292 268 \label{fig:speed-4-realloc} … … 296 272 \begin{figure} 297 273 \centering 298 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-5-free} }299 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-5-free} }274 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-5-free} } 275 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-5-free} } 300 276 \caption{Speed benchmark chain: free} 301 277 \label{fig:speed-5-free} … … 305 281 \begin{figure} 306 282 \centering 307 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-6-calloc} }308 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-6-calloc} }283 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-6-calloc} } 284 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-6-calloc} } 309 285 \caption{Speed benchmark chain: calloc} 310 286 \label{fig:speed-6-calloc} … … 314 290 \begin{figure} 315 291 \centering 316 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-7-malloc-free} }317 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-7-malloc-free} }292 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-7-malloc-free} } 293 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-7-malloc-free} } 318 294 \caption{Speed benchmark chain: malloc-free} 319 295 \label{fig:speed-7-malloc-free} … … 323 299 \begin{figure} 324 300 \centering 325 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-8-realloc-free} }326 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-8-realloc-free} }301 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-8-realloc-free} } 302 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-8-realloc-free} } 327 303 \caption{Speed benchmark chain: realloc-free} 328 304 \label{fig:speed-8-realloc-free} … … 332 308 \begin{figure} 333 309 \centering 334 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-9-calloc-free} }335 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-9-calloc-free} }310 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-9-calloc-free} } 311 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-9-calloc-free} } 336 312 \caption{Speed benchmark chain: calloc-free} 337 313 \label{fig:speed-9-calloc-free} … … 341 317 \begin{figure} 342 318 \centering 343 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-10-malloc-realloc} }344 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-10-malloc-realloc} }319 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-10-malloc-realloc} } 320 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-10-malloc-realloc} } 345 321 \caption{Speed benchmark chain: malloc-realloc} 346 322 \label{fig:speed-10-malloc-realloc} … … 350 326 \begin{figure} 351 327 \centering 352 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-11-calloc-realloc} }353 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-11-calloc-realloc} }328 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-11-calloc-realloc} } 329 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-11-calloc-realloc} } 354 330 \caption{Speed benchmark chain: calloc-realloc} 355 331 \label{fig:speed-11-calloc-realloc} … … 359 335 \begin{figure} 360 336 \centering 361 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-12-malloc-realloc-free} }362 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-12-malloc-realloc-free} }337 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-12-malloc-realloc-free} } 338 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-12-malloc-realloc-free} } 363 339 \caption{Speed benchmark chain: malloc-realloc-free} 364 340 \label{fig:speed-12-malloc-realloc-free} … … 368 344 \begin{figure} 369 345 \centering 370 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-13-calloc-realloc-free} }371 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-13-calloc-realloc-free} }346 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-13-calloc-realloc-free} } 347 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-13-calloc-realloc-free} } 372 348 \caption{Speed benchmark chain: calloc-realloc-free} 373 349 \label{fig:speed-13-calloc-realloc-free} … … 377 353 \begin{figure} 378 354 \centering 379 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/speed-14-m-c-re-alloc-free} }380 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/speed-14-m-c-re-alloc-free} }355 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/speed-14-m-c-re-alloc-free} } 356 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/speed-14-m-c-re-alloc-free} } 381 357 \caption{Speed benchmark chain: malloc-calloc-realloc-free} 382 358 \label{fig:speed-14-malloc-calloc-realloc-free} … … 387 363 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 388 364 389 \newpage390 365 \subsection{Memory Micro-Benchmark} 391 366 392 This experiment is run with thefollowing two configurations for each allocator.367 This experiment is run with following two configurations for each allocator. 393 368 The difference between the two configurations is the number of producers and consumers. 394 Configuration 1 has one producer and one consumer, and configuration 2 has 4 producers ,where each producer has 4 consumers.369 Configuration 1 has one producer and one consumer, and configuration 2 has 4 producers where each producer has 4 consumers. 395 370 396 371 \noindent … … 460 435 Memory Allocator & Configuration 1 Result & Configuration 2 Result\\ 461 436 \hline 462 llh & \VRef[Figure]{fig:mem-1-prod-1-cons-100-cfa} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-cfa}\\463 \hline 464 dl & \VRef[Figure]{fig:mem-1-prod-1-cons-100-dl} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-dl}\\465 \hline 466 glibc & \VRef[Figure]{fig:mem-1-prod-1-cons-100-glc} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-glc}\\467 \hline 468 hoard & \VRef[Figure]{fig:mem-1-prod-1-cons-100-hrd} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-hrd}\\469 \hline 470 je & \VRef[Figure]{fig:mem-1-prod-1-cons-100-je} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-je}\\471 \hline 472 pt3 & \VRef[Figure]{fig:mem-1-prod-1-cons-100-pt3} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-pt3}\\473 \hline 474 rp & \VRef[Figure]{fig:mem-1-prod-1-cons-100-rp} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-rp}\\475 \hline 476 tbb & \VRef[Figure]{fig:mem-1-prod-1-cons-100-tbb} & \VRef[Figure]{fig:mem-4-prod-4-cons-100-tbb}\\437 cfa & Fig. \ref{fig:mem-1-prod-1-cons-100-cfa} & Fig. \ref{fig:mem-4-prod-4-cons-100-cfa}\\ 438 \hline 439 dl & Fig. \ref{fig:mem-1-prod-1-cons-100-dl} & Fig. \ref{fig:mem-4-prod-4-cons-100-dl}\\ 440 \hline 441 glibc & Fig. \ref{fig:mem-1-prod-1-cons-100-glc} & Fig. \ref{fig:mem-4-prod-4-cons-100-glc}\\ 442 \hline 443 hoard & Fig. \ref{fig:mem-1-prod-1-cons-100-hrd} & Fig. \ref{fig:mem-4-prod-4-cons-100-hrd}\\ 444 \hline 445 je & Fig. \ref{fig:mem-1-prod-1-cons-100-je} & Fig. \ref{fig:mem-4-prod-4-cons-100-je}\\ 446 \hline 447 pt3 & Fig. \ref{fig:mem-1-prod-1-cons-100-pt3} & Fig. \ref{fig:mem-4-prod-4-cons-100-pt3}\\ 448 \hline 449 rp & Fig. \ref{fig:mem-1-prod-1-cons-100-rp} & Fig. \ref{fig:mem-4-prod-4-cons-100-rp}\\ 450 \hline 451 tbb & Fig. \ref{fig:mem-1-prod-1-cons-100-tbb} & Fig. \ref{fig:mem-4-prod-4-cons-100-tbb}\\ 477 452 \hline 478 453 \end{tabular} … … 481 456 \end{table} 482 457 483 \VRefrange[Figures]{fig:mem-1-prod-1-cons-100-cfa}{fig:mem-4-prod-4-cons-100-tbb} show16 figures, two figures for each of the 8 allocators, one for each configuration.458 Results for memory benchmark are shown in 16 figures, two figures for each of the 8 allocators, one for each configuration. 484 459 Table \ref{table:mem-benchmark-figs} shows the list of figures that contain memory benchmark results. 485 460 … … 507 482 \begin{figure} 508 483 \centering 509 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-cfa} }510 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-cfa} }511 \caption{Memory benchmark results with 1 producer for llhmemory allocator}484 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-cfa} } 485 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-cfa} } 486 \caption{Memory benchmark results with 1 producer for cfa memory allocator} 512 487 \label{fig:mem-1-prod-1-cons-100-cfa} 513 488 \end{figure} … … 516 491 \begin{figure} 517 492 \centering 518 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-dl} }519 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-dl} }493 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-dl} } 494 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-dl} } 520 495 \caption{Memory benchmark results with 1 producer for dl memory allocator} 521 496 \label{fig:mem-1-prod-1-cons-100-dl} … … 525 500 \begin{figure} 526 501 \centering 527 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-glc} }528 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-glc} }502 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-glc} } 503 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-glc} } 529 504 \caption{Memory benchmark results with 1 producer for glibc memory allocator} 530 505 \label{fig:mem-1-prod-1-cons-100-glc} … … 534 509 \begin{figure} 535 510 \centering 536 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-hrd} }537 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-hrd} }511 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-hrd} } 512 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-hrd} } 538 513 \caption{Memory benchmark results with 1 producer for hoard memory allocator} 539 514 \label{fig:mem-1-prod-1-cons-100-hrd} … … 543 518 \begin{figure} 544 519 \centering 545 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-je} }546 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-je} }520 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-je} } 521 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-je} } 547 522 \caption{Memory benchmark results with 1 producer for je memory allocator} 548 523 \label{fig:mem-1-prod-1-cons-100-je} … … 552 527 \begin{figure} 553 528 \centering 554 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-pt3} }555 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-pt3} }529 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-pt3} } 530 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-pt3} } 556 531 \caption{Memory benchmark results with 1 producer for pt3 memory allocator} 557 532 \label{fig:mem-1-prod-1-cons-100-pt3} … … 561 536 \begin{figure} 562 537 \centering 563 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-rp} }564 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-rp} }538 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-rp} } 539 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-rp} } 565 540 \caption{Memory benchmark results with 1 producer for rp memory allocator} 566 541 \label{fig:mem-1-prod-1-cons-100-rp} … … 570 545 \begin{figure} 571 546 \centering 572 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-tbb} }573 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-tbb} }547 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-1-prod-1-cons-100-tbb} } 548 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-1-prod-1-cons-100-tbb} } 574 549 \caption{Memory benchmark results with 1 producer for tbb memory allocator} 575 550 \label{fig:mem-1-prod-1-cons-100-tbb} … … 579 554 \begin{figure} 580 555 \centering 581 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-cfa} }582 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-cfa} }583 \caption{Memory benchmark results with 4 producers for llhmemory allocator}556 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-cfa} } 557 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-cfa} } 558 \caption{Memory benchmark results with 4 producers for cfa memory allocator} 584 559 \label{fig:mem-4-prod-4-cons-100-cfa} 585 560 \end{figure} … … 588 563 \begin{figure} 589 564 \centering 590 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-dl} }591 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-dl} }565 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-dl} } 566 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-dl} } 592 567 \caption{Memory benchmark results with 4 producers for dl memory allocator} 593 568 \label{fig:mem-4-prod-4-cons-100-dl} … … 597 572 \begin{figure} 598 573 \centering 599 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-glc} }600 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-glc} }574 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-glc} } 575 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-glc} } 601 576 \caption{Memory benchmark results with 4 producers for glibc memory allocator} 602 577 \label{fig:mem-4-prod-4-cons-100-glc} … … 606 581 \begin{figure} 607 582 \centering 608 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-hrd} }609 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-hrd} }583 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-hrd} } 584 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-hrd} } 610 585 \caption{Memory benchmark results with 4 producers for hoard memory allocator} 611 586 \label{fig:mem-4-prod-4-cons-100-hrd} … … 615 590 \begin{figure} 616 591 \centering 617 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-je} }618 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-je} }592 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-je} } 593 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-je} } 619 594 \caption{Memory benchmark results with 4 producers for je memory allocator} 620 595 \label{fig:mem-4-prod-4-cons-100-je} … … 624 599 \begin{figure} 625 600 \centering 626 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-pt3} }627 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-pt3} }601 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-pt3} } 602 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-pt3} } 628 603 \caption{Memory benchmark results with 4 producers for pt3 memory allocator} 629 604 \label{fig:mem-4-prod-4-cons-100-pt3} … … 633 608 \begin{figure} 634 609 \centering 635 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-rp} }636 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-rp} }610 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-rp} } 611 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-rp} } 637 612 \caption{Memory benchmark results with 4 producers for rp memory allocator} 638 613 \label{fig:mem-4-prod-4-cons-100-rp} … … 642 617 \begin{figure} 643 618 \centering 644 \subfigure[Algol]{ \includegraphics[width=0.9 5\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-tbb} }645 \subfigure[Nasus]{ \includegraphics[width=0.9 5\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-tbb} }619 \subfigure[Algol]{ \includegraphics[width=0.9\textwidth]{evaluations/algol-perf-eps/mem-4-prod-4-cons-100-tbb} } 620 \subfigure[Nasus]{ \includegraphics[width=0.9\textwidth]{evaluations/nasus-perf-eps/mem-4-prod-4-cons-100-tbb} } 646 621 \caption{Memory benchmark results with 4 producers for tbb memory allocator} 647 622 \label{fig:mem-4-prod-4-cons-100-tbb} -
doc/theses/mubeen_zulfiqar_MMath/uw-ethesis.bib
rf4fe7fd red49dbd 80 80 month = may, 81 81 year = 2009, 82 note = {\href{ftp://g.oswego.edu/pub/misc/malloc.c}{ftp://g.oswego.edu/\-pub/\-misc/\-malloc.c}}, 82 note = {\textsf{ftp://g.oswego.edu/\-pub/\-misc/\-malloc.c}}, 83 } 84 85 @misc{ptmalloc2, 86 author = {Wolfram Gloger}, 87 title = {ptmalloc version 2}, 88 month = jun, 89 year = 2006, 90 note = {\textsf{http://www.malloc.de/\-malloc/\-ptmalloc2-current.tar.gz}}, 83 91 } 84 92 … … 111 119 month = mar, 112 120 year = 2022, 113 note = {\href{https://github.com/compudj/librseq}{https://github.com/ \-compudj/\-librseq}},121 note = {\href{https://github.com/compudj/librseq}{https://github.com/compudj/librseq}}, 114 122 } 115 123 … … 168 176 year = 2010, 169 177 note = {\textsf{http://google-perftools.\-googlecode.\-com/\-files/\-google-perftools-1.5.tar.gz}}, 170 }171 172 @misc{uniformPRNG,173 author = {\CC Standard Library},174 title = {\lstinline{uniform_int_distribution}},175 month = apr,176 year = 2022,177 note = {\href{https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution}{https://en.cppreference.com/w/\-cpp/numeric/\-random/\-uniform\_int\_distribution}},178 }179 180 @misc{fisherPRNG,181 author = {\CC Standard Library},182 title = {\lstinline{fister_f_distribution}},183 month = apr,184 year = 2022,185 note = {\href{https://www.cplusplus.com/reference/random/fisher_f_distribution}{https://www.cplusplus.com/\-reference/\-random/\-fisher\_f\_distribution}},186 178 } 187 179
Note:
See TracChangeset
for help on using the changeset viewer.