Q1: thrust::sequence() Q2: thrust::plus() Q3: rbind(c(1,1,2),c(1,0,0),c(0,1,0)) Q4: library(parallel) matcumsum <- function(cls,x) { rowgrps <- splitIndices(nrow(x),length(cls)) clusterApply(cls,rowgrps, function(onegrp) myx <<- x[onegrp,,drop=FALSE]) results <- clusterEvalQ(cls,t(apply(myx,1,cumsum))) Reduce(rbind,results) } test <- function() { x <- rbind(3:5,c(6,2,9),c(5,12,13)) cls <- makeCluster(2) print(matcumsum(cls,x)) } test()