get kernelNames () {
                return Array.from(new Set(this.kernels.map((k)=>k.name)));
            }
Keeps track of the number of data moves during a kernel execution. We
maintain a stack since kernels can call other kernels, recursively.