I am a complete newcomer to Julia and trying to port some of my R code to it; Basically I have rewritten the following R code in Julia:
library(parallel) eps_1<-rnorm(1000000) eps_2<-rnorm(1000000) large_matrix<-ifelse(cbind(eps_1,eps_2)>0,1,0) matrix_to_compare = expand.grid(c(0,1),c(0,1)) indices<-seq(1,1000000,4) large_matrix<-lapply(indices,function(i)(large_matrix[i:(i+3),])) function_compare<-function(x){ which((rowSums(x==matrix_to_compare)==2) %in% TRUE) } > system.time(lapply(large_matrix,function_compare)) user system elapsed 38.812 0.024 38.828 > system.time(mclapply(large_matrix,function_compare,mc.cores=11)) user system elapsed 63.128 1.648 6.108 As one can notice I am getting significant speed-up when going from one core to 11. Now I am trying to do the same in Julia: using Distributions; @everywhere using Iterators; d = Normal(); eps_1 = rand(d,1000000); eps_2 = rand(d,1000000); #Define cluster: addprocs(11); #Create a large matrix: large_matrix = hcat(eps_1,eps_2).>=0; indices = collect(1:4:1000000) #Split large matrix: large_matrix = [large_matrix[i:(i+3),:] for i in indices]; #Define the function to apply: @everywhere function function_split(x) matrix_to_compare = transpose(reinterpret(Int,collect(product([0,1],[0,1])),(2,4))); matrix_to_compare = matrix_to_compare.>0; find(sum(x.==matrix_to_compare,2).==2) end @time map(function_split,large_matrix ) @time pmap(function_split,large_matrix ) 5.167820 seconds (22.00 M allocations: 2.899 GB, 12.83% gc time) 18.569198 seconds (40.34 M allocations: 2.082 GB, 5.71% gc time) I somehow do not understand why parallel map function does not work for me. Maybe somebody can point me to a correct solution.