forked from johannesgerer/jburkardt-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptimize.html
152 lines (128 loc) · 4.4 KB
/
optimize.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<html>
<head>
<title>
OPTIMIZE - Taking Advantage of the Compiler's Optimization Ability
</title>
</head>
<body bgcolor="#EEEEEE" link="#CC0000" alink="#FF3300" vlink="#000055">
<h1 align = "center">
OPTIMIZE <br> Taking Advantage of the Compiler's Optimization Ability
</h1>
<hr>
<p>
<b>OPTIMIZE</b>
is a directory of C++ programs which
demonstrate the use and benefits of the compiler's automatic optimization
ability.
</p>
<p>
Most compilers have an option to "optimize" your code; that is, to spend
some extra compilation time looking for ways to adjust your program so that
it runs faster, while getting the same results.
</p>
<p>
By default, compiler optimization is not accessed. In GFORTRAN, you
can request optimization by including the "-O#' option where '#' is
a value between 0 (no optimization) and 3 (high optimization). Asking
for a higher level of optimization may increase the compilation time
somewhat, and occasionally, an optimization performed by the compiler
might not be suitable for your program (in other words, it might make
your program return different or incorrect results.) Thus, it's important
to time your code before and after optimization, to see if it helps,
and to check your results, to see if it hurts!
</p>
<p>
The molecular dynamics example program given here runs in about 72 seconds.
After optimization at level 1, it runs in 50 seconds. Optimization level 2 brings the
run time down to 48 seconds and level 3 to 54 seconds. These improvements come with
not a single change to the source code.
</p>
<h3 align = "center">
Licensing:
</h3>
<p>
The computer code and data files described and made available on this web page
are distributed under
<a href = "../../txt/gnu_lgpl.txt">the GNU LGPL license.</a>
</p>
<h3 align = "center">
Languages:
</h3>
<p>
<b>OPTIMIZE</b> is available in
<a href = "../../c_src/optimize/optimize.html">a C version</a> and
<a href = "../../cpp_src/optimize/optimize.html">a C++ version</a> and
<a href = "../../f77_src/optimize/optimize.html">a FORTRAN77 version</a> and
<a href = "../../f_src/optimize/optimize.html">a FORTRAN90 version</a>.
</p>
<h3 align = "center">
Related Data and Programs:
</h3>
<p>
<a href = "../../cpp_src/gprof/gprof.html">
GPROF</a>,
C++ programs which
illustrate the use of the GPROF program performance monitor;
</p>
<p>
<a href = "../../cpp_src/md/md.html">
MD</a>,
a C++ program which
carries out a molecular dynamics simulation,
intended as a starting point for implementing a parallel version.
</p>
<p>
<a href = "../../cpp_src/timer/timer.html">
TIMER</a>,
C++ programs which
demonstrate how to compute CPU time or elapsed time.
</p>
<h3 align = "center">
Examples and Tests:
</h3>
<p>
<b>MD</b> is a molecular dynamics program.
<ul>
<li>
<a href = "md.cpp">md.cpp</a>, the source code;
</li>
<li>
<a href = "md.sh">md.sh</a>, commands that compile and run the program.
</li>
<li>
<a href = "md_output.txt">md_output.txt</a>, the output file;
</li>
<li>
<a href = "md_O1.sh">md_O1.sh</a>, commands that compile the program
with optimization level 1 and run it.
</li>
<li>
<a href = "md_O1_output.txt">md_O1_output.txt</a>, the output file;
</li>
<li>
<a href = "md_O2.sh">md_O2.sh</a>, commands that compile the program
with optimization level 2 and run it.
</li>
<li>
<a href = "md_O2_output.txt">md_O2_output.txt</a>, the output file;
</li>
<li>
<a href = "md_O3.sh">md_O3.sh</a>, commands that compile the program
with optimization level 3 and run it.
</li>
<li>
<a href = "md_O3_output.txt">md_O3_output.txt</a>, the output file;
</li>
</ul>
</p>
<p>
You can go up one level to <a href = "../cpp_src.html">
the C++ source codes</a>.
</p>
<hr>
<i>
Last revised on 13 March 2012
</i>
<!-- John Burkardt -->
</body>
</html>