Some of the SPEC benchmarks come for a variety of architectures but not for ARM, which is not surprising anyway. The easiest way to execute the benchmarks is by using the provided scripts, which is pretty much straight forward operation. The benchmarks come with pre-compiled tools and libraries that are needed by the benchmarks. Among them is Perl, which will fail to compile on ARM systems because of some invalid object definitions in its makefile. These definitions get in the makefile by the Configure script which is called before calling make. Instead of messing around with Configure, I added a couple of lines in the buildtools file, which is responsible for building the SPEC tools on a new architecture or after having modified the host system, in order to remove the unnecessary lines from the corresponding makefiles.
The buildtools script can be found under tools/src/ in the SPEC benchmarks directoy. What is needed is to go in the Perl building section, line 103, and replace the fist part of the building phase with the following oneliner:
(cd $PERLSRC; LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH; ./Configure -dOes $PERLFLAGS -Ddosuid=undef -Dprefix=$INSTALLDIR -Dd_bincompat3=undef; cat makefile | grep -v built-in | grep -v "command line" > makefile.new; cp makefile.new makefile; cat x2p/makefile | grep -v built-in | grep -v "command line" > x2p/makefile.new; cp x2p/makefile.new x2p/makefile; make; ./perl installperl ) || die "Can't build perl"
11 thoughts on “Compiling SPEC Benchmarks tools on ARM”
which spec’s version did u use?
This compile was for specifically for the OMP2001 benchmarks.
I’m trying to compile SPEC CPU2006 on ARM, but I’m getting some errors. =(
What you see above is a Perl on-liner, which should just work if you copy/paste it correctly.
Are you trying to compile the same OMP2001 benchmarks or something else?
I’m trying to compile CPU2006 benchmarks.
Unfortunately I don’t have access now to an ARM box to test it. What error are you getting? Have you tried the oneliner above? It might need some sort of modification and/or you might face an additional issue to what I’ve faced.
Thank for your attention> I’ve already compiled it. =)
Cool – what was the issue then?
First, I was getting a problem with a header page.h in SysV.xs.
I solved commenting this include. One error during libwwwperl’s tests appeared. I just did a recursive touch on SPEC’s directory and the error was solved.
am building SPEC2006 on ARM and getting few verification tests failed during buildtools.
t/14encoding.t … 1/9 Cannot find encoding “UTF-16BE” at /home/ubuntu/SPEC_CPU2006v1.2/tools/src/XML-SAX-0.96/blib/lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm line 15.
Unknown encoding ‘UTF-16BE’ at /home/ubuntu/SPEC_CPU2006v1.2/tools/src/XML-SAX-0.96/blib/lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm line 19
Any clues ?
Sorry, haven’t faced any of these. The first, obvious, thing to check is where the encoding tests come in and if you have the required encodings.