Conjugate Gradient solver for sparse matrix is in, currently just load matrices from Matrix Market files and can only handle symmetric. Need to enable user made or sparse matrices already on the gpu to be used. Or maybe make a child of SparseMatrix that provides interop with OpenCL/OpenGL. The Conjugate Gradient kernel is straight from OpenCL in Action with some minor style tweaks + more comments