small optimizations
correct, but slow, coo kernel
coo scratch space, plus racy reduction
mostly correct multi-kernel reduction, slow
switch to left-leaning reduction tree. much faster, still not fully correct
cache opts on scratch, still not correct
checkpoint. still broken
re-added correct, but slightly slower, kernel
checkpoint. i think segmented reduction works
cleanup hybrid spmv kernel dispatcher
align scratch to 512 byte boundaries
unrolling opts
skip expand in mkl
typedef in mkl disptch