Last updated: $Date: 2012-07-17 06:37:35 -0400 (Tue, 17 Jul 2012) $ by $Author: JohnHenning $
This document provides information about what needs to be done to get a benchmark run ready for submission to SPEC for publication on its website.
DRAFT this document is subject to change.
Outline Published results must follow rules in full detail - www.spec.org/cpu2006/Docs/runrules.html - all submitters should read the entire doc - note in particular section 4.2 about config disclosure - fields frequently in need of correction - describe the cpu caches correctly - if you adjusted bios (e.g. turn off hyper threading) you must say so - if compiler features require runtime settings, you must say what you did at runtime - if something was previously submitted with one spelling, please spell it the same way You need two flags files - Ok to reference existing one for compiler - Need to write your own platform flags file Email address for submissions Email address for corrections and how to do them Requests from SPEC for field consistency Memory Descriptions (draft is below) Compiler versions (plaintext draft below) Phrasing of MHz and MHz changes (e.g. Turbo Boost)
As an aid to customers, and to improve uniformity when searching SPEC's pages, the SPEC CPU Subcommittee expects the following format to be used for results published on SPEC's web site, unless the tester asserts to the subcommittee that there is a reason not to do so. Examples of such reasons may include:
Although the subcommittee will typically accept such reasoning by testers, SPEC intends to nevertheless encourage use of the following format, even when not technically required by the run rule.
XX ss (YY x gg ss {eRxff PChv-wwwwwm-aa <from JEDEC standard [1]>} {, ECC <if supported>} {, per node <for clustered SUTs>} {, running at xxxx MHz <if memory is clocked at a speed other than the speed implied by the PChv-wwwwm-aa specification>} and CLy <if memory is clocked at a different speed than nominal>} {, other comments} [2] ) {} indicates items that are included only if appropriate. <> indicates commentary about this format. Do not include in submission.
Field | Meaning |
---|---|
XX | total memory in system |
ss | size unit specifier: e.g. MB, GB |
YY | number of DIMMs used |
gg ss | size of each DIMM, including unit specifier |
eR | number of ranks: e.g. 1R, 2R |
xff | device organization bit width: e.g. x4, x8 |
PCh | DDR generation: PC3 for DDR3 |
v | Module component supply voltage values: e.g. <blank> for 1.5v, L for 1.35V |
wwwww | module bandwidth in MB/s: e.g. 8500, 10600 |
m | module type: e.g. R for registered |
aa | CAS latency in clocks at maximum operating frequency. |
xxxx | speed memory is actually running (data rate, in MT/s) if not at not nominal max |
CLy | CAS latency if the tester has changed the latency to something other than the defaults |
Although the above string has many fields, in practice it is usually brief, as the following examples show:
Notice that the main string "gg ss eRxff PChv-wwwwwm-aa" can be read directly from the label on the memory itself for all vendors who use JEDEC standard labels.
Notes:
[1] The appropriate JEDEC labeling standard, such as "DDR3 DIMM Label", PRN09-NM4, October 2009, http://www.jedec.org/standards-documents/docs/pr-n09-nm1 which see for a more complete explanation of several of the fields.
The wikipedia page on DDR3 is not normative, but may nevertheless be helpful in understanding the fields: http://en.wikipedia.org/wiki/DDR3_SDRAM
[2] The other comments area can be used for:
JEDEC:
Wikipedia:
WHEREAS it is desirable to improve compiler naming for results published on the SPEC website, in order to: * 1. Put the most important information first. * 2. Make it easier for readers to understand what compilers were used. * 3. Make it easier for reviewers to verify correct content. * 4. Make it possible to write tools that parse version strings and compare results. THEREFORE: (Part A) The SPEC CPU submission handler will reject submissions unless the compiler string matches the following: language: Version n.n.n of name [Build id] [; repeat pre vious] where: [] indicates optional content "language" is a compiler identification string as defined below "Version" is a literal string "n.n.n" is a version identifier as defined below "of" is a literal string "name" is a name of up to 60 characters as defined below id is optional; up to 20 characters, for example "Build 20110304-patch" Several of the fields above are defined using Perl regular expression syntax below. $language = '(C|C\+\+|Fortran)(/C\+\+)?(/Fortran)?'; $language = "($language|Libraries)"; $version = '([\d_-.]+)( Update [\d_-.]+)?'; $name = '([^;]){3,60}'; $build = '\sBuild [^;]{1,20}'; $lvn = "$language: Version $version of $name($build)?"; $re = qr/^$lvn(; $lvn)?\$/; Notes: * 1 The language field contains either a slash-separated list of languages, or the word "Libraries". If more than one language is mentioned, the order for them is C, C++, Fortran. * 2 The version field contains digits, underscores, and dots, plus an optional string "Update" followed by more digits, underscores, and dots. * 3 The above definition is not intended to specify the exact Perl code for the submission handler. The implementer may choose use other syntax to achieve the same effect. * 4 The checks requested by this proposal will be added to the checks already in the submission handler. * 5 The submission handler will not attempt to validate the name field for the compiler other than checking its length, and demanding that it not contain a semi-colon. See Part B. * 6 The Build field is, from a syntax point of view, optional. It may nevertheless be mandatory from a run rules point of view: see About Reproducibility, below. THEREFORE: (Part B) Starting 11-Oct-2011, during review of results, the compiler name will be adjusted if it differs from an 'expected' spelling. The expected spelling for each compiler name and version will be determined by the CPU subcommittee, typically by following the recommendation of the compiler vendor, if the vendor is a member of the subcommittee. The expected spelling will take into account: * The run rule (4.1.2) * The naming intent of the brand * Clarity for readers of SPEC results * Reproducibility About Reproducibility If the name and version string as used for ordering purpopses are ambiguous with regard to performance-relevant updates, additional information shall be included to resolve such ambiguity. Examples: * The version string for ordering purposes is "12.2" but performance changes over time. The "cc -v" command prints "12.2.37.9". The subcommittee may decide to require the version as printed by "cc -v" for this compiler. * The version string is always "12.2" (for both ordering and from "cc -v"); but performance changes with build id. The subcommittee may decide to require inclusion of the build id for this compiler.