Skip to content

Commit efaa47b

Browse files
Merge pull request #36 from JuliaDiffEq/bug-fix
Bug fix in chunk-size controlled AD
2 parents 2fec1ca + 9803dee commit efaa47b

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

src/differentiation/compute_jacobian_ad.jl

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ function generate_chunked_partials(x,color,::Val{N}) where N
5555

5656
for color_i in 1:maximum(color)
5757
for j in 1:length(x)
58-
partials[j, color_i] = color[j] == color_i
58+
partials[j,color_i] = color[j]==color_i
5959
end
6060
end
6161

@@ -100,7 +100,6 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number},
100100
partial_i = p[i]
101101
t .= Dual{typeof(f)}.(x, partial_i)
102102
f(fx,t)
103-
104103
if J isa SparseMatrixCSC
105104
rows_index, cols_index, val = findnz(J)
106105
for j in 1:chunksize
@@ -111,15 +110,12 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number},
111110
end
112111
end
113112
color_i += 1
113+
(color_i > maximum(color)) && continue
114114
end
115115
else
116116
for j in 1:chunksize
117117
col_index = (i-1)*chunksize + j
118-
J[:, col_index] .= partials.(fx, color_i)
119-
color_i += 1
120-
if color_i == maximum(color) + 1
121-
color_i = 1
122-
end
118+
J[:, col_index] .= partials.(fx, j)
123119
end
124120
end
125121
end

0 commit comments

Comments
 (0)