  This paper addresses the problem of provably efficient and practically good
on-the-fly determinacy race detection in task parallel programs that use
futures. Prior works determinacy race detection have mostly focused on either
task parallel programs that follow a series-parallel dependence structure or
ones with unrestricted use of futures that generate arbitrary dependences. In
this work, we consider a restricted use of futures and show that it can be race
detected more efficiently than general use of futures.
  Specifically, we present two algorithms: MultiBags and MultiBags+. MultiBags
targets programs that use futures in a restricted fashion and runs in time
$O(T_1 \alpha(m,n))$, where $T_1$ is the sequential running time of the
program, $\alpha$ is the inverse Ackermann's function, $m$ is the total number
of memory accesses, $n$ is the dynamic count of places at which parallelism is
created. Since $\alpha$ is a very slowly growing function (upper bounded by $4$
for all practical purposes), it can be treated as a close-to-constant overhead.
MultiBags+ an extension of MultiBags that target programs with general use of
futures. It runs in time $O((T_1+k^2)\alpha(m,n))$ where $T_1$, $\alpha$, $m$
and $n$ are defined as before, and $k$ is the number of future operations in
the computation. We implemented both algorithms and empirically demonstrate
their efficiency.
