source: liacs/SCA2010/nQueens/report.tex@ 395

Last change on this file since 395 was 180, checked in by Rick van der Zwet, 14 years ago

Some spelling corrected

File size: 10.7 KB
Line 
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}
10\usepackage[pdftex]{graphicx}
11\usepackage{url}
12\usepackage{amssymb,amsmath}
13\usepackage{lipsum}
14\usepackage{float}
15
16\floatstyle{ruled}
17\newfloat{algoritm}{thp}{lop}
18\floatname{algoritm}{Algoritme}
19
20\title{\emph{n-Queens} minimale dominerende verzamelingen \\
21\large{Chessboard Domination on Programmable Graphics Hardware door Nathan Cournia}}
22\author{Rick van der Zwet\\
23 \texttt{<hvdzwet@liacs.nl>}}
24\date{\today}
25
26
27\begin{document}
28\maketitle
29\begin{abstract}
30Dit schrijven zal het paper van Nathan Cournia \emph{Chessboard Domination on
31Programmable Graphics Hardware}~\cite{CDGPU2006} ---en in het bijzonder de
32gepresenteerde $n$-Queens oplossing--- vrij samenvatten in het Nederlands en zal
33de mening van de ondergetekende op het geheel geven.
34\end{abstract}
35
36\section{Inleiding}
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, omdat de koninginnen rechtsonder elkaar kunnen slaan.}
42 \label{fig:patroon}
43\end{figure}
44Vanwege het feit dat \emph{n-Queens} een algemeen geaccepteerde terminologie
45is voor het plaatsen van $n$ koninginnen op een $n \times n$ schaakbord zodanig dat de
46koninginnen elkaar niet kunnen slaan, zal dit in het schrijven niet vertaald
47worden. Verder zal in de tekst op diverse plekken de originele Engelse bewoording
48staan om zo terugzoeken in en refereren naar het originele paper~\cite{CDGPU2006}
49makkelijker te maken.
50
51
52\section{Minimale dominerende verzameling}
53Een dominerende set is een verzameling koninginnen, die tezamen alle velden
54bereiken. Een minimale dominerende verzameling ({\emph{Minimum domination
55set}}) is een opstelling waarbij met zo weinig mogelijk koninginnen elk vakje
56van het schaakbord a) door ten minste 1 koningin direct bereikt kan worden of b) bezet is
57door een koningin. Omdat een koningin een \emph{karakteristiek patroon} kan slaan (zie
58Figuur~\ref{fig:patroon}) kan het minimale aantal koninginnen dat nodig is
59bepaald worden door middel van Formule~\ref{eq:ondergrens}\footnote{Bewezen in \cite{DM2003}.}:
60\begin{equation}
61y(Q_{n})\geq\frac{n-1}{2}, n\geq1
62\label{eq:ondergrens}
63\end{equation}
64Hierbij is $n$ de hoogte van het bord. De knopen van $Q_{n}$
65zijn genomen van een $n \times n$ bord met $n^{2}$ knopen. Als knoop $a$
66door middel van het \emph{karakteristiek patroon} van een koningin vanuit $b$
67bereikt kan worden, wordt er een tak tussen deze knopen gevormd. Dit geheel (de
68knopen en takken) is $Q_{n}$. De $y(Q_{n})$ is dan het minimale aantal
69koninginnen dat men kan plaatsen om zo een minimale dominerende verzameling
70te bereiken.
71
72
73\section{Grafische Verwerking Eenheid}
74\begin{figure}
75 \centering
76 \includegraphics[width=0.4\textwidth]{pasted1.png}
77 \caption{\emph{GPU} werking. De verschillende \emph{GPU} processor-blokken
78worden \emph{kernels} genoemd. De data wordt getransporteerd door verschillende
79data-kanalen (\emph{streams}) en heeft de vorm van een \emph{framebuffer}, welke
80intern als $n \times m$ array gezien kan worden. Een \emph{kernel} kan toegepast
81worden op een (deel van de) \emph{framebuffer}. Illustratie uit \cite{WPCUDA}.}
82 \label{fig:werking}
83\end{figure}
84De Grafische Verwerking Eenheid (\emph{Graphics Processing Unit}, ook bekend als
85\emph{GPU}) heeft speciale elektronica om ervoor te zorgen dat deze snel de
86\emph{RGB} waardes van alle beeldpunten kan berekenen in complexe beeld-systemen
87met bijvoorbeeld ingewikkelde (lees: tijdrovende) berekeningen voor schaduw,
88reflectie en intensiteit. Om deze grote hoeveelheid gegevens te verwerken maakt
89de \emph{GPU} gebruik van een grote hoeveelheid parallelle processoren, welke alle
90individueel een deel van de berekeningen op zich nemen.
91
92Recente (elektronica) ontwikkelingen zoals \emph{CUDA}\footnote{\url{http://en.wikipedia.org/wiki/CUDA}} en een meer generieke implementatie
93\emph{OpenCL}\footnote{\url{http://en.wikipedia.org/wiki/OpenCL}} hebben ertoe
94geleid dat op de \emph{GPU} in plaats van enkel beeld verwerkingen te doen nu ook geprogrammeerd kan worden om specifieke
95berekeningen uit te voeren. Figuur~\ref{fig:werking} laat de verschillende
96stappen zien die uitgevoerd moeten worden om de \emph{GPU} aan te sturen. Het
97is belangrijk om te beseffen dat de \emph{GPU} een heel simpele processor is en
98(dus) zeer kleine buffers en instructieset heeft. Verder is het ook cruciaal
99te weten dat de \emph{GPU} \textit{niet} direct gebruik gebruik kan maken van
100het hoofd-geheugen van de \emph{CPU}, maar dat de invoer en uitvoer altijd eerst
101naar/van de \emph{GPU} verplaatst zal moeten worden.
102
103\section{Aanpak $n$-Queens probleem op de \emph{GPU}}
104Het zoeken van geldige minimale dominerende verzamelingen is een stevige klus,
105waarvoor minimaal (in het optimale geval) $n$ koninginnen nodig zijn die we op een $n \times n$
106schaakbord kunnen plaatsen. Dat levert $(n * n)! - ((n * n)-n)!$ mogelijkheden op.
107De \emph{GPU} zal gebruikt worden om oplossingen sneller te controleren en zal
108niet gebruikt worden om effici"{e}nte oplossingen te vinden. De kracht zit hem in
109het feit dat meer oplossingen getest kunnen worden en er dus potentieel betere
110oplossingen tussen kunnen zitten, wat ook te zien is in
111Algoritme~\ref{alg:overzicht}. De genereerde potenti"{e}le oplossingen die aan de
112\emph{GPU} ter controle aangeboden worden respecteren eventuele bekende boven-
113en ondergrenzen \footnote{Zie voor meer bekende boven- en ondergrenzen onder
114andere de papers genoemd in \cite{CDGPU2006}[sectie 2, pagina 62].} zoals
115Formule~\ref{eq:ondergrens}.
116\newpage
117
118
119\begin{algoritm}
120\begin{verbatim}
12101: klaar=nee
12202: doe
12303: ..bereken potentieel minimale dominerende verzamelingen
12404: ..plaats in framebuffer
12505: ..als (alle pixels zijn gemarkeerd) dan
12606: ....klaar=ja
12708: totdat (klaar=ja)
128\end{verbatim}
129\caption{evalueren minimale dominerende set}
130\label{alg:overzicht}
131\end{algoritm}
132
133\subsection{Detectie algoritme}
134\begin{figure}[h]
135 \centering
136 \includegraphics[width=0.4\textwidth]{pasted4.pdf}
137 \caption{Stempels van verschillende schaakstukken, de verschillende groottes zijn noodzakelijk om aan te geven hoe het stempel vergroot of verkleind moet worden.}
138 \label{fig:stempels}
139\end{figure}
140Om snelle detectie mogelijk te maken, wordt er gebruikt gemaakt van een
141eigenschap waar een \emph{GPU} in uitblinkt: het ``\emph{stempelen}'' van objecten in
142een raster (welke in traditionele beeldbewerking gebruikt wordt om texturen te
143maken). Elk schaakstuk heeft zijn eigen stempel-patroon zoals te zien in
144figuur~\ref{fig:stempels}. Hierbij moet opgemerkt worden dat de stempels
145allemaal op hun eigen manier schalen.
146
147\begin{figure}
148 \begin{center}
149 \includegraphics[width=0.4\textwidth]{pasted5.pdf}
150 \end{center}
151 \caption{Door slim te coderen kunnen meerdere potenti"{e}le oplossingen tegelijk
152bekeken worden. Hier wordt gebruik gemaakt van (a) het feit dat de ruimte groter
153is dan het ``schaakbord'' dat bekeken wordt en (b) een pixel gecodeerd is uit
154vier onafhankelijke kleuren.}
155 \label{fig:raster}
156\end{figure}
157Er zijn nog twee eigenschappen van de \emph{GPU} waar dankbaar gebruik van
158gemaakt wordt, namelijk kleur en het verschil in grootte van het bord en de
159geaccepteerde invoer. Door slim te combineren ---zie Figuur~\ref{fig:raster} op pagina~\pageref{fig:raster}---
160kan het aantal potenti"{e}le oplossingen dat getest kan worden gemaximaliseerd
161worden.
162
163De individuele \emph{kernels} volgen Algoritme~\ref{alg:kernel}. De test of
164alle punten gemarkeerd zijn lijkt op het eerste gezicht een lus/loop die test over
165alle beeldpunten, echter de \emph{GPU} heeft specifieke instructies om dit
166effici"{e}nter uit te voeren.
167Voor het plaatsen van de stempels is er een een grafische operatie die
168equivalent is aan een \texttt{OF} operatie. Als een \texttt{INVERSE} operatie gebruikt zou
169worden om de stempel te plaatsen zou een tweede overlappende stempel onterecht
170als niet geraakt gemarkeerd worden.
171
172\begin{algoritm}
173\begin{verbatim}
17401: voor alle stempels in stempel locatie
17502: ..plaats stempel
17603: als (alle punten gemarkeerd) dan
17704: ..oplossing=ja
178\end{verbatim}
179\caption{evalueren minimale dominerende set door individuele kernel}
180\label{alg:kernel}
181\end{algoritm}
182
183\section{Conclusie}
184 \begin{figure}
185 \centering
186 \includegraphics[width=0.4\textwidth]{pasted6.pdf}
187 \caption{
188 Uitvoertijden (logaritmische schaal) van de \emph{CPU} en \emph{GPU} gebaseerde minimale dominerende implementaties welke $y(Q_{n})$ uitrekenen. Hoe groter $n$ wordt des te beter de \emph{GPU} gaat presteren in vergelijking met de \emph{CPU}.}
189 \label{fig:uitvoertijd}
190\end{figure}
191Door het toepassen van de \emph{GPU} op het \emph{n-Queens} probleem kunnen
192winsten geboekt worden zoals te zien is in Figuur~\ref{fig:uitvoertijd}\footnote{Gegevens direct uit \cite{CDGPU2006} overgenomen, experiment niet opnieuw uitgevoerd.}.
193Het toepassen van \emph{GPU} dominerende textuur technieken lijkt voor dit
194specifieke geval een goede vertaling van de traditionele \emph{CPU} wereld naar
195een implementatie in de \emph{GPU} wereld. De stempels bieden tevens meer
196vrijheden om alternatieve ``schaakstukken'' te onderzoeken.
197\subsection{Verder werk}
198Er zal gekeken worden of de generatie van nieuwe oplossingen ook op de
199\emph{GPU} gedaan kan worden om zo het probleem van de langzame
200context-wisselingen op te lossen. Verder zal er gekeken worden of de codering
201van de borden op nog een slimmere
202manier aangepakt kan worden: in plaats van de kleur in 4 basis-kleuren uit te
203splitsen zouden ook de volledige 32 bits (elke kleur heeft 8 bits) kunnen worden om
204nog meer (combinaties) van oplossingen te coderen.
205
206\subsection{Discussie}
207De claim dat de \emph{GPU} ``veel'' sneller is lijkt niet gefundeerd in de
208grafieken. Beide lijken erg dicht bij elkaar te blijven en ik zie niet waarom
209dit plots veel beter zou worden bij grotere $n$ waarden.
210De ``tegel-methode'' van Figuur~\ref{fig:raster} lijkt in theorie leuk, maar als
211 $n$ groter wordt is er grote kans dat de tegels niet meer (goed) passen. Als
212 $n$ groter wordt dan in mogelijke invoer ---de maximale grootte van een bord
213die in in het geheugen van de de \emph{GPU} past is gelimiteerd aan de hoeveelheid geheugen in de \emph{GPU} en op welke manier dit geheugen ingedeeld is--- is het helemaal niet meer
214mogelijk.
215
216
217
218\begin{thebibliography}{3}
219\bibitem[DM2003]{DM2003}E. J. Cockayne, \emph{Chessboard domination
220problems}, \emph{Discrete Math}, 86:13--20, 1990.
221
222\bibitem[CDGPU2006]{CDGPU2006}Nathan Cournia,\emph{Chessboard Domination
223on Programmable Graphics Hardware}, \emph{Proceedings of the 44th annual Southeast Regional Conferencee}, pp. 62--67, 2006.
224
225\bibitem[WPCUDA]{WPCUDA}Wikipedia, CUDA, \url{http://en.wikipedia.org/wiki/CUDA}
226(as of Sept. 7, 2010, 12:03 GMT).
227
228\end{thebibliography}
229\newpage
230\end{document}
Note: See TracBrowser for help on using the repository browser.