<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>CUDA Optimierung von nicht-linearer ober achen- und intensitatsbasierter Registrierung</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Stefan Ko¨hnen</string-name>
          <email>stefan.khnen@googlemail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Ehrhardt</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Schmidt-Richberg</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Heinz Handels</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institut fu ̈r Medizinische Informatik, Universita ̈t zu Lu ̈beck</institution>
        </aff>
      </contrib-group>
      <fpage>99</fpage>
      <lpage>103</lpage>
      <abstract>
        <p>Kurzfassung. Die vorliegende Arbeit bescha¨ftigt sich mit der Implementierung von Teilen eines Registrierungsalgorithmus in der Compute Unified Device Architecture (CUDA) von NVIDIA und der daraus resultierenden Zeitersparnis. Es wurden die einzelnen Schritte des Registrierungsalgorithmus analysiert und auf ihre Parallelisierbarkeit untersucht. Die Implementierungen wurden anhand von 20 thorakalen CT-Datensa¨tzen evaluiert und der SpeedUp berechnet. Es wurde eine Beschleunigung vom Faktor 143 bei der TPS Interpolation und ein Faktor 12 beim Image Warping erreicht. Obwohl nur 2 Teilschritte auf der GPU umgesetzt wurden, konnte ein Speedup des Gesamtverfahren von 2.175 erreicht werden. Dies zeigt das eine GPU-Implementierung effizienter als eine CPU-basierte Parallelisierung sein kann.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Einleitung</title>
    </sec>
    <sec id="sec-2">
      <title>Methoden</title>
      <p>
        Ausgangsdaten fu¨r die Registrierung sind ein Referenzbild IF und ein zu
registrierendes Bild IM , sowie zugeho¨rige Segmentierungsmasken des relevanten
Organs (z.B. der Lunge) MF und MM . Der Registrierungsalgorithmus besteht
aus zwei wesentlichen Komponenten: einer oberfla¨chenbasierten Vorregistrierung
und einem diffeomorphen, intensita¨tsbasierten Registrierungsschritt [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Die
einzelnen Teilschritte des Verfahrens sind in Abb. 1 zusammengefasst. Aus den
Masken MF und MM werden Oberfla¨chenmodelle generiert, die zuna¨chst affin
(mittels ICP) und anschließend nicht-linear registriert werden. Auf den
registrierten Oberfla¨chen werden korrespondierende Punkte gesampelt, um daraus mittels
einer Thin-Plate-Spline Interpolation das Deformationsfeld φpre zu erzeugen. Die
diffeomorphe, intensita¨tsbasierte Registrierung wird anschließend auf das
Referenzbild IF und IM ◦φpre angewendet. Die gesuchte Gesamttransformation ergibt
sich dann durch die Konkatenation φ = φdiff ◦ φpre.
      </p>
      <p>Fu¨r die Umsetzung der GPU-basierten Parallelisierung wurden zuna¨chst die
anteiligen Rechenzeiten der einzelnen Teilschritte bestimmt (Abb. 1).
Anschließend wurde die Eignung der einzelnen Teilschritte fu¨r eine GPU-basierte
Parallelisierung untersucht (Abschn. 2.1) und eine Gewichtung hinsichtlich Eignung und
Relevanz fu¨r eine Beschleunigung festgelegt. Die GPU-basierte Parallelisierung
wurde dann schrittweise entsprechend der gefundenen Gewichtung durchgefu¨hrt
(Abschn. 2.2). Die GPU-Implementierung wurde fu¨r eine NVIDIA Quadro FX
3800 optimiert. Diese Grafikkarte hat 1024 MB globalen Speicher, 24
Multiprozessoren mit je 8 Prozessor-Kernen.
2.1</p>
      <p>Laufzeitkomplexitat und Parallelisierbarkeit
Die Schritte des Registrierungsalgorithmus wurden in der Reihenfolge der
gro¨ßtmo¨glichen Laufzeitersparnis analysiert. Die TPS Interpolation und die
diffeomorphe Registrierung sind mit 47.8% und 45.0% die zwei aufwa¨ndigsten
Schritte des Registrierungsalgorithmus und bieten sich damit fu¨r eine Parallelisierung
an. Die TPS Interpolation kann aufgrund der einfachen Verarbeitungsschritte
einfach in CUDA implementiert werden. Die diffeomorphe Registrierung besteht
aus mehreren Teilen (Abb. 1): Die Exponentiation erfordert es, dass zwei
Deformationsfelder im Grafikkartenspeicher gehalten werden. Das ist momentan
aufgrund von Speichereinschra¨nkungen nicht mo¨glich, es wa¨re notwendig einen
Streaming-Ansatz zu implementieren, um diese Einschra¨nkung zu umgehen. Die
Regularisierung wurde bereits stark auf der CPU optimiert und es ist fraglich in
wieweit mit CUDA eine weitere Verbesserung erreicht werden kann. Das Warping
ist aufgrund seiner simplen Funktion einfach in CUDA zu implementieren. Ein
weiterer positiver Aspekt der CUDA Implementierung des Warping ist die
Verwendung des Textur-Speicher, der es erlaubt die in der Grafikkarten-Hardware
implementierte trilineare Interpolation zu nutzen. Die Berechnung des
UpdateFeld ist ein Schritt der sich aufgrund der einfachen Funktion gut mit CUDA
implementieren la¨ßt.</p>
      <p>
        Die Umsetzung der Nicht linearen Oberfla¨chen Registrierung und des
ICPAlgorithmus beno¨tigen eine Implementierung des
k-Nearest-Neighbour-Algorithmus (kNN) auf der GPU. Zwar gibt es bereits Ansa¨tze diesen Algorithmus in
CUDA zu implementieren, diese sind aber in der Anzahl der verwendbaren Punkte
begrenzt [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] und mu¨ssen daher zuna¨chst angepasst werden. Die
Oberfla¨chengenerierung basiert auf dem Marching-Cubes-Algorithmus fu¨r den es bereits
funktionierende Implementierungen in CUDA [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] gibt. Die Konkatenation hat
nur einen geringen Anteil an der Gesamtlaufzeit, außerdem ist es wie bei der
Exponentiation notwendig zwei Deformationsfelder im Grafikkartenspeicher zu
halten.
      </p>
      <p>Aufgrund obiger Analyse werden zuna¨chst die Schritte TPS, Warping,
Compute Update Field und Regularisierung in CUDA umgesetzt. Die Oberfla¨chen
Generierung ist aufgrund des geringen Anteils an der Laufzeit und dem
hohem Aufwand einen Marching-Cubes-Algorithmus in CUDA zu implementieren
nicht fu¨r eine CUDA-Implementierung vorgesehen. Da ICP und die nicht-lineare
Oberfla¨chen Registrierung den kNN-Algorithmus beno¨tigen, muss zuna¨chst eine
kNN-Implementierung verfu¨gbar sein die nicht in der Anzahl der Punkte
limitiert ist. Die Schritte Exponantiation und Konkatenation ko¨nnen, aufgrund ihres
hohen Speicherbedarfs, erst implementiert werden wenn ein Streaming-Ansatz
fu¨r CUDA implementiert wurde.</p>
      <p>Input data</p>
      <p>Marching</p>
      <p>Cubes
0,1%
Warping
0,1%</p>
      <p>ICP
1,5%
Diffeom.</p>
      <p>Reg.
45,0%</p>
      <p>Surface</p>
      <p>Reg.
5,4%
0,1%</p>
      <p>TPS
Interpol.
47,8%
Diffeom. Reg.</p>
      <p>Warping
14,1%</p>
      <p>Comp.</p>
      <p>Update
7,1%</p>
      <p>Regularization
31,7%</p>
      <p>Exponentiation
45,8%
Abb. 1. Aufbau des Registrierungsalgorithmus. An jedem Schritt sind die Anteile an
der Gesamtlaufzeit angegeben.</p>
      <p>GPU-basierte Beschleunigung/Parallelisierung
Bei der TPS Interpolation wird an zwei korrespondierenden Landmarken Sets
mit N Punkten ein Deformationsfeld bestimmt. Im ersten Schritt wird dabei eine
Matrix der Gro¨ße 3 × (3 + N + 1) auf der CPU invertiert. Die Matrix wird
zusammen mit den Landmarken auf die GPU u¨bertragen. Außerdem muss ein Bereich
des Grafikkarten-Speichers fu¨r das zu generierende Deformationsfeld reserviert
werden. Anschließend wird fu¨r jedes Voxel im Displacement Field ein Thread
auf der Grafikkarte erzeugt, die dann parallel die Transformation berechnen.</p>
      <p>Das Image Warping erfordert es das verwendete Bild und das
Deformationsfeld in den Grafikspeicher zu u¨bertragen. Um weitere Zeitersparnis zu erreichen,
wird das Bild in den Textur-Speicher der Grafikkarte geladen und die Hardware
implementierte Interpolation verwendet.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Ergebnisse</title>
      <p>Die Laufzeiten der GPU-Programme wurden mit CudaEvents der NVIDIA
CUDA API gemessen und umfassen auch die Operationen zur Speicherallokation
und Speichertransfer. Die Laufzeiten der Programmteile die die CPU verwenden
wurden mit der C time Bibliothek erfasst. Zur Messung wurden 20 thorakale
CT-Datensa¨tzen verwendet. Alle Zeiten wurden fu¨nfmal gemessen und jeweils
der Mittelwert verwendet.</p>
      <p>Da die urspru¨ngliche Implementierung der TPS-Interpolation auf VTK
basiert, wurde zusa¨tzlich noch eine CPU basierte Ausfu¨hrung des Kernel Code
angegeben um Overhead von VTK bei der Zeitmessung auszuschließen (Abb. 2a).</p>
      <p>Da beim Schritt Image Warping aufgrund der Normalisierungsschritte fu¨r
den Textur-Speicher zusa¨tzlicher Aufwand entsteht, umfasst die Zeitmessung
auch diese Schritte (Abb. 2b). Die Normalisierungsschritte sind erforderlich, da
der Textur-Speicher nur im Bereich [0;1] funktioniert.</p>
      <p>
        Zur Berechnung der erreichten Beschleunigung des gesamten
Registrierungsalgorithmus nach Amdahl [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] wurden die prozentualen Anteile aus Abbildung 1
(a) TPS
      </p>
      <p>(b) Warping
Abb. 2. Vergleich der Implementierungen
verwendet. Die Beschleunigung der TPS-Interpolation um den gemittelten
Faktor 143 und des Image Warping um den gemittelten Faktor 12 ergibt eine
Beschleunigung des gesamten Algorithmus um 2,175.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Diskussion</title>
      <p>Am Graphen in Abb. 2a kann man erkennen das die Implementierung des
TPSResampling in CUDA eine erhebliche Zeitersparnis mit sich bringt. Der
Beschleunigungsfaktor liegt bei ca. 143 im Vergleich zu einer Implementierung mit
VTK. Die Implementierung des Warping hat eine geringere Ersparnis gebracht
(Abb. 2b), der Beschleunigungsfaktor liegt bei ca. 12. Allerdings wird durch die
ha¨ufige Verwendung des Warping, im Gesamtkontext des
Registrierungsalgorithmus, die Laufzeit erneut bedeutend verringert.</p>
      <p>Die weiteren Schritte beinhalten die Umsetzung der in Abschnitt 2.1
genannten Schritte, wie beispielsweise die Berechnung des Update Feldes. Außerdem
werden die Schritte die nicht einfach parallelisierbar sind weiterhin auf mo¨gliche
Optimierungen untersucht. Eine weitere Mo¨glichkeit fu¨r Optimierungen wa¨ren
die Normalisierungsschritte des Warping. Die Normalisierung ko¨nnte ebenfalls
auf der GPU ausgefu¨hrt werden.</p>
      <p>Durch eine Grafikkarte die mehr globalen Speicher bietet wa¨re es mo¨glich
weitere Teilschritte auch ohne einen Streaming-Ansatz zu implementieren. Die
Arbeit zeigt aber, dass sich auch durch die GPU-Implementierung weniger
Teilschritte nicht-lineare Registrierungs-Algorithmen erheblich beschleunigen lassen.</p>
    </sec>
    <sec id="sec-5">
      <title>Literaturverzeichnis</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Ehrhardt</surname>
            <given-names>J</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Werner</surname>
            <given-names>R</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt-Richberg</surname>
            <given-names>A</given-names>
          </string-name>
          , et al.
          <article-title>Statistical modeling of 4D respiratory lung motion using diffeomorphic image registration</article-title>
          .
          <source>IEEE Trans Med Imaging</source>
          .
          <year>2010</year>
          ; p.
          <fpage>1</fpage>
          -
          <lpage>1</lpage>
          . (accepted).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Schmidt-Richberg</surname>
            <given-names>A</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ehrhardt</surname>
            <given-names>J</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Werner</surname>
            <given-names>R</given-names>
          </string-name>
          , et al.
          <article-title>Diffeomorphic diffusion registration of lung CT images</article-title>
          .
          <source>Med Image Anal for the Clin Grand Challenge</source>
          .
          <year>2010</year>
          ; p.
          <fpage>55</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Modat</surname>
            <given-names>M</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ridgway</surname>
            <given-names>GR</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
            <given-names>ZA</given-names>
          </string-name>
          , et al.
          <article-title>Fast free-form deformation using graphics processing units</article-title>
          .
          <source>Comput Methods Programs Biomed</source>
          .
          <year>2010</year>
          ;
          <volume>98</volume>
          (
          <issue>3</issue>
          ):
          <fpage>278</fpage>
          -
          <lpage>84</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. Ko¨hn
          <string-name>
            <given-names>J</given-names>
            ,
            <surname>Drexl</surname>
          </string-name>
          <string-name>
            <surname>F</surname>
          </string-name>
          , Ko¨onig M, et al.
          <article-title>GPU accelerated image registration in two and three dimensions</article-title>
          .
          <source>In: Proc BVM</source>
          . Springer;
          <year>2006</year>
          . p.
          <fpage>261</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Garcia</surname>
            <given-names>V</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Debreuve</surname>
            <given-names>E</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barlaud</surname>
            <given-names>M</given-names>
          </string-name>
          .
          <article-title>Fast k nearest neighbor search using GPU</article-title>
          .
          <source>In: Proc CVPR Workshop on Computer Vision on GPU. Anchorage</source>
          , Alaska, USA;
          <year>2008</year>
          . p.
          <fpage>1</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Nguyen</surname>
            <given-names>H. GPU</given-names>
          </string-name>
          <article-title>Gems 3</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          ;
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Amdahl</surname>
            <given-names>GM</given-names>
          </string-name>
          .
          <article-title>Validity of the single processor approach to achieving large scale computing capabilities</article-title>
          .
          <source>Proc AFIPS (Spring)</source>
          .
          <year>1967</year>
          ; p.
          <fpage>483</fpage>
          -
          <lpage>5</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>