def multiplyVector(self, vector, type="default", testing=False): result = vec.ValueVector(self.address.nrows) size = self.address.nnz sp = size / self.address.ncols if (type == "default"): if (size < 6198): PTI.ptiSparseMatrixMulVectorCSR(result.address, self.address, vector.address) elif (sp < 444.3): PTI.ptiOmpSparseMatrixMulVectorCSR(result.address, self.address, vector.address) else: PTI.ptiOmpSparseMatrixMulVectorCSRReduce( result.address, self.address, vector.address) elif (type == "serial"): PTI.ptiSparseMatrixMulVectorCSR(result.address, self.address, vector.address) elif (type == "CPU"): PTI.ptiOmpSparseMatrixMulVectorCSR(result.address, self.address, vector.address) elif (type == "CPU_Buff"): PTI.ptiOmpSparseMatrixMulVectorCSRReduce(result.address, self.address, vector.address) if not testing: return result else: PTI.ptiFreeValueVector(result.address)