
PACT ’22, October 10–12, 2012, Chicago,IL Durvasula, et al.
voxel hash is up to
60%
of the overall map update time, leading to
high latency map updates. Another commonly used technique is
to use octrees [
15
]. State-of-the-art octree implementations store
blocks of voxels as leaves of a tree data structure, but still incur
similar voxel data access latencies as that of voxel hashing [24].
Our goal is to accelerate this voxel data retrieval time during
map updates in order to have the low latency map updates at
high-resolution that are crucial for many important applications.
We observe that while mapping requires a large number of up-
dates/accesses (in the order of millions) to voxels, many of which
are repeated accesses to the same voxels.
We introduce VoxelCache, a hardware-software mechanism to
enable fast map updates by ensuring low latency accesses to voxel
data. The key idea behind VoxelCache is to leverage temporal local-
ity in accesses to the voxels by caching the pointer to the voxel cor-
responding to each 3D coordinate. VoxelCache enables fast lookups
to the voxel blocks by using the on-chip caches to save the voxel
block pointers for recently accessed voxels. This avoids the need to
perform expensive hash table computations for each lookup in the
case of voxel hashing or expensive tree traversal in octrees.
We demonstrate that our approach achieves speedups of
1.47𝑋
(upto
1.66𝑋
) and
1.79𝑋
(upto
1.91𝑋
) on average in mapping update
for various commonly-used SLAM and 3D reconstruction frame-
works on CPUs and GPUs respectively. The contributions of this
work are as follows:
•
We perform a detailed characterization of various 3D map-
ping and reconstruction tasks, and we observe that voxel
hash resolution forms a signicant performance bottleneck
for mapping.
•
We introduce VoxelCache, a hardware-software mechanism
to accelerate mapping updates at higher resolutions by en-
abling faster accesses to voxel data.
•
We evaluate VoxelCache for various SLAM, online 3D re-
construction frameworks that construct an SDF map of its
environment on both CPUs and GPUs. We nd that Voxel-
Cache is able to provide signicant speedups in map update
latencies for these workloads.
2 BACKGROUND AND MOTIVATION
2.1 Representation of Voxel Maps in Memory
A straightforward approach to store voxel data is to use a 3D array
indexed by the spatial coordinate of the voxel [
18
,
37
]. However,
this approach is not scalable and becomes impractical for large
maps or at high resolution as it requires a signicant amount of
memory for storage. For example, a 3D array to represent occupancy
information for a relatively small
10𝑚×10𝑚×10𝑚
region with
voxels of resolution 2𝑐𝑚 would require 500𝑀𝐵.
2.1.1 Voxel Data Structures.
Voxel hashing
[
28
] provides an e-
cient way to store maps of large areas in a scalable manner while
incurring low access/insertion latencies. Compared to a 3D array
representation of voxels which densely represents both empty and
occupied spaces, voxel hashing only allocates voxels for areas that
are occupied. Unallocated voxels are considered to be empty mak-
ing it highly scalable with respect to memory. Voxel hashing thus
involves saving allocated blocks of voxels (of size
𝑛×𝑛×𝑛
) that
kx, ky, kz
hash()
Buckets
Sequence of
data-dependent loads
Block Pointers
Figure 1: Retrieving block pointer with a hash table lookup
is indexed the coordinates of voxel block using a hash table. Map-
ping a large scene involves a number of allocations of blocks of
voxels. A large block size would decrease the number of hash table
entries needed, but would greatly increase the memory footprint
occupied by the block. Since the target platforms for a number
of SLAM/mapping and reconstruction frameworks are embedded
systems which have constraints on memory and compute power, a
large block size is generally not preferred. A block of dimensions
8×8×8is usually chosen.
Octrees
[
15
] are another popular approach for storing voxel in-
formation of large regions of the environment in memory. Octrees
use a tree data structure to store voxel data in space. Each node in
the tree corresponds to a cubic volume in 3D space. A node may
contain
8
children, which represent 8 equal octants of the cube, or
it may be a leaf node, which corresponds to an individual voxel. An
access to a voxel involves traversing through the tree data structure
starting from the root node to the leaf node. Since each access to a
voxel requires a tree traversal, octrees incur a high access latency,
making online mapping a lot more time-consuming compared to
implementations using voxel hashing. However, some recent works
on online mapping with octrees propose specialized implementa-
tions that achieve similar performance as implementations with
voxel hashing [7, 24].
2.1.2 Signed Distance Fields and Map Updates. Signed distance
eld (SDF) information stored in voxels have previously been used
to represent 3D volumes in graphics applications, but are increas-
ingly deployed in computer vision and simultaneous localization
and mapping (SLAM) tasks due to the exible representation and
accurate 3D reconstructions it is able to provide [
18
,
31
]. A signed
distance is computed for each voxel in the map, and represents the
estimated distance to the closest occupied surface in space. While
signed distance elds provide high quality environment represen-
tation, they have large memory requirements. A voxel grid map to
store the signed distance is the most commonly used approach in
mapping literature [
9
,
13
,
18
,
22
,
26
,
32
–
35
,
37
,
38
]. In this work, we
mainly consider frameworks whose map construction maintains
and updates signed distance information stored in voxel grids.
The map update routine receives depth measurement informa-
tion of dierent points in space from either depth cameras / LiDAR
or stereo vision cameras, and a pose estimate of the sensor from
odometry measurements or external pose measurements as the
input. Real time computation of true SDF from depth sensor mea-
surements over a large volume is computationally expensive [
18
].