Progress with MATLAB Source transformation AD
MSAD
Rahul Kharche Cranfield University, Shrivenham
R.V.Kharche@Cranfield.ac.uk
AD Fest 2005, Nice 14th - 15th April 2005
MSAD – p. 1/18
Progress with M ATLAB S ource transformation AD MSAD Rahul Kharche - - PowerPoint PPT Presentation
Progress with M ATLAB S ource transformation AD MSAD Rahul Kharche Cranfield University, Shrivenham R.V.Kharche@Cranfield.ac.uk AD Fest 2005, Nice 14 th - 15 th April 2005 MSAD p. 1/18 Agenda Project Goals Previous work on MSAD Further
MSAD – p. 1/18
MSAD – p. 2/18
aMATLAB is a trademark of The MathWorks, Inc.
MSAD – p. 3/18
MSAD – p. 4/18
MSAD – p. 5/18
MSAD – p. 6/18
MSAD – p. 7/18
40 80 160 320 640 1280 2560 5120 3 6 13 30 65 130 253 600 1200 2500 5000 15000 n (log scale) CPU(JF)/CPU(F) (log scale) BrusselatorODE CPU(JF)/CPU(F) Vs n NUMJAC (full) MSAD (full) MAD (full) NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse)
5 10 15 20 25 30 5 10 15 20 25 30 nz = 124 Jacobian Sparsity − Brussode (n = 32)
MSAD – p. 8/18
40 80 160 320 640 1280 2560 5120 3 6 13 30 65 130 253 600 1200 2500 5000 15000 n (log scale) CPU(JF)/CPU(F) (log scale) BrusselatorODE CPU(JF)/CPU(F) Vs n NUMJAC (full) MSAD (full) MAD (full) NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse)
40 320 640 1280 2560 5120 10 20 30 40 50 60 n CPU(JF)/CPU(F) BrusselatorODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse) MSAD – p. 8/18
40 80 160 320 640 1280 2560 5120 10240 20480 40960 3 6 13 30 65 130 253 400 n (log scale) CPU(JF)/CPU(F) (log scale) BrusselatorODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse)
5 10 15 20 25 30 5 10 15 20 25 30 nz = 124 Jacobian Sparsity − Brussode (n = 32)
MSAD – p. 9/18
40 80 160 320 640 1280 2560 5120 10240 20480 40960 3 6 13 30 65 130 253 400 n (log scale) CPU(JF)/CPU(F) (log scale) BrusselatorODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse)
40 5120 10240 20480 40960 50 100 150 200 250 300 n CPU(JF)/CPU(F) BrusselatorODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (comp) MSAD – p. 9/18
16 32 64 128 256 512 1024 2048 4096 8192 1638432768 12 18 30 50 80 150 250 n (log scale) CPU(JF)/CPU(F) (log scale) BurgersODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse)
5 10 15 20 25 30 5 10 15 20 25 30 nz = 340 Jacobian Sparsity − Burgersode (n = 32)
MSAD – p. 10/18
16 32 64 128 256 512 1024 2048 4096 8192 1638432768 12 18 30 50 80 150 250 n (log scale) CPU(JF)/CPU(F) (log scale) BurgersODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse)
16 4096 8192 16384 32768 50 100 150 200 250 n CPU(JF)/CPU(F) BurgersODE CPU(JF)/CPU(F) Vs n NUMJAC (comp) MSAD (comp) MAD (comp) MSAD (sparse) MAD (sparse) MSAD – p. 10/18
200 400 600 800 1000 1200 1400 1600 1800 2000 10
1
10
2
10
3
10
4
n CPU(JF)/CPU(F) (log scale) Data−Fitting CPU(JF)/CPU(F) Vs n (m = 4) NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse)
MSAD – p. 11/18
200 400 600 800 1000 1200 1400 1600 1800 2000 10
1
10
2
10
3
10
4
n CPU(JF)/CPU(F) (log scale) Data−Fitting CPU(JF)/CPU(F) Vs n (m = 4) NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse)
5 10 5 10 15 20 25 30 35 40 nz = 30 Vandermonde matrix Jacobian Sparsity − DataFit (n = 10, m = 4) MSAD – p. 11/18
MSAD – p. 12/18
MSAD – p. 12/18
4 16 64 256 1024 4096 16384 10 20 50 110 250 600 1500 n (log scale) CPU(gf)/CPU(f) (log scale) MINPACK − DGL2 CPU(gf)/CPU(f) Vs n NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse) 4 16 64 256 1024 4096 16384 65536 5 10 25 60 160 400 900 2000 n (log scale) CPU(gf)/CPU(f) (log scale) MINPACK − DSSC CPU(gf)/CPU(f) NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse)
MSAD – p. 13/18
4 16 64 256 1024 4096 16384 10 20 50 110 250 600 1500 n (log scale) CPU(gf)/CPU(f) (log scale) MINPACK − DGL2 CPU(gf)/CPU(f) Vs n NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse) 4 16 64 256 1024 4096 16384 65536 5 10 25 60 160 400 900 2000 n (log scale) CPU(gf)/CPU(f) (log scale) MINPACK − DSSC CPU(gf)/CPU(f) NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse)
MSAD – p. 13/18
4 16 64 256 1024 4096 16384 10 20 50 110 250 600 1500 n (log scale) CPU(gf)/CPU(f) (log scale) MINPACK − DGL2 CPU(gf)/CPU(f) Vs n NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse) 4 16 64 256 1024 4096 16384 65536 5 10 25 60 160 400 900 2000 n (log scale) CPU(gf)/CPU(f) (log scale) MINPACK − DSSC CPU(gf)/CPU(f) NUMJAC (full) MSAD (full) MAD (full) MSAD (sparse) MAD (sparse)
MSAD – p. 13/18
afunction vectorised to the advantage of numjac
MSAD – p. 14/18
I II III IV V VI VII VIII 1 2 3 4 5 6 problem absolute time (s) Absolute run−times to obtain solutions of BVP problems bvp4c − FD bvp4c − MSAD bvp4c − MAD
1 2 3 4 5 6 7 8 2 4 6 8 10 12 Test problems CPU time in sec bvp4cFD bvp4cMSAD bvp4cMAD
anote the improved speed using numjac compared to earlier results (previously MATLAB 6.5 was used)
MSAD – p. 15/18
MSAD – p. 16/18
MSAD – p. 17/18
MSAD – p. 18/18