Intel cheat in PCMark05?

I just read this article, and it looks like Intel needed help back in the day. I think all benchmarks need to be checked out for things like this, as Intel gets a good nod from PCMark. Also, the Atom isnt looking that great http://arstechnica.com/reviews/hardware/atom-nano-review.ars/6 Quote: This, gentle reader, is where things get fun. I've heard rumors for years that performance in PCMark 2005 could change depending on what CPUID was handed to the benchmark, but this is the first opportunity I've ever had to test that theory. The term CPUID refers to a processor-specific character string that stores information on the chip's manufacturer, available features, make, and model. Different manufacturers use different CPUIDs, including GenuineIntel, AuthenticAMD, CentaurHauls, and the now-obsolete CyrixInstead. Intel and AMD both lock their CPUIDs to prevent them being changed by a third party, but VIA doesn't—and that gives us an opportunity to explore a question that normally can't be explored.

By changing Nano's CPUID, we can change what value is handed off to FutureMark and expose any irregularities in the benchmark results. If everything is five by five, we shouldn't see any meaningful performance variation at all. According to the PCMark 2005 whitepaper, "The cornerstones of our design process are transparency and neutrality. We make a strong effort to document all processes that make up the benchmark...Also, we always maintain the highest standards of neutrality, neither favoring nor dis-favoring any party. I'd say that lays out the company's position in no uncertain terms, so lets take a look at how different CPUIDs impact Nano's performance.

The graph above covers all of PCMark 2005's test suites except for the memory benchmark. As you can see, everything here is as it should be; PCMark doesn't care if Nano identifies itself as GenuineIntel or CentaurHauls. Memory subsystem performance, on the other hand, looks a wee bit different.
Also : My my. Swap CentaurHauls for AuthenticAMD, and Nano's performance magically jumps about 10 percent. Swap for GenuineIntel, and memory performance goes up no less than 47.4 percent. This is not a test error or random occurance; I benchmarked each CPUID multiple times across multiple reboots on completely clean Windows XP installations. The gains themselves are not confined to a small group of tests within the memory subsystem evaluation, but stretch across the entire series of read/write tests. Only the memory latency results remain unchanged between the two CPUIDs.

At the very least, this suggests some incredibly sloppy coding on Futuremark's part, as the company may be enabling or disabling CPU optimizations based on a processor's vendor name in CPUID instead of actually checking CPUID for SIMD support. In this case, PCMark 2005's memory subsystem test doesn't appear to be aware that Nano supports SSE2 and SSE3, and is instead running a ecidedly less-optimized code path. There are two factors, however, that make this explanation a bit difficult to swallow.

First, there's the issue of timing. PCMark 2005 was released (obviously) in 2005, and was obviously coded with an eye towards supporting current and future processors. This is standard operating procedure for Futuremark, which always builds benchmarks designed to last for at least a year, and often two. VIA's C5N-T (Nehemiah) core may have only supported MMX and 3DNow!, but the C7 launched in 2005, and that processor supported SSE2 and SSE3 from day one. Even if proper extension support wasn't built into the first version of PCM2K5, we tested version 1.2.0, and that patch was released on or around 11-29-2006.

Second, there's the issue of performance when Nano is identified as AuthenticAMD. If performance between the AMD and Intel CPUIDs was identical, there wouldn't really be a story here, but it isn't, and that's curious. Futuremark could plausibly argue that VIA's C3/C7 processors weren't exactly on the radar back in 2004-2005, but AMD and K8 certainly were, and K8 launched with full SSE and SSE2 support, with SSE3 added in 2005.

None of this constitutes proof of wrongdoing, but it flies in the face of Futuremark's neutrality claims. Bad code is a fact of life, but companies that write benchmarks for a living and sell those benchmarks as evaluation tools have a responsibility to ensure that their software delivers the neutral framework that it promises. Based on the information I've gathered thus far, it seems Futuremark may have created three paths—one for Intel, one for AMD, and one generic "other" path. There's nothing wrong with optimized code paths, but our results would seem to indicate that some paths are decidedly more optimized than others. This doesnt look good for PCMark, nor Intel. I know its a dated benchmark, but Ive heard other things about other benchmarks. Opinions welcome
 

NMDante

Distinguished
Oct 5, 2002
1,588
0
19,780
After look through the whole article, both the Nano and Atom were neck and neck with each other. Toss the questionable PCMark results, and you'll noticed that both systems fared well in all the other tests.

I don't see how this makes Atom look bad, for a unit that costs $75 for CPU and board (according to the article). Of course, the real question is who is Atom catering too? I can see them in Netbooks or MIDs, but as an HTCP or desktop replacement...I doubt it.
 
I dont think Atom looks bad, it just doesnt dominate a VIA cpu. Thats not that great, at least at this point. More to the post tho, these benches are skewed, and have been skewed for awhile. This concerns me, as a vast majority of sites use them, and it sells alot of cpus/gpus
 

NMDante

Distinguished
Oct 5, 2002
1,588
0
19,780
Well, the only thing skewed is the memory benchmark. I don't know why it does that, but every other bench test was pretty much the same. So, just eliminate the memory benchmark, until there is a reason for the discrepancy. Or keep the VIA (Intel) scores, since they were the highest of all 3 CPUIDs.

Either way, I think Futuremark needs to explain the difference.
 

yomamafor1

Distinguished
Jun 17, 2007
2,462
1
19,790


Don't start. Let's wait for Futuremark's explanation before making any definitive statement.
 
Im not sure but thats strange. But I mean we do all know PCMark is still synthetic and the best results come from games and apps people use.

But still its weird how changind the CPUID changes only the memory score but not the CPU score.
 
Theres something going on here. This sorta reminds me of the Vantage mess up with the physics test, where nVidias drivers actually rewrite the Vantage code. Im just glad some people are honest and intuitive. Could their coding be that lame?
 

JDocs

Distinguished
Apr 2, 2008
496
0
18,790
Lets just wait. Perhaps they took a short cut with using IDs to identify support for technologies instead of checking for them. Technically at the time this was not ideal but not incorrect either as IDs are normally locked.

If this is the case the Nano would not be recognized and basic, universally compatible code would have been used for memory access while changing the CPUID to a chip that supports the same technology sub set would fix up the memory access (back to identifying support by ID).

Intel could possibly have cheated or it could just be a "OK then "bad now" solution that has caught up with them. We see this kinda thing all the time so why assume cheating until its proven?
 
Im not assuming cheating at all. Maybe its there, maybe not. But whats really bad is that its happening at all, whatever, or whoevers fault it is. Someones either screwed up or cheated. And we are stuck with distrust on all of it. If SSE is available, then let it work. I guess it has to work off ID, but to me thats faulty coding. Its their job to get it right, not Intels VIAs or AMDs. My guess its FMs fault, but who knows? They either didnt keep up with AMD, or that score should have been the same as well. Or its a cheat. Time will tell
 

JDocs

Distinguished
Apr 2, 2008
496
0
18,790
I wouldn't say faulty coding. Its easier to check by ID than capabilities and yes very future limiting which is a business decision. Any one heard of PCMark06? :whistles:
 

dattimr

Distinguished
Apr 5, 2008
665
0
18,980
Whether it was lame coding or Intel cheating it should remind us of something that, by now, we all should have known by heart: don't go for *.Mark.*'s results. Ever. Buy something after some real-world testing. Same for any other synthetic benchmark suite.
 

snarfies1

Distinguished
Dec 31, 2007
226
0
18,680
I'm surprised nobody is using any sort of open source benchmark suite. Surely one must exist? That would prevent this sort of thing from ever occuring.

Myself, though, I always skip past benchmark charts and go straight to video encoding.
 

keithlm

Distinguished
Dec 26, 2007
735
0
18,990


http://www.phoronix-test-suite.com/

With Phoronix you install whatever LINUX you prefer... then you download and install a bunch of applications used for benchmarking. Many of them are FULL applications and not just synthetic tests. In the future I predict an actual distribution JUST for this test... so that NOTHING is different during benchmarking.

At this time the "search" engine on their website needs to be refined so that you can do comparative analysis. Currently I think they are mostly in "collect results" mode; although you can manually go look for things to compare and if you run two browsers you can compare one type of CPU with another.

(Just be sure you are aware of the SPEED/FREQUENCY. I hate starting to compare and thinking... "WOW... my results are way to low... OH... that CPU is running at a MUCH faster speed.")
 

snarfies1

Distinguished
Dec 31, 2007
226
0
18,680
This story has hit the front page of Slashdot. One of the comments points to an older comment, which I will copypasta here:

----------
I noticed this problem back in January of 2004, with Intel C++ 8.0, and went through heck over nine months with Intel's customer support to get it fixed until I eventually had to abandon their compiler.

On any non-Intel processors, it specifically included an alternate code path for "memcpy" that actually used "rep movsb" to copy one byte at a time, instead of (for example) "rep movsd" to copy a doubleword at a time (or MMX instructions to copy quadwords). This was probably the most brain-dead memcpy I'd ever seen, and was around 4X slower than even a typical naive assembly memcpy:

push ecx
shr ecx, 2
rep movsd
pop ecx
and ecx, 3
rep movsb

They responded with completely ridiculous answers, such as:

"Our 8.0 memcpy was indeed optimized for a Pentium(r)4 Processor,when we reworked this routine we used the simplest, most robust, and straightforward implementation for older processors so that we didn't need the extra code to check for alignment, length, overlap, and other conditions."

BS. I went and added the following line to the beginning of my source code:

extern "C" int __intel_cpu_indicator;

then I added:

__intel_cpu_indicator = -512;

to the "main" function.

This forced Intel C++ to use the "Pentium 4" memcpy regardless of which processor in in the machine. It turns out that their special "Pentium 4" memcpy which I tested thoroughly in all kinds of situations, and it worked perfectly fine on an AMD Athlon and a Pentium III. I pointed this out to them.

I received the following response:

"The fast mempcy is over 2000 lines of hand coded assembly, with lots of special cases where different code paths are chosen based on relative alignment of the source and destination. ... If the performance of memcpy/memset only are improved for Pentium III will that satisfy you?"

I answered "No," saying that I needed support for AMD processors as well. I also gave them a copy of my own memcpy routine that was 50% faster than theirs--and just used MMX. They closed the support issue and did nothing to resolve it.

I switched back to Visual C++.