fmincon running on GPU

46 visualizaciones (últimos 30 días)
CSCh
CSCh el 7 de Dic. de 2021
Comentada: Walter Roberson el 22 de Jul. de 2024
Hi
I implemented a modified copy of this example.
I tried to run it on GPU
but if I try to convert the inputs (dlR,..) from alarrays to gpuarray's, I got the error
objFun = @(parameters) objectiveFunction(parameters,dlR,dlTheta,dlT,dlR0,dlTheta0,dlT0,dlUr0,parameterNames,parameterSizes);
"FMINCON requires all values returned by functions to be of data type double."
So how can I run this example with GPU power?
Best regards,
Chris

Respuesta aceptada

Walter Roberson
Walter Roberson el 2 de Feb. de 2022
objFun = @(parameters) objectiveFunction(parameters,dlR,dlTheta,dlT,dlR0,dlTheta0,dlT0,dlUr0,parameterNames,parameterSizes);
That is fine in itself, and if you want, any or all of the values such as dl* variables can be gpuArray --- however, the value passed by fmincon, received here as parameters will never be gpuArray .
Inside objectiveFunction you can unpack parameters as needed into individual variables, potentially constructing gpuArray objects as needed.
Then you can do whatever calculation is appropriate.
When you get an appropriate place in the calculation, gather() the gpuArray calculations. The resulting output will not be gpuArray.
The final output from objectiveFunction must not be gpuArray .
If your logic is suitable, it would be perfectly fine to code something like
cost = gather(cost);
at the end of your code -- though it would be more efficient to use different variable names so that you are not changing the type of the variable
cost_non_gpu = gather(cost); %with the function having been defined as returning cost_non_gpu
  9 comentarios
CSCh
CSCh el 3 de Feb. de 2022
Thank you for you explanation. It would be really helpfull if you could give an example how I can use the vectorization together with Fmincon.
Thank you.
Walter Roberson
Walter Roberson el 3 de Feb. de 2022
Unfortunately at present fmincon() does not support vectorization; my point about vectorization is that if Mathwrks were looking to improve performance for fmincon, it would make more sense for Mathworks to start with permitting vectorization than it would for Mathworks to start by trying to permit the selection logic (of whether the location improved the fit) to be executed on the GPU. A GPU-improved fmincon would call for a redesign of the fmincon internals rather than for simply adding gpuArray to the list of types the code permits to be returned.

Iniciar sesión para comentar.

Más respuestas (1)

Shivam Singh
Shivam Singh el 2 de Feb. de 2022
Hello Chris,
This error message indicates that the type of input arguments to fmincom is different than the expected. You may refer the fmincom function to know more about it.
Also, currently “fmincom” function doesn't have GPU support.
  2 comentarios
CSCh
CSCh el 22 de Jul. de 2024
Is there any progress made by Mathworks in terms of the discussed issue "fmincon & using GPU"
Best regards,
Chris

Iniciar sesión para comentar.

Categorías

Más información sobre GPU Computing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by