@@ -3,7 +3,7 @@ struct ForwardColorJacCache{T,T2,T3,T4,T5,T6}
3
3
fx:: T2
4
4
dx:: T3
5
5
p:: T4
6
- color :: T5
6
+ colorvec :: T5
7
7
sparsity:: T6
8
8
chunksize:: Int
9
9
end
@@ -21,16 +21,16 @@ getsize(N::Integer) = N
21
21
22
22
function ForwardColorJacCache (f,x,_chunksize = nothing ;
23
23
dx = nothing ,
24
- color = 1 : length (x),
24
+ colorvec = 1 : length (x),
25
25
sparsity:: Union{AbstractArray,Nothing} = nothing )
26
26
27
27
if _chunksize === nothing
28
- chunksize = default_chunk_size (maximum (color ))
28
+ chunksize = default_chunk_size (maximum (colorvec ))
29
29
else
30
30
chunksize = _chunksize
31
31
end
32
32
33
- p = adapt .(typeof (x),generate_chunked_partials (x,color ,chunksize))
33
+ p = adapt .(typeof (x),generate_chunked_partials (x,colorvec ,chunksize))
34
34
t = Dual {typeof(f)} .(x,first (p))
35
35
36
36
if dx === nothing
@@ -42,24 +42,24 @@ function ForwardColorJacCache(f,x,_chunksize = nothing;
42
42
end
43
43
44
44
45
- ForwardColorJacCache (t,fx,_dx,p,color ,sparsity,getsize (chunksize))
45
+ ForwardColorJacCache (t,fx,_dx,p,colorvec ,sparsity,getsize (chunksize))
46
46
end
47
47
48
- generate_chunked_partials (x,color ,N:: Integer ) = generate_chunked_partials (x,color ,Val (N))
49
- function generate_chunked_partials (x,color ,:: Val{chunksize} ) where chunksize
48
+ generate_chunked_partials (x,colorvec ,N:: Integer ) = generate_chunked_partials (x,colorvec ,Val (N))
49
+ function generate_chunked_partials (x,colorvec ,:: Val{chunksize} ) where chunksize
50
50
51
- num_of_chunks = Int (ceil (maximum (color ) / chunksize))
51
+ num_of_chunks = Int (ceil (maximum (colorvec ) / chunksize))
52
52
53
- padding_size = (chunksize - (maximum (color ) % chunksize)) % chunksize
53
+ padding_size = (chunksize - (maximum (colorvec ) % chunksize)) % chunksize
54
54
55
- partials = BitMatrix (undef, length (x), maximum (color ))
55
+ partials = BitMatrix (undef, length (x), maximum (colorvec ))
56
56
partial = BitMatrix (undef, length (x), chunksize)
57
57
chunked_partials = Array{Array{Tuple{Vararg{Bool,chunksize}},1 },1 }(
58
58
undef, num_of_chunks)
59
59
60
- for color_i in 1 : maximum (color )
60
+ for color_i in 1 : maximum (colorvec )
61
61
for j in 1 : length (x)
62
- partials[j,color_i] = color [j]== color_i
62
+ partials[j,color_i] = colorvec [j]== color_i
63
63
end
64
64
end
65
65
@@ -82,9 +82,9 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number},
82
82
f,
83
83
x:: AbstractArray{<:Number} ;
84
84
dx = nothing ,
85
- color = eachindex (x),
85
+ colorvec = eachindex (x),
86
86
sparsity = ArrayInterface. has_sparsestruct (J) ? J : nothing )
87
- forwarddiff_color_jacobian! (J,f,x,ForwardColorJacCache (f,x,dx= dx,color = color ,sparsity= sparsity))
87
+ forwarddiff_color_jacobian! (J,f,x,ForwardColorJacCache (f,x,dx= dx,colorvec = colorvec ,sparsity= sparsity))
88
88
end
89
89
90
90
function forwarddiff_color_jacobian! (J:: AbstractMatrix{<:Number} ,
@@ -96,7 +96,7 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number},
96
96
fx = jac_cache. fx
97
97
dx = jac_cache. dx
98
98
p = jac_cache. p
99
- color = jac_cache. color
99
+ colorvec = jac_cache. colorvec
100
100
sparsity = jac_cache. sparsity
101
101
chunksize = jac_cache. chunksize
102
102
color_i = 1
@@ -112,7 +112,7 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number},
112
112
dx .= partials .(fx, j)
113
113
if ArrayInterface. fast_scalar_indexing (dx)
114
114
for k in 1 : length (cols_index)
115
- if color [cols_index[k]] == color_i
115
+ if colorvec [cols_index[k]] == color_i
116
116
if J isa SparseMatrixCSC
117
117
J. nzval[k] = dx[rows_index[k]]
118
118
else
@@ -122,24 +122,24 @@ function forwarddiff_color_jacobian!(J::AbstractMatrix{<:Number},
122
122
end
123
123
else
124
124
#=
125
- J.nzval[rows_index] .+= (color [cols_index] .== color_i) .* dx[rows_index]
125
+ J.nzval[rows_index] .+= (colorvec [cols_index] .== color_i) .* dx[rows_index]
126
126
or
127
- J[rows_index, cols_index] .+= (color [cols_index] .== color_i) .* dx[rows_index]
127
+ J[rows_index, cols_index] .+= (colorvec [cols_index] .== color_i) .* dx[rows_index]
128
128
+= means requires a zero'd out start
129
129
=#
130
130
if J isa SparseMatrixCSC
131
- @. setindex! ((J. nzval,),getindex ((J. nzval,),rows_index) + (getindex ((color ,),cols_index) == color_i) * getindex ((dx,),rows_index),rows_index)
131
+ @. setindex! ((J. nzval,),getindex ((J. nzval,),rows_index) + (getindex ((colorvec ,),cols_index) == color_i) * getindex ((dx,),rows_index),rows_index)
132
132
else
133
- @. setindex! ((J,),getindex ((J,),rows_index, cols_index) + (getindex ((color ,),cols_index) == color_i) * getindex ((dx,),rows_index),rows_index, cols_index)
133
+ @. setindex! ((J,),getindex ((J,),rows_index, cols_index) + (getindex ((colorvec ,),cols_index) == color_i) * getindex ((dx,),rows_index),rows_index, cols_index)
134
134
end
135
135
end
136
136
color_i += 1
137
- (color_i > maximum (color )) && continue
137
+ (color_i > maximum (colorvec )) && continue
138
138
end
139
139
else
140
140
for j in 1 : chunksize
141
141
col_index = (i- 1 )* chunksize + j
142
- (col_index > maximum (color )) && continue
142
+ (col_index > maximum (colorvec )) && continue
143
143
J[:, col_index] .= partials .(fx, j)
144
144
end
145
145
end
0 commit comments