Skip to content

Instantly share code, notes, and snippets.

@dpo
Created April 30, 2014 16:30
Show Gist options
  • Select an option

  • Save dpo/11431891 to your computer and use it in GitHub Desktop.

Select an option

Save dpo/11431891 to your computer and use it in GitHub Desktop.
function build_something_sparse_orig()
vec_len = 70000
row_ind = Uint64[]
col_ind = Uint64[]
value = Float64[]
for j = 1:vec_len
for k = 1:700
ind = k*50
push!(row_ind, ind)
push!(col_ind, j)
push!(value, 5.0)
end
end
return (row_ind, col_ind, value)
end
function build_something_sparse()
vec_len = 70000
row_ind = zeros(Uint64, vec_len * 700)
col_ind = zeros(Uint64, vec_len * 700)
value = zeros(Float64, vec_len * 700)
i = 1;
@inbounds begin
for j = 1:vec_len
for k = 1:700
row_ind[i] = k*50;
col_ind[i] = j;
value[i] = 5.0;
i = i + 1;
end
end
end
return (row_ind, col_ind, value)
end
function build_something_sparse2()
vec_len = 70000
row_ind = zeros(Uint64, vec_len * 700)
col_ind = zeros(Uint64, vec_len * 700)
value = zeros(Float64, vec_len * 700)
i = 1;
@inbounds begin
@simd for j = 1:vec_len
@simd for k = 1:700
row_ind[i] = k*50;
col_ind[i] = j;
value[i] = 5.0;
i = i + 1;
end
end
end
return (row_ind, col_ind, value)
end
function build_something_sparse3()
vec_len = 70000
nnz = vec_len * 700
row_ind = zeros(Uint64, nnz)
col_ind = zeros(Uint64, vec_len+1) # Assume ncol==vec_len
value = 5*ones(Float64, nnz)
i = 1;
@inbounds begin
@simd for j = 1:vec_len
col_ind[j] = i;
@simd for k = 1:700
row_ind[i] = k*50;
i = i + 1;
end
end
col_ind[vec_len+1] = nnz + 1;
end
return (row_ind, col_ind, value)
end
(r,c,v) = build_something_sparse_orig();
@time (r,c,v) = build_something_sparse_orig();
(r,c,v) = build_something_sparse();
@time (r,c,v) = build_something_sparse();
(r,c,v) = build_something_sparse2();
@time (r,c,v) = build_something_sparse2();
A = sparse(r,c,v);
@time A = sparse(r,c,v);
(r,c,v) = build_something_sparse3();
@time (r,c,v) = build_something_sparse3();
nrow = ncol = length(c)-1;
A = SparseMatrixCSC(nrow, ncol, c,r,v);
@time A = SparseMatrixCSC(nrow, ncol, c,r,v);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment