  Large-scale machine learning and data mining applications require computer
systems to perform massive matrix-vector and matrix-matrix multiplication
operations that need to be parallelized across multiple nodes. The presence of
straggling nodes -- computing nodes that unpredictably slowdown or fail -- is a
major bottleneck in such distributed computations. Ideal load balancing
strategies that dynamically allocate more tasks to faster nodes require
knowledge or monitoring of node speeds as well as the ability to quickly move
data. Recently proposed fixed-rate erasure coding strategies can handle
unpredictable node slowdown, but they ignore partial work done by straggling
nodes thus resulting in a lot of redundant computation. We propose a
\emph{rateless fountain coding} strategy that achieves the best of both worlds
-- we prove that its latency is asymptotically equal to ideal load balancing,
and it performs asymptotically zero redundant computations. Our idea is to
create linear combinations of the $m$ rows of the matrix and assign these
encoded rows to different worker nodes. The original matrix-vector product can
be decoded as soon as slightly more than $m$ row-vector products are
collectively finished by the nodes. We conduct experiments in three computing
environments: local parallel computing, Amazon EC2, and Amazon Lambda, which
show that rateless coding gives as much as $3\times$ speed-up over uncoded
schemes.
