From cd3a0fd9fa2f805cea9010dea8cea0dc6156ce02 Mon Sep 17 00:00:00 2001 From: Jarrett Revels Date: Wed, 15 Mar 2017 12:48:45 -0400 Subject: [PATCH] fix seed-reset order for no-op cases where input === the output --- src/gradient.jl | 8 ++++---- src/jacobian.jl | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gradient.jl b/src/gradient.jl index e0960bf7..fd0f9e29 100644 --- a/src/gradient.jl +++ b/src/gradient.jl @@ -94,17 +94,17 @@ function chunk_mode_gradient_expr(out_definition::Expr) # do first chunk manually to calculate output type seed!(xdual, x, 1, seeds) ydual = f(xdual) - seed!(xdual, x, 1) $(out_definition) extract_gradient_chunk!(out, ydual, 1, N) + seed!(xdual, x, 1) # do middle chunks for c in middlechunks i = ((c - 1) * N + 1) seed!(xdual, x, i, seeds) ydual = f(xdual) - seed!(xdual, x, i) extract_gradient_chunk!(out, ydual, i, N) + seed!(xdual, x, i) end # do final chunk @@ -156,9 +156,9 @@ if IS_MULTITHREADED_JULIA # do first chunk manually to calculate output type seed!(current_xdual, x, 1, current_seeds) current_ydual = f(current_xdual) - seed!(current_xdual, x, 1) $(out_definition) extract_gradient_chunk!(out, current_ydual, 1, N) + seed!(current_xdual, x, 1) # do middle chunks Base.Threads.@threads for c in middlechunks @@ -169,8 +169,8 @@ if IS_MULTITHREADED_JULIA local chunk_index = ((c - 1) * N + 1) seed!(chunk_xdual, x, chunk_index, chunk_seeds) local chunk_dual = f(chunk_xdual) - seed!(chunk_xdual, x, chunk_index) extract_gradient_chunk!(out, chunk_dual, chunk_index, N) + seed!(chunk_xdual, x, chunk_index) end # do final chunk diff --git a/src/jacobian.jl b/src/jacobian.jl index 65bd3e3d..83103045 100644 --- a/src/jacobian.jl +++ b/src/jacobian.jl @@ -125,18 +125,18 @@ function jacobian_chunk_mode_expr(work_array_definition::Expr, compute_ydual::Ex # do first chunk manually to calculate output type seed!(xdual, x, 1, seeds) $(compute_ydual) - seed!(xdual, x, 1) $(out_definition) out_reshaped = reshape_jacobian(out, ydual, xdual) extract_jacobian_chunk!(out_reshaped, ydual, 1, N) + seed!(xdual, x, 1) # do middle chunks for c in middlechunks i = ((c - 1) * N + 1) seed!(xdual, x, i, seeds) $(compute_ydual) - seed!(xdual, x, i) extract_jacobian_chunk!(out_reshaped, ydual, i, N) + seed!(xdual, x, i) end # do final chunk