From 47796cdae51bc13ad60e6256902ee30d278c5327 Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Fri, 1 Mar 2024 15:34:40 +0100 Subject: [PATCH] Vector simulations --- src/chapters/results.tex | 69 +++++++++++++++++++++--- src/doc.bib | 23 ++++++++ src/plots/matrix_infinite.tex | 11 ++-- src/plots/matrix_normal.tex | 12 +++-- src/plots/samsung.pdf | Bin 0 -> 136693 bytes src/plots/tables/gemv_layers_100GHz.csv | 8 +-- src/plots/tables/gemv_layers_3GHz.csv | 8 +-- src/plots/vector_infinite.tex | 7 +-- src/plots/vector_normal.tex | 8 +-- 9 files changed, 115 insertions(+), 31 deletions(-) create mode 100644 src/plots/samsung.pdf diff --git a/src/chapters/results.tex b/src/chapters/results.tex index 65af49c..6bd803b 100644 --- a/src/chapters/results.tex +++ b/src/chapters/results.tex @@ -94,7 +94,7 @@ The workloads adhere to the following calculation patterns: Each workload is run with different input vector dimensions to examine the effect of setup overhead and potentially identify a break-even point at which \ac{pim} becomes viable. \Cref{tab:dimensions_vector} lists the specific vector dimensions for the following benchmarks. -The levels X1-X4 denote the increasing dimensions, with each step doubling in size. +The levels X1-X4 denote the increasing dimensions, with each successive level doubling in size, starting at 256, which is the minimum size that can be represented in a \ac{pim} data structure. \begin{table} \centering @@ -108,7 +108,7 @@ The levels X1-X4 denote the increasing dimensions, with each step doubling in si hline{2} = {-}{solid,black}, hline{2} = {2}{-}{solid,black}, } -Level & Dimensions \\ +Level & Vector Dimensions \\ X1 & (256 $\times$ 1) \\ X2 & (512 $\times$ 1) \\ X3 & (1024 $\times$ 1) \\ @@ -118,9 +118,9 @@ X4 & (2048 $\times$ 1) \label{tab:dimensions_vector} \end{table} -The benchmarks analyze the relative number of processor ticks where the speedup is calculated as follows: +The benchmarks analyze the relative number of processor ticks for \ac{pim} compared to non-\ac{pim} where the speedup $S$ is calculated as follows: \begin{equation} -S = \frac{\textrm{# of ticks in non-\ac{pim} mode}}{# of ticks in \ac{pim} mode} +S = \frac{\textrm{\#ticks in non-\ac{pim} mode}}{\textrm{\#ticks in \ac{pim} mode}} \end{equation} \begin{figure} @@ -130,13 +130,27 @@ S = \frac{\textrm{# of ticks in non-\ac{pim} mode}}{# of ticks in \ac{pim} mode} \label{fig:vector_normal} \end{figure} +\Cref{fig:vector_normal} shows the relative performance for the vector benchmarks, running on the generic ARM-based system at a typical clock frequency. +The relative speedup of \ac{pim} is in the range of about $\qtyrange{12.8}{31.8}{\times}$ with limited variance for each benchmark between the different vector dimensions, since such vector operations essentially scale linearly with the length of the input operands for both the non-\ac{pim} and \ac{pim} approaches. +The \ac{haxpy} benchmark has the highest variance with a range of $\qtyrange{19.8}{31.8}{\times}$, which is due to the fact that each value of the one input vector must first be multiplied by a scalar amount on the \ac{cpu} before the addition operation, while in the \ac{pim} case the specialized \ac{mad} instruction is used. +As all speedup values are well above 1, it can be concluded that even the smallest representable vector size of 256 is already above the break-even point at which \ac{pim} becomes viable. + \begin{figure} \centering \input{plots/vector_infinite} - \caption{test} + \caption{Comparison between non-\ac{pim} and \ac{pim} for the vector benchmarks running on the infinite compute platform.} \label{fig:vector_infinite} \end{figure} +In addition to the generic ARM-based system, the same benchmarks were run on the hypothetical infinite compute system, the results of which are shown in \cref{fig:vector_infinite}. +As it can be seen, the achievable speedup in the completely memory-bounded system is with a range of $\qtyrange{1.7}{2.4}{\times}$ lower than in the generic system. +The variance of the speedup between the different vector dimensions are also rather small. +For the \ac{haxpy} benchmark, the smaller variance of $\qtyrange{2.0}{2.4}{\times}$ can be interpreted as follows: +The additional computation step of the scalar multiplication does not affect the non-\ac{pim} system as much as in the previous case, because this is insignificant compared to the memory fetch of the vector elements. + +% vectors: im wesentlichen skaliert beides mit der länge es vecktors, minimal weniger overhead +% haxpy: skalarmultiplikation macht CPU bedeutend langsamer, deswegen fällt dieser unterscheid bei 100GHz auch weg + \subsubsection{Neural Network Layers} % GEMV % Samsung 7.4x-8.9x @@ -145,20 +159,61 @@ S = \frac{\textrm{# of ticks in non-\ac{pim} mode}}{# of ticks in \ac{pim} mode} % GEMM mit stark interleavten matrizen (eher nicht) +In addition to the vector operations and the level 1 \ac{blas} routine \ac{haxpy}, the performance improvement of \ac{pim} is also analyzed for the level 2 \ac{blas} routine \ac{gemv}. +Besides the regular \ac{gemv} operation, whose form is $y = A \cdot x$, several matrix-vector multiplications are chained together with the activation function \ac{relu} applied in between, modeling a simple fully connected neural network. +Each processing step for a \ac{dnn} layer can be described as $y = \textrm{ReLU}(A \cdot x)$, where the output of the operation is fed as input to the next layer. +In the simplest form, quadratic matrix dimensions ensure that the output vector has the same dimensions as the input vector, which simplifies chaining in the benchmark. +Again, several different dimensions of the benchmark inputs are used, whose matrix dimensions for each of the two benchmarks are given in \cref{tab:dimensions_matrix}. + +\begin{table} +\centering +\begin{tblr}{ + cell{2}{2} = {r}, + cell{3}{2} = {r}, + cell{4}{2} = {r}, + cell{5}{2} = {r}, + cell{2}{3} = {r}, + cell{3}{3} = {r}, + cell{4}{3} = {r}, + cell{5}{3} = {r}, + hlines, + vlines, + hline{2} = {-}{solid,black}, + hline{2} = {2}{-}{solid,black}, +} +Level & \ac{gemv} Matrix Dimensions & \ac{dnn} Matrix Dimensions \\ +X1 & (128 $\times$ 128) & (128 $\times$ 128) \\ +X2 & (256 $\times$ 128) & (256 $\times$ 256) \\ +X3 & (512 $\times$ 128) & (512 $\times$ 512) \\ +X4 & (1024 $\times$ 128) & (1024 $\times$ 1024) +\end{tblr} +\caption{List of the matrix dimensions for the neural network benchmarks.} +\label{tab:dimensions_matrix} +\end{table} + \begin{figure} \centering \input{plots/matrix_normal} - \caption{test} + \caption{Normal} \label{fig:matrix_normal} \end{figure} \begin{figure} \centering \input{plots/matrix_infinite} - \caption{test} + \caption{Infinite Compute} \label{fig:matrix_infinite} \end{figure} +\subsubsection{Comparison to Samsung's Simulation Results} + +\begin{figure} + \centering + \includegraphics[width=0.8\linewidth]{plots/samsung} + \caption{Samsung} + \label{fig:samsung_speedup} +\end{figure} + \subsubsection{Comparison to Real Hardware} % \subsubsection{Initialization Overhead} diff --git a/src/doc.bib b/src/doc.bib index f6158d0..9368afd 100644 --- a/src/doc.bib +++ b/src/doc.bib @@ -128,6 +128,22 @@ file = {/home/derek/Nextcloud/Verschiedenes/Zotero/storage/T3PBGTZZ/Ghose et al. - 2019 - Processing-in-memory A workload-driven perspectiv.pdf} } +@online{giannoula2024, + title = {Accelerating {{Graph Neural Networks}} on {{Real Processing-In-Memory Systems}}}, + author = {Giannoula, Christina and Yang, Peiming and Vega, Ivan Fernandez and Yang, Jiacheng and Li, Yu Xin and Luna, Juan Gomez and Sadrosadati, Mohammad and Mutlu, Onur and Pekhimenko, Gennady}, + date = {2024-02-26}, + eprint = {2402.16731}, + eprinttype = {arxiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2402.16731}, + urldate = {2024-02-29}, + abstract = {Graph Neural Networks (GNNs) are emerging ML models to analyze graph-structure data. Graph Neural Network (GNN) execution involves both compute-intensive and memoryintensive kernels, the latter dominates the total time, being significantly bottlenecked by data movement between memory and processors. Processing-In-Memory (PIM) systems can alleviate this data movement bottleneck by placing simple processors near or inside to memory arrays. In this work, we introduce PyGim, an efficient ML framework that accelerates GNNs on real PIM systems. We propose intelligent parallelization techniques for memory-intensive kernels of GNNs tailored for real PIM systems, and develop handy Python API for them. We provide hybrid GNN execution, in which the compute-intensive and memory-intensive kernels are executed in processor-centric and memory-centric computing systems, respectively, to match their algorithmic nature. We extensively evaluate PyGim on a real-world PIM system with 1992 PIM cores using emerging GNN models, and demonstrate that it outperforms its state-of-the-art CPU counterpart on Intel Xeon by on average 3.04×, and achieves higher resource utilization than CPU and GPU systems. Our work provides useful recommendations for software, system and hardware designers. PyGim will be open-sourced to enable the widespread use of PIM systems in GNNs.}, + langid = {english}, + pubstate = {preprint}, + keywords = {Computer Science - Distributed Parallel and Cluster Computing,Computer Science - Hardware Architecture,Computer Science - Machine Learning,Computer Science - Performance}, + file = {/home/derek/Nextcloud/Verschiedenes/Zotero/storage/WFEPGE5V/Giannoula et al. - 2024 - Accelerating Graph Neural Networks on Real Process.pdf} +} + @online{gomez-luna2022, title = {Benchmarking a {{New Paradigm}}: {{An Experimental Analysis}} of a {{Real Processing-in-Memory Architecture}}}, shorttitle = {Benchmarking a {{New Paradigm}}}, @@ -415,6 +431,13 @@ file = {/home/derek/Nextcloud/Verschiedenes/Zotero/storage/E6FRVMZ3/Nielsen - 2015 - Neural networks and deep learning.pdf} } +@article{oliveira, + title = {{{PUMA}}: {{Efficient}} and {{Low-Cost Memory Allocation}} and {{Alignment Support}} for {{Processing-Using-Memory Architectures}}}, + author = {Oliveira, Geraldo F and Esposito, Emanuele G and Gómez-Luna, Juan and Mutlu, Onur}, + langid = {english}, + file = {/home/derek/Nextcloud/Verschiedenes/Zotero/storage/RY2GICEL/Oliveira et al. - PUMA Efficient and Low-Cost Memory Allocation and .pdf} +} + @online{oliveira2023, title = {{{DaPPA}}: {{A Data-Parallel Framework}} for {{Processing-in-Memory Architectures}}}, shorttitle = {{{DaPPA}}}, diff --git a/src/plots/matrix_infinite.tex b/src/plots/matrix_infinite.tex index dbe5ffe..fd205af 100644 --- a/src/plots/matrix_infinite.tex +++ b/src/plots/matrix_infinite.tex @@ -5,11 +5,12 @@ width=0.9\textwidth, ybar=1pt, bar width = 15pt, - ymin=0, - ymax=5, - ytick distance=1, + ymin=0.1, + ymax=100, + ymode=log, + log origin=infty, ymajorgrids, - ylabel={Speedup}, + ylabel={Relative Performance}, tick pos=left, xtick=data, xticklabels from table={\gemv}{level}, @@ -26,6 +27,6 @@ \addlegendentry{GEMV} \addplot[fill=_orange!90] table [x expr=\coordindex, y={speedup}]{\gemvlayers}; - \addlegendentry{DNN Layers} + \addlegendentry{DNN} \end{axis} \end{tikzpicture} diff --git a/src/plots/matrix_normal.tex b/src/plots/matrix_normal.tex index 19d20cc..b6a7958 100644 --- a/src/plots/matrix_normal.tex +++ b/src/plots/matrix_normal.tex @@ -5,11 +5,13 @@ width=0.9\textwidth, ybar=1pt, bar width = 15pt, - ymin=0, - ymax=35, - minor y tick num = 5, + ymin=0.1, + ymax=100, + ymode=log, + log origin=infty, + % minor y tick num = 5, ymajorgrids, - ylabel={Speedup}, + ylabel={Relative Performance}, tick pos=left, xtick=data, xticklabels from table={\gemv}{level}, @@ -26,6 +28,6 @@ \addlegendentry{GEMV} \addplot[fill=_orange!90] table [x expr=\coordindex, y={speedup}]{\gemvlayers}; - \addlegendentry{DNN Layers} + \addlegendentry{DNN} \end{axis} \end{tikzpicture} diff --git a/src/plots/samsung.pdf b/src/plots/samsung.pdf new file mode 100644 index 0000000000000000000000000000000000000000..832052eb3b4c9da37ec01e1b2cd66f9305a6482d GIT binary patch literal 136693 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 J@=FRp|1Zm_{>}gZ literal 0 HcmV?d00001 diff --git a/src/plots/tables/gemv_layers_100GHz.csv b/src/plots/tables/gemv_layers_100GHz.csv index 787a2ff..b0c8971 100644 --- a/src/plots/tables/gemv_layers_100GHz.csv +++ b/src/plots/tables/gemv_layers_100GHz.csv @@ -1,5 +1,5 @@ workload,level,frequency,speedup -gemv_layers,X1,100GHz,0.18703680911951287 -gemv_layers,X2,100GHz,0.35722454947444127 -gemv_layers,X3,100GHz,0.6338568319278073 -gemv_layers,X4,100GHz,1.638629460755059 +gemv_layers,X1,100GHz,0.17890250001597863 +gemv_layers,X2,100GHz,0.6097840333112959 +gemv_layers,X3,100GHz,3.9637284525723304 +gemv_layers,X4,100GHz,6.088778065749799 diff --git a/src/plots/tables/gemv_layers_3GHz.csv b/src/plots/tables/gemv_layers_3GHz.csv index 6c5060e..cf86411 100644 --- a/src/plots/tables/gemv_layers_3GHz.csv +++ b/src/plots/tables/gemv_layers_3GHz.csv @@ -1,5 +1,5 @@ workload,level,frequency,speedup -gemv_layers,X1,3GHz,3.194018430394461 -gemv_layers,X2,3GHz,6.206580081241512 -gemv_layers,X3,3GHz,11.305511591995977 -gemv_layers,X4,3GHz,20.27760945615218 +gemv_layers,X1,3GHz,2.992752194063702 +gemv_layers,X2,3GHz,11.246371082010572 +gemv_layers,X3,3GHz,34.94598413478715 +gemv_layers,X4,3GHz,72.33604077371677 diff --git a/src/plots/vector_infinite.tex b/src/plots/vector_infinite.tex index 0b7f593..70c2d83 100644 --- a/src/plots/vector_infinite.tex +++ b/src/plots/vector_infinite.tex @@ -3,14 +3,15 @@ \pgfplotstableread[col sep=comma]{plots/tables/vmul_100GHz.csv}\vmul \pgfplotstableread[col sep=comma]{plots/tables/haxpy_100GHz.csv}\haxpy \begin{axis}[ - width=0.9\textwidth, + width=0.8\textwidth, ybar=1pt, bar width = 15pt, ymin=0, ymax=5, - ytick distance=1, + % ymode=log, + % log origin=infty, ymajorgrids, - ylabel={Speedup}, + ylabel={Relative Performance}, tick pos=left, xtick=data, xticklabels from table={\vadd}{level}, diff --git a/src/plots/vector_normal.tex b/src/plots/vector_normal.tex index 37631c6..69148b1 100644 --- a/src/plots/vector_normal.tex +++ b/src/plots/vector_normal.tex @@ -3,14 +3,16 @@ \pgfplotstableread[col sep=comma]{plots/tables/vmul_3GHz.csv}\vmul \pgfplotstableread[col sep=comma]{plots/tables/haxpy_3GHz.csv}\haxpy \begin{axis}[ - width=0.9\textwidth, + width=0.8\textwidth, ybar=1pt, bar width = 15pt, ymin=0, ymax=35, - minor y tick num = 5, + % ymode=log, + % log origin=infty, + % minor y tick num = 5, ymajorgrids, - ylabel={Speedup}, + ylabel={Relative Performance}, tick pos=left, xtick=data, xticklabels from table={\vadd}{level},