Skip to content

Instantly share code, notes, and snippets.

@tcovert
Last active May 12, 2016 21:29
Show Gist options
  • Save tcovert/3b9b982ba8b13f5984bebb63887b6def to your computer and use it in GitHub Desktop.
Save tcovert/3b9b982ba8b13f5984bebb63887b6def to your computer and use it in GitHub Desktop.
addprocs(4)
blas_set_num_threads(1)
function f(K, k, y, masks, ranges)
function dowork(i)
z = K[masks[:, i], masks[:, i]] \ y[ranges[i, 1]:ranges[i, 2]]
z = k[:, ranges[i, 1]:ranges[i, 2]] * z
return z
end
r = pmap(dowork, collect(1:size(ranges, 1)))
return r
end
n = 4000
m = 100
K = randn(n, n)
K = K' * K
K = K + eye(n)
masks = rand(Bool, n, m)
sizes = vec(sum(masks, 1))
k = randn(m, sum(sizes))
y = randn(sum(sizes))
ranges = hcat(vcat(0, cumsum(sizes)[1:end-1]) .+ 1, cumsum(sizes))
K = convert(SharedArray, K)
masks = convert(SharedArray, masks)
k = convert(SharedArray, k)
y = convert(SharedArray, y)
ranges = convert(SharedArray, ranges)
r = f(K, k, y, masks, ranges)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment