Differences between revisions 1 and 2
Revision 1 as of 2007-04-12 16:37:31
Size: 679
Editor: DiegoNovillo
Comment:
Revision 2 as of 2007-04-12 17:50:15
Size: 3338
Editor: DiegoNovillo
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Line 5: Line 4:

 * {{{cc1-i-files}}}: This is a collection of .i and .ii files generated by a full GCC bootstrap. To generate these files, you need to have a recently built GCC and use the script {{{prepare-cc1-i-files}}} to generate them.
 * {{{DLV}}}: You will need to contact Gerald Pfeifer to get access to this code. It is the source of the ''in''famous bug [http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8361 8361].
 * {{{MICO}}}: A CORBA implementation. Available [http://www.mico.org/ here].
 * {{{TRAMP3D}}}: Richard Guenther's C++ [http://www.suse.de/~rguenther/tramp3d/ simulation] code
 * {{{SPEC2000}}}: The pre-processed code from the [http://www.spec.org/ SPEC 2000] benchmarks. You will need a SPEC licence and recompile it with {{{-save-temps}}}.
 * {{{FF3D}}}: Finite element PDE solver. Available [http://www.freefem.org/ff3d/index.html here].
 * {{{VARIOUS}}}: Code snippets gathered from various PRs in the Bugzilla database. Currently the list includes the attachments in [http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12850 12850], [http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15855 15855], [http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28071 28071] and [http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30089 30089]

The main scripts you will need are:

 * {{{setup-cc1-tests}}}: Creates a directory structure in the current working directory with ''before'' and ''after'' sub-directories for each of the packages mentioned above. It also copies {{{cc1}}} and {{{cc1plus}}} from the before and after GCC build directories that you specify.
 * {{{cc1test}}}: Runs {{{cc1}}} and {{{cc1plus}}} over all the {{{cc1-i-files}}} in the current directory. It has arguments to specify whether you want all files or just the small ones or the big ones, etc.
 * {{{cpp-test}}}: This one is used for running files from the other packages (DLV, FF3D, MICO, TRAMP3D, SPEC2000 and VARIOUS). Clearly this could also be done by {{{cc1test}}}, but this is how the two scripts evolved and I couldn't be bothered to merge them yet.
 * {{{time-stats}}}: Once the tests have run, this computes the total compile time or the maximum compile time over all the {{{.time}}} files specified. These {{{.time}}} files are assumed to have been generated with {{{-ftime-report}}}.
 * {{{mem-stats}}}: Likewise for memory utilization. This assumes that the {{{-fmem-report}}} was used.

There are various other scripts to do specific counts or paw through dump files. They are pretty self-explanatory and short. Also, there is a {{{gfortran.par}}} configuration file for using with [http://www.polyhedron.com/pb05/polyhedron_benchmark_suite.html Polyhedron 2005].

The scripts on this page are useful when testing the effects of a patch on compile time and memory consumption in the compiler. The scripts have evolved over a long period of time and have that home-grown undocumented taste. However, they are very short and simple to understand. They merely mechanize the chore of throwing millions of lines of code into GCC and see how it behaves before and after a specific change.

The basic idea is that you will have a before compiler and an after compiler. The only difference between the two should be the specific patch that you are testing. The scripts assume the presence of several code bases in pre-processed form:

The main scripts you will need are:

  • setup-cc1-tests: Creates a directory structure in the current working directory with before and after sub-directories for each of the packages mentioned above. It also copies cc1 and cc1plus from the before and after GCC build directories that you specify.

  • cc1test: Runs cc1 and cc1plus over all the cc1-i-files in the current directory. It has arguments to specify whether you want all files or just the small ones or the big ones, etc.

  • cpp-test: This one is used for running files from the other packages (DLV, FF3D, MICO, TRAMP3D, SPEC2000 and VARIOUS). Clearly this could also be done by cc1test, but this is how the two scripts evolved and I couldn't be bothered to merge them yet.

  • time-stats: Once the tests have run, this computes the total compile time or the maximum compile time over all the .time files specified. These .time files are assumed to have been generated with -ftime-report.

  • mem-stats: Likewise for memory utilization. This assumes that the -fmem-report was used.

There are various other scripts to do specific counts or paw through dump files. They are pretty self-explanatory and short. Also, there is a gfortran.par configuration file for using with [http://www.polyhedron.com/pb05/polyhedron_benchmark_suite.html Polyhedron 2005].

None: PerformanceTesting (last edited 2009-06-18 15:35:01 by charybdis-ext)