2.5: Remove OOPS code from the outliner space, as discussed
[blender-staging.git] / extern / ode / dist / ode / fbuild / OptimizeLSolve
1 #!/usr/bin/perl
2 #
3 #########################################################################
4 #                                                                       #
5 # Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       #
6 # All rights reserved.  Email: russ@q12.org   Web: www.q12.org          #
7 #                                                                       #
8 # This library is free software; you can redistribute it and/or         #
9 # modify it under the terms of EITHER:                                  #
10 #   (1) The GNU Lesser General Public License as published by the Free  #
11 #       Software Foundation; either version 2.1 of the License, or (at  #
12 #       your option) any later version. The text of the GNU Lesser      #
13 #       General Public License is included with this library in the     #
14 #       file LICENSE.TXT.                                               #
15 #   (2) The BSD-style license that is included with this library in     #
16 #       the file LICENSE-BSD.TXT.                                       #
17 #                                                                       #
18 # This library is distributed in the hope that it will be useful,       #
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of        #
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    #
21 # LICENSE.TXT and LICENSE-BSD.TXT for more details.                     #
22 #                                                                       #
23 #########################################################################
24
25 # optimize the solver built by BuildLDLT
26 #
27 #    FNAME   : name of source file to generate - .h and .c files will be made
28 #    N1      : block size (size of outer product matrix) (1..9)
29 #    UNROLL1 : solver inner loop unrolling factor (1..)
30 #    UNROLL2 : factorizer inner loop unrolling factor (1..)
31 #    MADD    : if nonzero, generate code for fused multiply-add (0,1)
32 #    FETCH   : how to fetch data in the inner loop:
33 #                0 - load in a batch (the `normal way')
34 #                1 - delay inner loop loads until just before they're needed
35
36 ##############################################################################
37
38 require ("OptimizeUtil");
39
40 ##############################################################################
41 # optimize solver
42
43 sub testSolver # (filename)
44 {
45   my $filename = $_[0];
46   createParametersFile ('ParametersS');
47   $params = "$N1 $UNROLL1 $UNROLL2 $MADD $FETCH";
48   print "***** TESTING $params\n";
49   doit ("rm -f fastlsolve.c fastlsolve.o test_ldlt");
50   doit ("make test_ldlt");
51   doit ("./test_ldlt s >> $filename");
52   open (FILE,">>$filename");
53   print FILE " $params\n";
54   close FILE;
55 }
56
57 # find optimal parameters. UNROLL2 has no effect. write results to data3.txt
58
59 open (FILE,">data3.txt");
60 print FILE "# solver data from OptimizeLDLT\n";
61 close FILE;
62 $FNAME='fastlsolve';
63 $TYPE='s';
64 $UNROLL2=1;
65 for ($N1=1; $N1 <= 5; $N1++) {
66   for ($UNROLL1=1; $UNROLL1 <= 15; $UNROLL1++) {
67     for ($MADD=0; $MADD<=1; $MADD++) {
68       for ($FETCH=0; $FETCH<=1; $FETCH++) {
69         testSolver ('data3.txt');
70       }
71     }
72   }
73 }
74
75 readBackDataFile ('data3.txt');
76 createParametersFile ('ParametersS');