Working on profiling which part is the slowest part of the program, looks like sparseMatVecMult is by far the slowest taking about 100/1000x longer than any other kernel (~2.4 ms vs .004 or .0004) so I'll look into this. also I see to crash with a read error on the events but I'm not sure why