dlarray and parfor gives error

Hello together,
I want to accelerate my compuations with parfor while using dlarray.
My compuation looks like this:
parfor i = 1:num_features
feature = ... some calculations ...
loss_temp(i) = mse(feature,feature_ground_truth,'DataFormat','CB')
end
loss = sum(loss_temp);
gradients = dlgradient(loss,dlnet.Learnables);
It gives me the error:
Error using dlarray/dlgradient
Value to differentiate is not traced. It must be a traced real dlarray scalar. Use dlgradient inside a function called by dlfeval to trace the variables.
Error in modelGradients (line 67)
gradients = dlgradient(loss,dlnet.Learnables);
Does this mean, dlarray information is lost during parfor calculation and it is not compatible with it?
Thanks for your help.
Edit:
There is a website Link. Do I have to use dlaccelerate somehow? Thanks.

Respuestas (1)

Roman Foell
Roman Foell el 9 de Ag. de 2023

0 votos

Thanks all,
I already got the answer:
Calculate the gradients inside the parfor loop and combine it outside.
Possible, because the gradient of a sum is the sum of the gradient summands.
Thanks.

Productos

Versión

R2022b

Etiquetas

Preguntada:

el 7 de Ag. de 2023

Respondida:

el 9 de Ag. de 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by