<!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>Constructing K-d Tree on GPU through Treelet Restructuring *</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>im Bul</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>vints</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dmitry Zh</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>ITMO University</institution>
          ,
          <addr-line>49 Kronverksky Pr., St. Petersburg, 197101</addr-line>
          ,
          <institution>Russia 2 ITMO University</institution>
          ,
          <addr-line>49 Kronverksky Pr., St. Petersburg, 197101</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>With every new generation of graphics processing units (GPUs), offloading ray-tracing algorithms to GPUs becomes more feasible. Software-hardware solutions for ray-tracing focus on implementing its basic components, such as building and traversing bounding volume hierarchies (BVH). However, global illumination algorithms, such as photon mapping method, depend on another kind of acceleration structure, namely k-d trees. In this work, we adapt state-ofthe-art GPU-based BVH-building algorithm of treelet restructuring to k-d trees. By evaluating the performance of the resulting k-d tree, we show that treelet optimisation heuristic suitable for BVHs of triangles is inadequate for k-d trees of points.</p>
      </abstract>
      <kwd-group>
        <kwd>Graphics Processing Unit</kwd>
        <kwd>Kd Tree</kwd>
        <kwd>Bounding Volume Hierarchy</kwd>
        <kwd>Photon Mapping</kwd>
        <kwd>Ray-tracing</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Over the last three decades, physically correct rendering became a ubiquitous method
of data visualization in scientific, educational, industrial design and digital
entertainment fields [
        <xref ref-type="bibr" rid="ref1 ref2">1,2</xref>
        ]. Meanwhile, advances in GPU design brought consumer
computational devices enough processing power to make physically correct rendering feasible
in interactive applications.
      </p>
      <p>In this paper we discuss recent advancements in acceleration structures – building
algorithms used to facilitate physically-correct rendering with GPUs. We apply a
method of building an acceleration structure for ray-tracing for GPUs originally used
with Bounding Volume Hierarchies (BVHs) to k-d trees.</p>
      <p>The paper is organised as follows. In the rest of the "Introduction" section we
describe the necessary preliminaries, such as definitions of acceleration structures and
* Publication is supported by RFBR grant № 18-08-01484.
heuristics, as well as specifics of GPU programming. In the “Related Works” section
we review the development of GPU-based acceleration structures construction and
traversal methods over the years. In the "Methods" section, we describe the choice of the
original BVH-building method and the changes that were necessary to adapt it to k-d
trees. Also, we describe the choice of test scenes and experimental setup. In the
"Results" section, we compare the performance of our method to state-of-the-art top-down
methods for building k-d trees on CPU and to the corresponding BVH-building method.
In the "Discussion" section, we analyse the problems we encountered while adapting
the method and propose the directions for further research.
1.1</p>
    </sec>
    <sec id="sec-2">
      <title>Photon mapping</title>
      <p>
        Photon mapping is a robust method for solving the rendering equation [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The method
is able to reproduce complex optical effects, such as caustics [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. It consists of three
stages:
• cast light rays from into the scene and note the luminance at the rays' points of
intersection ("photons") with the scene surfaces;
• do the same for visibility rays emitted by the camera;
• for each visibility point, gather the photons in its vicinity to calculate the
approximate luminance.
1.2
      </p>
    </sec>
    <sec id="sec-3">
      <title>Acceleration structures</title>
      <p>To perform the photons gathering in the third stage of the photon mapping algorithm,
it is essential to organise the photons into an acceleration structure, such as the k-d tree
or a Bounding Volume Hierarchy.</p>
      <p>
        K-d tree. K-d tree is a binary tree that partitions the scene volume into smaller
volumes by assigning an axis-aligned split plane for one of the scene's k dimensions at
each internal node [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The process of building a tree of volume elements is called
voxelization.
      </p>
      <p>
        Bounding volumes hierarchy. Another important acceleration structure used in
rendering is the bounding volumes hierarchy (BVH) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. BVH partitions the scene
space into a tree of axis-aligned bounding boxes. Building BVHs using massively
parallel architectures (e.g. GPUs) got much attention from researchers and industry [
        <xref ref-type="bibr" rid="ref7 ref8 ref9">7, 8,
9</xref>
        ] during the last decade. The goal of the present work is to apply one of the more
successful methods for building BVHs with GPUs to k-d trees.
      </p>
      <p>Top down vs bottom-up building. When building a tree-like acceleration structure,
there are two primary strategies. Splitting the whole space according to some heuristic,
then proceeding to apply the same heuristic to the resulting subspaces is called
topdown approach. Combining the smallest elements of the set (e.g. photons or triangles)
into gradually bigger units, effectively building the tree from its leaves is called
bottomup approach.</p>
      <p>Constructing K-d Tree on GPU through Treelet Restructuring 3</p>
      <p>
        Top-down methods are known to produce the most effective acceleration structures
[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. However, top-down methods are not suitable for massively-parallel architectures,
such as GPU. This led to development of alternative, bottom-up construction methods.
      </p>
      <p>
        Over the years, several bottom-up methods were suggested by researchers. The basic
method was coined in by Lauterbach et al. in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The method’s idea is to sort the
primitives based on their coordinates on a Morton curve [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], then interpret them as a tree.
The resulting structure is called Linear BVH (LBVH). This method was further refined
in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        The next generation of bottom-up methods uses LBVH as a starting point, then
building up to optimize it by e.g. changing the internal nodes [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] or iteratively merging
them bottom-up [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>It is important to note that top-down methods, while producing more efficient
acceleration structures, tend to be much more computationally intensive than bottom-up
methods, therefore requiring choosing a trade-off between the structure’s quality and
building time. This makes finding a fitting trade-off a critical part of building a
realtime rendering system.
1.3</p>
    </sec>
    <sec id="sec-4">
      <title>Surface area heuristic</title>
      <p>
        Beside the actual tree construction method, the most important thing in an
accelerationstructure-building algorithm is the heuristic that selects the splitting point. It is
important to note that the actual effectiveness of the acceleration structure is highly
scenedependent [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Nonetheless the most popular heuristics are the median heuristic for
kd trees and the Surface Area Heuristic (SAH) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] for BVHs.
      </p>
      <p>Surface Area Heuristic. The idea of the Surface Area Heuristic is to optimize for a
general case of rays traversing the scene at random angles. At each splitting the
heuristic minimizes the summary surface area of the resulting bounding volumes in any given
subtree.
1.4</p>
    </sec>
    <sec id="sec-5">
      <title>GPU architecture</title>
      <p>
        Modern GPUs are SIMT [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] devices, which stands for "Single Instruction Multiple
Threads" architecture, a variant of SIMD architecture [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] with hardware control of
branch divergence. SIMD architecture features an asymmetric ratio of control (CUs) to
processing units (PUs), making it efficient at processing extensive collections of
homogenous data [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. A GPU consists of independent multiprocessors, each of which
has a single CU controlling multiple PUs. To provide data to all PUs of a single
multiprocessor at once, GPU memory controller is optimized to fetch long words. Typically,
GPU's on-chip cache size is small in regards to the number of PUs. To hide memory
access latencies a single multiprocessor pipelines execution of several thread groups,
switching between them when the data from GPU memory becomes available. Threads
running on a single multiprocessor share the register file. Thus, register pressure limits
the number of threads running on a single multiprocessor.
      </p>
      <p>
        These quirks of GPU architecture result in the following rules of efficient GPU
programming [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]:
• avoid branch divergence;
• avoid non-coalesced memory access (gather) in a thread group;
• minimize register usage and device memory access.
      </p>
      <p>
        Modern GPUs have recently received support of hardware acceleration for some
raytracing operations, such as BVH tree traversal. Unfortunately, the underlying hardware
instructions remain undocumented [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] and are only usable through a closed-source
API [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
2
      </p>
      <sec id="sec-5-1">
        <title>Related works</title>
        <p>Being an "embarrassingly parallel" problem, ray-tracing is well suited to GPU
architecture. However, following the rules mentioned above for such stages of a ray-tracing
algorithm as building and traversal of acceleration structures is non-trivial.</p>
        <p>
          Firstly, top-down methods for constructing BVHs and kd-trees are bottlenecked by
the low parallelism during the beginning of the build process. Researchers proposed
several ways to alleviate this problem, such as using trees and BVHs of higher arity or
using hybrid CPU/GPU algorithm [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. Alternatively, it is possible to use bottom-up
building algorithms [
          <xref ref-type="bibr" rid="ref12 ref8">8, 12</xref>
          ] as mentioned in the previous section.
        </p>
        <p>
          Secondly, tree traversal can result in high branch divergence when, for example, a
single thread in a thread group proceeds into a deep branch of the tree when the other
threads in the same group have already terminated. The problem can be tackled both
from the side of traversal algorithm by modifying it to use "persistent threads"
technique [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] and from the side of tree construction algorithm by avoiding creating deep
leaves.
        </p>
        <p>
          Thirdly, while persistent threads method solves the problem of branch divergence, it
can result in scattered memory access. One way to solve this problem is to use prefix
scans, and regularly sort the threads based on locality [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ].
        </p>
        <p>
          Fourthly, GPU cache/on-chip memory proved to be too small to support stack-based
tree traversal methods, which motivated the development of stackless methods as an
alternative [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Though, in recent hardware generations the cache constraints were
somewhat relieved.
        </p>
        <p>
          A detailed analysis of the problem can be found in [
          <xref ref-type="bibr" rid="ref24 ref25">24, 25</xref>
          ].
3
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>Methods</title>
        <p>
          One of the reasons ray-tracing became feasible on GPUs is the rapid development of
algorithms for building high-quality BVHs on massively parallel processors, such as
GPUs [
          <xref ref-type="bibr" rid="ref7 ref9">7, 9</xref>
          ]. We decided to base our algorithm on TRBVH algorithm [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] that is natively
implemented in NVIDIA Optix API [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], has some open-source implementations [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]
and is readily suitable to be converted to work with k-d trees [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. We reimplemented
        </p>
        <p>Constructing K-d Tree on GPU through Treelet Restructuring 5
the algorithm in Python programming language to facilitate rapid prototyping. As the
Python prototype does not run on a GPU, we studied relative and hardware-independent
performance metrics, such as the average number of traversed nodes and SAH cost.
3.1</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>TRBVH algorithm</title>
      <p>
        The idea of TRBVH algorithm is to first build a lower-quality BVH by utilizing Morton
codes (the so-called Linear BVH) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and then enhance its quality selecting small (e.g.
7-9 nodes) "treelets" from it and optimize them by SAH heuristic [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        The LBVH is built in the following way. Coordinates of the primitives (e.g. a
photons or triangle centroids) are converted to 30-bit Morton codes. The resulting array is
sorted using Radix sort [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Then, the sorted points can be readily interpreted as a k-d
tree by comparing the radix prefix of their Morton codes as described in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The
algorithm is very efficient on GPU as it uses the fact that operations for individual
elements are independent of each other.
      </p>
      <p>
        At the optimization stage, the algorithm starts to traverse the LBVH bottom-up,
selecting 7-nodes breadth-first subtrees (“treelets”) to optimize. For each treelet, the
algorithm compares all possible variants of organizing four of its leaves into a new
subtree, comparing the results by SAH. To avoid repeated SAH recalculations, the
algorithm employs methods of dynamic programming [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Treelet optimization processes
run in parallel, using atomic write instructions to avoid data races.
4
4.1
      </p>
      <sec id="sec-6-1">
        <title>Results</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Algorithm modifications</title>
      <p>Every k-d tree can be interpreted as a BVH, but not every BVH can be interpreted as a
k-d tree. BVH nodes' volumes can overlap, which is impossible for k-d tree nodes.
Thus, converting the linear part of the TRBVH algorithm to produce k-d trees is
straightforward because of Morton codes natively splitting the scene space into
nonoverlapping volumes. However, converting the treelet optimisation part requires
modifying the original SAH heuristic to avoid overlapping volumes. To achieve this, we
assign ∞ heuristic cost to permutations that would result in overlapping child volumes.
Also, TRBVH works with triangles, while the photon map consists of points (spheres),
so we had to change the algorithm accordingly.
4.2</p>
    </sec>
    <sec id="sec-8">
      <title>Algorithm performance</title>
      <p>
        We tested the performance of the algorithm with Sibenik, Stanford Dragon and
Conference scenes [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] and Lumicept light modeling system [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. We rendered each scene
using Lumicept’s reverse path tracing mode. In this mode, instead of emitting light rays
(called photons) from light sources, Lumicept emits image photons from the camera.
For each scene, we randomly selected 105 of the generated image photons, then built
two k-d trees by using our Python-based voxelizer prototype. The first tree was built
using linear Morton codes (LBVH) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The second tree was built by refining the first
tree using our treelet-based method. We tested the tree performance by counting the
total number of tree node traversals necessary to find 1000 image photons randomly
selected from the original set.
      </p>
      <p>
        Table 1 shows improvements in SAH cost and ray-tracing performance for k-d trees
built with our treelet-based method relative to k-d trees built with linear Morton codes
(LBVH). Usage of relative values allows us to compare results obtained by using our
Python-based emulation of a k-d tree GPU algorithm to the results reported by Karras
for BVHs in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The data was averaged over two camera positions facing opposing
sides of a scene.
      </p>
      <sec id="sec-8-1">
        <title>Discussion</title>
        <p>Table 1 indicates that treelet restructuring does not increase the quality of the resulting
k-d tree tangibly. We can attribute this effect to the following. First, forbidding volume
overlaps cuts off more than 80% of the search space. Second, SAH heuristic is known
to be better suited to BVHs of triangles, not k-d trees of points. This can be clearly seen
with the Conference scene: after applying treelet restructuring the SAH cost goes down
for both k-d tree (our algorithm) and TRBVH. However, the traversal performance goes
up only for the BVH case, while for the k-d tree it actually decreases. Thus, the direct
translation of BVH-building methods to the domain of k-d trees is not feasible. This
observation gives us clear direction for future research: voxelizers based on the idea of
tree optimization should employ an alternative, more suitable heuristic.</p>
        <p>Constructing K-d Tree on GPU through Treelet Restructuring 7</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Barladian</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voloboy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galaktionov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shapiro</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Integration of realistic computer graphics into computer-aided design and product lifecycle management systems</article-title>
          .
          <source>Programming and Computer Software</source>
          ,
          <volume>44</volume>
          (
          <issue>4</issue>
          ),
          <fpage>225</fpage>
          -
          <lpage>232</lpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Zhdanov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , et al.:
          <article-title>Photorealistic rendering of images formed by augmented reality optical systems</article-title>
          ,
          <source>Programming and Computer Software</source>
          ,
          <volume>44</volume>
          (
          <issue>4</issue>
          ), pp.
          <fpage>213</fpage>
          -
          <lpage>224</lpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Jensen</surname>
          </string-name>
          , H.:
          <article-title>Realistic image synthesis using photon mapping</article-title>
          . AK Peters/CRC Press (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Papadopoulos</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Papaioannou</surname>
          </string-name>
          , G.:
          <article-title>Realistic real-time underwater caustics and godrays</article-title>
          .
          <source>In Proc. GraphiCon</source>
          <year>2009</year>
          , vol.
          <volume>9</volume>
          , pp.
          <fpage>89</fpage>
          -
          <lpage>95</lpage>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Shevtsov</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Soupikov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kapustin</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Highly parallel fast KD‐tree construction for interactive ray tracing of dynamic scenes</article-title>
          .
          <source>In Computer Graphics Forum</source>
          , vol.
          <volume>26</volume>
          (
          <issue>3</issue>
          ), pp.
          <fpage>395</fpage>
          -
          <lpage>404</lpage>
          , Oxford, UK: Blackwell Publishing Ltd (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gunther</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Popov</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seidel</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Slusallek</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Realtime ray tracing on GPU with BVHbased packet traversal</article-title>
          .
          <source>In 2007 IEEE Symposium on Interactive Ray Tracing</source>
          , pp.
          <fpage>113</fpage>
          -
          <lpage>118</lpage>
          , IEEE (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Garanzha</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Premože</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bely</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galaktionov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Grid-based SAH BVH construction on a GPU</article-title>
          .
          <source>The Visual Computer</source>
          ,
          <volume>27</volume>
          (
          <issue>6-8</issue>
          ), pp.
          <fpage>697</fpage>
          -
          <lpage>706</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Lauterbach</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , et al.:
          <article-title>Fast BVH construction on GPUs</article-title>
          .,
          <source>Computer Graphics Forum.</source>
          , vol.
          <volume>28</volume>
          (
          <issue>2</issue>
          )., Oxford, UK: Blackwell Publishing Ltd (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Karras</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aila</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Fast parallel construction of high-quality bounding volume hierarchies</article-title>
          .
          <source>In Proc. of the 5th High-Performance Graphics Conference</source>
          , pp.
          <fpage>89</fpage>
          -
          <lpage>99</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Aila</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karras</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laine</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>On quality metrics of bounding volume hierarchies</article-title>
          .
          <source>In Proc. of the 5th High-Performance Graphics Conference</source>
          , pp.
          <fpage>101</fpage>
          -
          <lpage>107</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Morton</surname>
          </string-name>
          , G.:
          <article-title>A computer oriented geodetic data base and a new technique in file sequencing</article-title>
          ,
          <source>Technical Report</source>
          , Ottawa, Canada: IBM Ltd (
          <year>1966</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Karras</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Maximising parallelism in the construction of BVHs, octrees, and k-d trees</article-title>
          .,
          <source>In Proc. of the Fourth ACM SIGGRAPH/Eurographics conference on High-Performance Graphics</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Domingues</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pedrini</surname>
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>Bounding volume hierarchy optimisation through agglomerative treelet restructuring</article-title>
          ,
          <source>in Proc. of the 7th Conference on High-Performance Graphics</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>MacDonald</surname>
          </string-name>
          , J.,
          <string-name>
            <surname>Booth</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Heuristics for ray tracing using space subdivision</article-title>
          ,
          <source>The Visual Computer</source>
          ,
          <volume>6</volume>
          (
          <issue>3</issue>
          ), pp.
          <fpage>153</fpage>
          -
          <lpage>166</lpage>
          (
          <year>1990</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Lindholm</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nickolls</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Oberman</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Montrym</surname>
            ,
            <given-names>J.: NVIDIA</given-names>
          </string-name>
          <string-name>
            <surname>Tesla</surname>
          </string-name>
          :
          <article-title>A unified graphics and computing architecture</article-title>
          ., IEEE micro,
          <volume>28</volume>
          (
          <issue>2</issue>
          ), pp.
          <fpage>39</fpage>
          -
          <lpage>55</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Flynn</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Some computer organizations and their effectiveness</article-title>
          .,
          <source>IEEE transactions on computers</source>
          ,
          <volume>100</volume>
          (
          <issue>9</issue>
          ), pp.
          <fpage>948</fpage>
          -
          <lpage>960</lpage>
          (
          <year>1972</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Bulavintsev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>An evaluation of CPU vs. GPU performance of some combinatorial algorithms for cryptoanalysis, Vestn</article-title>
          . YuUrGU. Ser. Vych. Matem. Inform.,
          <volume>4</volume>
          :
          <issue>3</issue>
          , pp.
          <fpage>67</fpage>
          -
          <lpage>84</lpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Sanzharov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gorbonosov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frolov</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voloboy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Examination of the Nvidia RTX</article-title>
          .
          <source>In Proceedings of the 29th International Conference on Computer Graphics and Vision</source>
          (GraphiCon
          <year>2019</year>
          ), vol.
          <volume>2485</volume>
          , p.
          <volume>7</volume>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Parker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , et al.:
          <article-title>OptiX: a general purpose ray tracing engine</article-title>
          .
          <source>ACM transactions on graphics (TOG)</source>
          vol.
          <volume>29</volume>
          .4,
          <fpage>p1</fpage>
          -
          <lpage>13</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Roccia</surname>
            ,
            <given-names>J. P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Coustet</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paulin</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Hybrid</surname>
            <given-names>CPU</given-names>
          </string-name>
          /
          <article-title>GPU KD-Tree construction for versatile ray tracing</article-title>
          ,
          <source>Eurographics (Short Papers)</source>
          ,
          <source>Euro-graphics Association</source>
          , pp.
          <fpage>13</fpage>
          -
          <lpage>16</lpage>
          . (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stuart</surname>
            ,
            <given-names>J. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Owens</surname>
            ,
            <given-names>J. D.:</given-names>
          </string-name>
          <article-title>A study of persistent threads style GPU programming for GPGPU workloads</article-title>
          , IEEE, pp.
          <fpage>1</fpage>
          -
          <lpage>14</lpage>
          ., (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Garanzha</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Loop</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Fast ray sorting and breadth‐first packet traversal for GPU ray tracing</article-title>
          .,
          <source>Computer Graphics Forum</source>
          , Vol.
          <volume>29</volume>
          , No.
          <issue>2</issue>
          , pp.
          <fpage>289</fpage>
          -
          <lpage>298</lpage>
          . Oxford, UK: Blackwell Publishing Ltd. (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Popov</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Günther</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seidel</surname>
            ,
            <given-names>H. P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Slusallek</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Stackless KD‐tree traversal for high performance GPU ray tracing</article-title>
          .,
          <source>Computer Graphics Forum</source>
          , Vol.
          <volume>26</volume>
          , No.
          <issue>3</issue>
          , pp.
          <fpage>415</fpage>
          -
          <lpage>424</lpage>
          . Oxford, UK: Blackwell Publishing Ltd. (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Aila</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laine</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Understanding the efficiency of ray traversal on GPUs</article-title>
          ,
          <source>In Proceedings of the conference on high performance graphics</source>
          <year>2009</year>
          , pp.
          <fpage>145</fpage>
          -
          <lpage>149</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Satish</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harris</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garland</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Designing efficient sorting algorithms for manycore GPUs</article-title>
          .,
          <source>In 2009 IEEE International Symposium on Parallel &amp; Distributed Processing</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          , IEEE (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>McGuire</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          : ”Computer Graphics Archive”, URL https://casual-effects.
          <article-title>com/data (</article-title>
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <given-names>Integra</given-names>
            <surname>Inc</surname>
          </string-name>
          ., Lumicept - Hybrid Light Simulation Software, URL http://www.integra.jp/en/products/lumicept (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>