[Developers] Big improvement in the function minimizer with GPU.

anders at nielsensweb.org anders at nielsensweb.org
Tue May 8 10:59:41 PDT 2012


Wow, this sounds awesome!

Any idea how that would work for problems with an order of
magnitude (or two) fewer parameters.

How can I try it out?

thanks,

Anders.

On 08.05.2012 10:59, dave fournier wrote:
> To get a proof of concept for any programming technique it is nice to
> get a big result fairly easily.  almost all ADMB users rely on the
> function minimizer fmin in the file newfmin.cpp.  So to improve the
> performance of this function in a more or less transparent
> would immediately help a lot of users.
>
>
> I hacked the newfmin.cpp file to add the BFGS quasi Newton update
> with the (sort of) hess inverse kept on the GPU and main calcs done
> on the GPU.
>
> I tested this with a modified Rosenbrock function with 6144 
> parameters.
> The new setup is both much faster and more stable than the old one
> on newfmin. It appears that newfmin uses a different quasi-Newton
> update which
> is not as efficient for a large number of parameters.
>
> This is the tpl file for the example.
>
> DATA_SECTION
>   int n
>  !! n=4096+2048;
> PARAMETER_SECTION
>   init_vector x(1,n);
>   objective_function_value f
> PROCEDURE_SECTION
>   for (int i=1;i<=n/2;i++)
>   {
>      f+=100.*square(square(x(2*i-1))-x(2*i))+square(x(2*i-1)-1.0);
>   }
>
> The new GPU version took 36 seconds and 477 function evals to 
> converge
>  - final statistics:
> 6144 variables; iteration 277; function evaluation 477
> Function value   3.2531e-21; maximum gradient component mag   
> 9.7979e-11
> Exit code = 1;  converg criter   1.0000e-10
>
> real    0m35.414s
> user   0m4.417s <--- most time waiting for the GPU calcs
> sys     0m0.616s
>
> Old version took 288 seconds to do 477 function evaluations
> but is not nearly as good at this point.
>
> 6144 variables; iteration 300; function evaluation 485; phase 1
> Function value   6.6252316e+00; maximum gradient component mag  
> -8.4966e+00
>
> Old version converged in about 19 min 36 seconds
> so the new version with BFGS update on the GPU
> is about 32 times faster than the old version
> and probably more stable.
>
> Here is the old version final output
>  - final statistics:
> 6144 variables; iteration 1212; function evaluation 2119
> Function value   1.7758e-21; maximum gradient component mag   
> 9.7086e-11
> Exit code = 1;  converg criter   1.0000e-10
>
> real    19m36.357s
> user    19m35.848s
> sys    0m0.093s
>
> Yawn.
>
>
>
>
>
>
> _______________________________________________
> Developers mailing list
> Developers at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/developers


More information about the Developers mailing list