Skip to content

Commit ab48c0a

Browse files
authored
empty case handling improved (#77)
1 parent 39724f5 commit ab48c0a

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

ext/ExaModelsKernelAbstractions.jl

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ function ExaModels.ExaModel(
137137
end
138138

139139
function _conaug_structure!(backend, cons, sparsity)
140-
kers(backend)(sparsity, cons.f, cons.itr, cons.oa; ndrange = length(cons.itr))
140+
if !isempty(cons.itr)
141+
kers(backend)(sparsity, cons.f, cons.itr, cons.oa; ndrange = length(cons.itr))
142+
end
141143
_conaug_structure!(backend, cons.inner, sparsity)
142144
synchronize(backend)
143145
end
@@ -214,7 +216,9 @@ function ExaModels.obj(
214216
end
215217
end
216218
function _obj(backend, objbuffer, obj, x)
217-
kerf(backend)(objbuffer, obj.f, obj.itr, x; ndrange = length(obj.itr))
219+
if !isempty(obj.itr)
220+
kerf(backend)(objbuffer, obj.f, obj.itr, x; ndrange = length(obj.itr))
221+
end
218222
_obj(backend, objbuffer, obj.inner, x)
219223
synchronize(backend)
220224
end
@@ -240,7 +244,9 @@ function ExaModels.cons_nln!(
240244
end
241245
end
242246
function _cons_nln!(backend, y, con::ExaModels.Constraint, x)
243-
kerf(backend)(y, con.f, con.itr, x; ndrange = length(con.itr))
247+
if !isempty(con.itr)
248+
kerf(backend)(y, con.f, con.itr, x; ndrange = length(con.itr))
249+
end
244250
_cons_nln!(backend, y, con.inner, x)
245251
synchronize(backend)
246252
end
@@ -252,7 +258,9 @@ end
252258

253259

254260
function _conaugs!(backend, y, con::ExaModels.ConstraintAug, x)
255-
kerf2(backend)(y, con.f, con.itr, x, con.oa; ndrange = length(con.itr))
261+
if !isempty(con.itr)
262+
kerf2(backend)(y, con.f, con.itr, x, con.oa; ndrange = length(con.itr))
263+
end
256264
_conaugs!(backend, y, con.inner, x)
257265
synchronize(backend)
258266
end
@@ -479,7 +487,9 @@ function ExaModels.sgradient!(
479487
adj,
480488
) where {B<:KernelAbstractions.Backend}
481489

482-
return kerg(backend)(y, f.f, f.itr, x, adj; ndrange = length(f.itr))
490+
if !isempty(f.itr)
491+
kerg(backend)(y, f.f, f.itr, x, adj; ndrange = length(f.itr))
492+
end
483493
end
484494

485495
function ExaModels.sjacobian!(
@@ -489,8 +499,10 @@ function ExaModels.sjacobian!(
489499
f,
490500
x,
491501
adj,
492-
) where {B<:KernelAbstractions.Backend}
493-
return kerj(backend)(y1, y2, f.f, f.itr, x, adj; ndrange = length(f.itr))
502+
) where {B<:KernelAbstractions.Backend}
503+
if !isempty(f.itr)
504+
kerj(backend)(y1, y2, f.f, f.itr, x, adj; ndrange = length(f.itr))
505+
end
494506
end
495507

496508
function ExaModels.shessian!(
@@ -502,7 +514,9 @@ function ExaModels.shessian!(
502514
adj,
503515
adj2,
504516
) where {B<:KernelAbstractions.Backend}
505-
return kerh(backend)(y1, y2, f.f, f.itr, x, adj, adj2; ndrange = length(f.itr))
517+
if !isempty(f.itr)
518+
kerh(backend)(y1, y2, f.f, f.itr, x, adj, adj2; ndrange = length(f.itr))
519+
end
506520
end
507521

508522
function ExaModels.shessian!(
@@ -513,8 +527,10 @@ function ExaModels.shessian!(
513527
x,
514528
adj::V,
515529
adj2,
516-
) where {B<:KernelAbstractions.Backend,V<:AbstractVector}
517-
return kerh2(backend)(y1, y2, f.f, f.itr, x, adj, adj2; ndrange = length(f.itr))
530+
) where {B<:KernelAbstractions.Backend,V<:AbstractVector}
531+
if !isempty(f.itr)
532+
kerh2(backend)(y1, y2, f.f, f.itr, x, adj, adj2; ndrange = length(f.itr))
533+
end
518534
end
519535

520536
@kernel function kerh(y1, y2, @Const(f), @Const(itr), @Const(x), @Const(adj1), @Const(adj2))

0 commit comments

Comments
 (0)