source: git/ntl/src/WizardAux @ 26e030

spielwiese
Last change on this file since 26e030 was 26e030, checked in by Hans Schönemann <hannes@…>, 15 years ago
*hannes: update to 5.5.1 git-svn-id: file:///usr/local/Singular/svn/trunk@11949 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.7 KB
Line 
1# This is a perl script, invoked from a shell
2
3# use warnings;  # this doesn't work on older versions of perl
4
5
6sub GenConfigHeader {
7
8   my $line;
9   local *CFILE;
10   local *CFILEOUT;
11
12   open(CFILE, "< cfile");
13   open(CFILEOUT, "> cfileout");
14
15   while ($line = <CFILE>) {
16
17      $line =~ s/@\{(.*?)\}/$Config{$1}/ge;
18
19      print CFILEOUT $line;
20
21   }
22
23   close(CFILE);
24   close(CFILEOUT);
25
26   system("cp cfileout ../include/NTL/config.h");
27
28}
29
30
31
32
33sub RemoveProg {
34
35# This should work on unix and cygwin on windows
36
37   my ($name) = @_;
38
39   unlink($name);  unlink("$name.exe");
40
41}
42
43
44sub RunProg {
45
46   my ($name) = @_;
47   my $val;
48   my $res;
49
50   system("make wntl.a");
51   RemoveProg($name);
52   system("make $name");
53
54   print "\n*** running $name...";
55
56   $val = `./$name`;
57
58   if ($? != 0) {
59      $res = "999999999999999";
60   }
61   else {
62      ($res) = ( $val =~ /^([0-9]*)/ );
63   }
64
65   print $val, "\n";
66
67   return $res;
68
69}
70
71
72############################################################
73
74
75
76system("make InitSettings");
77
78@lines = `./InitSettings`;
79
80%Config = (
81
82'NTL_LONG_LONG'        => 0,
83'NTL_AVOID_FLOAT'      => 0,
84'NTL_SPMM_UL'          => 0,
85'NTL_SPMM_ULL'         => 0,
86'NTL_SPMM_ASM'         => 0,
87'NTL_TBL_REM'          => 0,
88'NTL_AVOID_BRANCHING'  => 0,
89'NTL_GF2X_ALTCODE'     => 0,
90'NTL_GF2X_ALTCODE1'    => 0,
91'NTL_GF2X_NOINLINE'    => 0,
92
93'WIZARD_HACK'          => '#define NTL_WIZARD_HACK',
94
95);
96
97foreach $line (@lines) {
98   chomp($line);
99   ($name, $val) = ($line =~ /(.*?)=(.*)/);
100   $Config{$name} = $val;
101}
102
103
104
105
106
107#  set AVOID_BRANCHING and SPMM flags...try all pairs
108
109
110$time = "999999999999999";
111$aflag = "default";
112$bflag = "default";
113
114foreach $aflag1 ("default", "NTL_AVOID_BRANCHING") {
115   foreach $bflag1 ("default", "NTL_SPMM_UL", "NTL_SPMM_ULL", "NTL_SPMM_ASM") {
116
117      $Config{$aflag1} = 1;
118      $Config{$bflag1} = 1;
119      GenConfigHeader();
120      $time1 = RunProg("Poly1TimeTest");
121
122      if ($time1 < $time) {
123         $aflag = $aflag1;
124         $bflag = $bflag1;
125         $time = $time1;
126      }
127
128      $Config{$aflag1} = 0;
129      $Config{$bflag1} = 0;
130      unlink("FFT.o"); 
131   }
132}
133
134$Config{$aflag} = 1;
135$Config{$bflag} = 1;
136unlink("lip.o");   #  AVOID_BRANCHING affects this too
137
138
139# set the flags GF2X_NOINLINE and GF2X_ALTCODE...try all pairs
140
141$time = "999999999999999";
142$aflag = "default";
143$bflag = "default";
144
145foreach $aflag1 ("default", "NTL_GF2X_NOINLINE") {
146   foreach $bflag1 ("default", "NTL_GF2X_ALTCODE", "NTL_GF2X_ALTCODE1") {
147
148      $Config{$aflag1} = 1;
149      $Config{$bflag1} = 1;
150      GenConfigHeader();
151      $time1 = RunProg("GF2XTimeTest");
152
153      if ($time1 < $time) {
154         $aflag = $aflag1;
155         $bflag = $bflag1;
156         $time = $time1;
157      }
158
159      $Config{$aflag1} = 0;
160      $Config{$bflag1} = 0;
161      unlink("GF2X.o");
162   }
163}
164
165$Config{$aflag} = 1;
166$Config{$bflag} = 1;
167
168
169
170if ($Config{"NTL_GMP_LIP"} == 0) {
171
172   # GMP is not the primary long integer package
173   # Choose between default, AVOID_FLOAT, and LONG_LONG implementatsions
174
175   $time = "999999999999999";
176   $flag = "default";
177
178   foreach $flag1 ("default", "NTL_AVOID_FLOAT", "NTL_LONG_LONG") {
179      $Config{$flag1} = 1;
180      GenConfigHeader();
181      $time1 = RunProg("MulTimeTest");
182
183      if ($time1 < $time) {
184         $flag = $flag1;
185         $time = $time1;
186      }
187
188      $Config{$flag1} = 0;
189      unlink("lip.o");
190   }
191
192   $Config{$flag} = 1;
193
194
195   # finally, now set TBL_REM
196
197   GenConfigHeader();
198   $time = RunProg("PolyTimeTest");
199
200   $Config{"NTL_TBL_REM"} = 1;
201   GenConfigHeader();
202   unlink("lip.o");
203
204   $time1 = RunProg("PolyTimeTest");
205
206   if ($time1 >= $time) {
207      $Config{"NTL_TBL_REM"} = 0;
208   }
209
210}
211
212$Config{'WIZARD_HACK'} = "";
213GenConfigHeader();
214
215print "\n\n*** the wizard is done!!\n\n";
216
217system("make DispSettings");
218system("./DispSettings");
219
220
Note: See TracBrowser for help on using the repository browser.