[2] | 1 | %
|
---|
| 2 | % $Id: report.tex 571 2008-04-20 17:31:04Z rick $
|
---|
| 3 | %
|
---|
| 4 |
|
---|
| 5 | \documentclass[12pt,a4paper]{article}
|
---|
| 6 |
|
---|
| 7 | \frenchspacing
|
---|
| 8 | \usepackage[english,dutch]{babel}
|
---|
| 9 | \selectlanguage{dutch}
|
---|
[142] | 10 | \usepackage[pdftex]{graphicx}
|
---|
[2] | 11 | \usepackage{url}
|
---|
| 12 | \usepackage{amssymb,amsmath}
|
---|
[142] | 13 | \usepackage{lipsum}
|
---|
| 14 | \usepackage{float}
|
---|
[2] | 15 |
|
---|
[142] | 16 | \floatstyle{ruled}
|
---|
| 17 | \newfloat{algoritm}{thp}{lop}
|
---|
[143] | 18 | \floatname{algoritm}{Algoritme}
|
---|
[142] | 19 |
|
---|
[144] | 20 | \title{\emph{n-Queens} minimale dominantie verzamelingen \\
|
---|
[142] | 21 | \large{Chessboard Domination on Programmable Graphics Hardware door Nathan Cournik}}
|
---|
[2] | 22 | \author{Rick van der Zwet\\
|
---|
[142] | 23 | \texttt{<hvdzwet@liacs.nl>}}
|
---|
[2] | 24 | \date{\today}
|
---|
| 25 |
|
---|
[142] | 26 |
|
---|
[2] | 27 | \begin{document}
|
---|
| 28 | \maketitle
|
---|
[142] | 29 | \begin{abstract}
|
---|
| 30 | Dit schrijven zal het paper van Nathan Cournik \emph{Chessboard Domination on
|
---|
| 31 | Programmable Graphics Hardware}~\cite{CDGPU2006} ---en in het speciaal de
|
---|
| 32 | gepresenteerde n-Queens oplossing--- vrij samenvatten in het nederlands en zal
|
---|
| 33 | de mening van de ondergetekende op het geheel geven.
|
---|
| 34 | \end{abstract}
|
---|
[2] | 35 |
|
---|
| 36 | \section{Inleiding}
|
---|
[142] | 37 | \begin{figure}
|
---|
| 38 | \begin{center}
|
---|
| 39 | \includegraphics[width=0.5\textwidth]{pasted1.pdf}
|
---|
| 40 | \end{center}
|
---|
| 41 | \caption{Links; koningin kan dit patroon slaan. Rechts; ongeldige \emph{n-Queens} oplossing, opdat de koninginnen rechtsonder elkaar kunnen slaan}
|
---|
| 42 | \label{fig:patroon}
|
---|
| 43 | \end{figure}
|
---|
[144] | 44 | Vanwege het het feit dat \emph{n-Queens} een algemeen geaccepteerde terminologie
|
---|
[142] | 45 | is, voor het plaatsen van $n$ koningen op een $n*n$ schaakbord zodanig dat de
|
---|
| 46 | koningen elkaar niet kunnen slaan, zal dit in het schrijven niet vertaald
|
---|
[144] | 47 | worden. Verder zal in de tekst op diverse plekken de originele Engelse bewoording
|
---|
| 48 | staan om zo terugzoeken en refereren in het originele paper~\cite{CDGPU2006}
|
---|
[142] | 49 | makkelijker te maken.
|
---|
| 50 |
|
---|
| 51 |
|
---|
[144] | 52 | \section{Minimale dominantie verzameling}
|
---|
| 53 | De minimale dominantie verzameling ({\emph{Minimum domination set}}) is
|
---|
| 54 | een opstelling waarbij zo weinig mogelijk koninginnen wordt gebruikt om elk vakje
|
---|
[143] | 55 | van het schaakbord door ten minste 1 koningin geslagen kan worden of dat er een
|
---|
| 56 | koningin op staat. Omdat een koningin een karakteristiek patroon kan staan (zie
|
---|
| 57 | Figuur~\ref{fig:patroon}) kan het minimale aantal koninginnen wat nodig is ook
|
---|
| 58 | bepaald worden dmv van formule~\ref{eq:ondergrens}.
|
---|
[142] | 59 | \begin{equation}
|
---|
| 60 | y(Q_{n})\geq\frac{n-1}{2}, n\geq1
|
---|
| 61 | \label{eq:ondergrens}
|
---|
| 62 | \end{equation}
|
---|
[144] | 63 | Als het een 'gewone' dominantie verzameling is dan hoeft het aantal koninginnen
|
---|
| 64 | niet perse minimaal zijn.
|
---|
[142] | 65 |
|
---|
| 66 |
|
---|
| 67 | \section{Grafische Verwerking Eenheid}
|
---|
[143] | 68 | \begin{figure}
|
---|
| 69 | \centering
|
---|
| 70 | \includegraphics[width=0.4\textwidth]{pasted1.png}
|
---|
[144] | 71 | \caption{\emph{GPU} werking. De verschillende \emph{GPU} processor-blokken
|
---|
[143] | 72 | worden \emph{kernels} genoemd. De data wordt getransporteerd door verschillende
|
---|
[144] | 73 | data-kanalen (\emph{streams}) en heeft de vorm van een \emph{framebuffer}, welke
|
---|
[143] | 74 | intern als $n * m$ array gezien kan worden. Een \emph{kernel} kan toegepast
|
---|
| 75 | worden om een (deel van de) \emph{framebuffer}.}
|
---|
| 76 | \label{fig:werking}
|
---|
| 77 | \end{figure}
|
---|
[142] | 78 | De Grafische Verwerking Eenheid (\emph{Graphics Processing Unit} ook bekend als
|
---|
| 79 | \emph{GPU}) heeft speciale electronica om ervoor te zorgen dat deze snel de
|
---|
| 80 | \emph{RGB} waardes van alle beeldpunten kan berekenen in complexe beeldsystemen
|
---|
[144] | 81 | met bijvoorbeeld ingewikkelde (lees: tijdrovende) berekeningen voor schaduw,
|
---|
| 82 | reflectie en intensiteit. Om deze grote hoeveelheid gegevens te verwerken maakt
|
---|
| 83 | de \emph{GPU} gebruik een grote hoeveelheid parallelle processoren, welke alle
|
---|
[142] | 84 | individueel een deel van de berekeningen op zich nemen.
|
---|
| 85 |
|
---|
[144] | 86 | Recente (elektronica) ontwikkelingen zoals \emph{CUDA}\footnote{\url{http://en.wikipedia.org/wiki/CUDA}} en (meer generieke implementaties)
|
---|
[142] | 87 | \emph{OpenCL}\footnote{\url{http://en.wikipedia.org/wiki/OpenCL}} hebben ertoe
|
---|
| 88 | geleid dat de GPU ook door de geprogrammeerd kan worden om specifieke
|
---|
| 89 | berekeningen uit te voeren. Figuur~\ref{fig:werking} laat de verschillende
|
---|
| 90 | stappen zien die uitgevoerd moeten worden om de \emph{GPU} aan te sturen. Het
|
---|
| 91 | is belangrijk om te beseffen dat de \emph{GPU} een heel simpele processor is en
|
---|
| 92 | (dus) zeer kleine buffers en instructie set heeft. Verder is het ook cruciaal
|
---|
| 93 | te weten dat de \emph{GPU} \textit{niet} direct gebruik gebruik kan maken van
|
---|
[144] | 94 | het hoofd-geheugen van de \emph{CPU}, maak dat de invoer en uitvoer altijd eerst
|
---|
[142] | 95 | naar/van de \emph{GPU} verplaatst zal moeten worden.
|
---|
| 96 |
|
---|
[143] | 97 | \section{Aanpak}
|
---|
[144] | 98 | Het zoeken van geldige minimale dominantie verzamelingen is een stevige klus,
|
---|
[142] | 99 | welke we (in het optimale geval) $n$ koninginnen hebben die we op een $n * n$
|
---|
| 100 | schaakbord kunnen plaatsen. Dat levert $(n * n)! - ((n * n)-n)!$ mogelijkheden op.
|
---|
[143] | 101 | De \emph{GPU} zal gebruikt worden om oplossingen sneller te controleren en zal
|
---|
[144] | 102 | niet gebruikt worden om effici"{e}ntie oplossingen te vinden. De kracht zit hem in
|
---|
[143] | 103 | het feit dat meer oplossingen getest kunnen worden en dus potentieel betere
|
---|
| 104 | oplossingen tussen kunnen zitten, welke ook te zien in in
|
---|
[144] | 105 | algoritme~\ref{alg:overzicht}. De genereerde potenti"{e}le oplossingen die aan de
|
---|
[143] | 106 | \emph{GPU} ter controle aangeboden worden respecteren de boven- en ondergrens.
|
---|
[142] | 107 |
|
---|
| 108 | \begin{algoritm}
|
---|
| 109 | \begin{verbatim}
|
---|
| 110 | 01: klaar=nee
|
---|
| 111 | 02: doe
|
---|
[144] | 112 | 03: ..bereken potentieel minimale dominantie verzamelingen
|
---|
[142] | 113 | 04: ..plaats in framebuffer
|
---|
| 114 | 05: ..als (alle pixels zijn gemarkeerd) dan
|
---|
| 115 | 06: ....klaar=ja
|
---|
| 116 | 08: totdat (klaar=ja)
|
---|
| 117 | \end{verbatim}
|
---|
[144] | 118 | \caption{evalueren minimale dominantie set}
|
---|
[143] | 119 | \label{alg:overzicht}
|
---|
[142] | 120 | \end{algoritm}
|
---|
| 121 |
|
---|
[143] | 122 | \subsection{Detectie algoritme}
|
---|
| 123 | \begin{figure}
|
---|
| 124 | \centering
|
---|
| 125 | \includegraphics[width=0.4\textwidth]{pasted4.pdf}
|
---|
| 126 | \caption{Stempels van verschillende schaakstukken, de verschillende groottes zijn noodzakelijk om aan te geven hoe de stempel vergroot of verkleint moet worden}
|
---|
| 127 | \label{fig:stempels}
|
---|
| 128 | \end{figure}
|
---|
| 129 | Om snelle detectie mogelijk te maken, wordt er gebruikt gemaakt van een
|
---|
| 130 | eigenschap waar een \emph{GPU} in uitblinkt; het '\emph{stempelen}' van objecten in
|
---|
| 131 | een raster (welke in traditionele beeldbewerking gebruikt wordt om texturen te
|
---|
[144] | 132 | maken). Elk schaakstuk heeft zijn eigen stempel-patroon zoals te zien in
|
---|
[143] | 133 | figuur~\ref{fig:stempels}. Hierbij moet opgemerkt worden dat de stempels
|
---|
| 134 | allemaal op hun eigen manier schalen.
|
---|
[142] | 135 |
|
---|
[143] | 136 | \begin{figure}
|
---|
[142] | 137 | \begin{center}
|
---|
| 138 | \includegraphics[width=0.4\textwidth]{pasted5.pdf}
|
---|
| 139 | \end{center}
|
---|
[144] | 140 | \caption{Door slim te coderen kunnen meerdere potenti"{e}le oplossingen tegelijk
|
---|
[143] | 141 | bekeken worden. Hier wordt gebruik gemaakt van (a) het feit dat de ruimte groter
|
---|
| 142 | is dan het 'schaakbord' welke bekeken wordt en (b) een pixel gecodeerd is uit
|
---|
[144] | 143 | vier onafhankelijke kleuren}
|
---|
[143] | 144 | \label{fig:raster}
|
---|
| 145 | \end{figure}
|
---|
| 146 | Er zijn nog twee eigenschappen van de \emph{GPU} waar dankbaar gebruik van
|
---|
| 147 | gemaakt wordt, namelijk kleur en het verschil in grootte van het bord en de
|
---|
| 148 | geaccepteerde invoer. Door slim te combineren ---zie figuur~\ref{fig:raster}---
|
---|
[144] | 149 | kan het aantal potenti"{e}le oplossingen die getest kan worden gemaximaliseerd
|
---|
[143] | 150 | worden.
|
---|
[142] | 151 |
|
---|
[144] | 152 | De individuele \emph{kernels} volgen het algoritme~\ref{alg:kernel}, de test of
|
---|
[143] | 153 | alle punten gemarkeerd zijn lijkt om het eerste gezicht een lus en test over
|
---|
| 154 | alle beeldpunten, echter de \emph{GPU} heeft specifieke instructies om dit
|
---|
[144] | 155 | effici"{e}ntie uit te voeren.
|
---|
[143] | 156 | Voor het plaatsen van de stempels moet er gegaan worden voor de grafische
|
---|
| 157 | equivalent van een \texttt{OF} operatie. Als een \texttt{INVERSE} operatie gebruikt zou
|
---|
| 158 | worden om de stempel te plaatsen zou een tweede overlappende stempel onterecht
|
---|
| 159 | als niet geraakt gemarkeerd worden.
|
---|
| 160 |
|
---|
| 161 | \begin{algoritm}
|
---|
| 162 | \begin{verbatim}
|
---|
| 163 | 01: voor elke stempels in stempel locatie
|
---|
| 164 | 02: ..plaats stempel
|
---|
| 165 | 03: als (alle punten gemarkeerd) dan
|
---|
| 166 | 04: ..oplossing=ja
|
---|
| 167 | \end{verbatim}
|
---|
[144] | 168 | \caption{evalueren minimale dominantie set door individuele kernel}
|
---|
[143] | 169 | \label{alg:kernel}
|
---|
| 170 | \end{algoritm}
|
---|
| 171 |
|
---|
[2] | 172 | \section{Conclusie}
|
---|
[143] | 173 | \begin{figure}
|
---|
| 174 | \centering
|
---|
| 175 | \includegraphics[width=0.4\textwidth]{pasted6.pdf}
|
---|
| 176 | \caption{
|
---|
[144] | 177 | Uitvoer tijden (logaritmische schaal) van de \emph{CPU} en \emph{GPU} gebaseerde minimale dominantie implementaties welke $y(Q_{n})$ uitrekenen. Hoe groter $n$ wordt, de beter de \emph{GPU} gaan presteren boven de \emph{CPU}}
|
---|
[143] | 178 | \label{fig:uitvoertijd}
|
---|
| 179 | \end{figure}
|
---|
[144] | 180 | Door het toepassen van de \emph{GPU} in het \emph{n-Queens} probleem kunnen
|
---|
| 181 | winsten geboekt worden zoals te zien in figuur~\ref{fig:uitvoertijd}\footnote{Gegevens direct uit \cite{CDGPU2006} overgenomen, experiment niet opnieuw uitgevoerd}.
|
---|
| 182 | Het toepassen van \emph{GPU} dominantie textuur technieken technieken lijkt voor dit
|
---|
[143] | 183 | specifieke geval een goede vertaling van de traditionele \emph{CPU} wereld en
|
---|
| 184 | de \emph{GPU} wereld. De stempels bieden tevens meer vrijheden om alternatieve
|
---|
| 185 | 'schaakstukken' te onderzoeken.
|
---|
| 186 | \subsection{Verder werk}
|
---|
| 187 | Er zal gekeken worden of de generatie van nieuwe oplossingen ook op de
|
---|
[144] | 188 | \emph{GPU} gedaan kan worden om zo het probleem van de langzame context
|
---|
[143] | 189 | wisselingen op te lossen.
|
---|
| 190 | Verder zal er gekeken worden of de codering van de borden op nog een slimmere
|
---|
[144] | 191 | manier aangepakt kan worden, in plaats van de kleur in 4 basis-kleuren uit te
|
---|
[143] | 192 | splitsen zouden ook de volledige 32 bits (elke kleur is 8 bit) kunnen worden om
|
---|
| 193 | nog meer(combinaties) van oplossingen te coderen.
|
---|
[142] | 194 |
|
---|
[143] | 195 | \subsection{Discussie}
|
---|
| 196 | De claim dat de \emph{GPU} 'veel' sneller is lijkt me niet gefundeerd in de
|
---|
| 197 | grafieken. Beiden lijken erg dicht bij elkaar te blijven en ik zie niet waarom
|
---|
| 198 | dit plots veel beter zou worden bij grotere $n$ waarden.
|
---|
[144] | 199 | De 'tegel-methode' van figuur~\ref{fig:raster} lijkt in theorie leuk, maar als
|
---|
[143] | 200 | de $n$ groter wordt is er grote kans dat de tegels niet meer (goed) passen. Als
|
---|
| 201 | de $n$ groter wordt dan in mogelijke invoer is het helemaal niet meer mogelijk.
|
---|
[142] | 202 |
|
---|
| 203 |
|
---|
[143] | 204 |
|
---|
[142] | 205 | \begin{thebibliography}{2}
|
---|
| 206 | \bibitem[DM2003]{DM2003}E. J. Cockayne, emph{Chessboard domination
|
---|
| 207 | problems}, \emph{Discrete Math}, 86:1320, 1990.
|
---|
| 208 |
|
---|
| 209 | \bibitem[CDGPU2006]{CDGPU2006}Nathan Cournik,\emph{Chessboard Domination
|
---|
| 210 | on Programmable Graphics Hardware}, \emph{ACM SE'06 March
|
---|
| 211 | 10-Â12, 2006}. Melbourne, Florida, USA
|
---|
[2] | 212 | \end{thebibliography}
|
---|
| 213 | \newpage
|
---|
| 214 | \end{document}
|
---|