PCMark Memory Benchmark Favors GenuineIntel
javy_tahu writes "A review by Ars Technica disclosed that PCMark 2005 Memory benchmark favors GenuineIntel CPUID. A VIA Nano CPU has had its CPUID changed from the original VIA to fake GenuineAMD and GenuineIntel. An improvement of, respectively, 10% and 47% of the score was seen. The reasons of this behavior of FutureMark product are not yet known."
The reasons of this behavior of FutureMark product are not yet known
Easy. Intel paid them to make it that way.
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
Seems obvious, but follow the money trail, does PCMark get backing from Intel?
So rise up, all ye lost ones, as one, we'll claw the clouds.
A VIA Nano CPU has had its CPUID changed from the original VIA to fake GenuineAMD and GenuineIntel. An improvement of, respectively, 10% and 47% of the score was seen.
It sounds to me like this could possibly be explained by some kind of conditional optimization that the compiler puts in for various chips, to take advantage of differences in their designs that can improve performance.
Then again, probably not.
This definitely requires clarification from the creator of the benchmark.
It is possible that the benchmark uses the CPUID to change how the benchmark works, for example, to work around known flaws in a given chip. If this is the case, then the problem is not "omyghoshitplaysfavorites" but rather lack of full disclosure that the benchmarks are not directly comparable across different chips. In the most benign scenario, this could be someone at the benchmark creator's shop forgetting to tell the documentation team. This is still a very serious issue, but it's not fraud.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Could it be that FutureMark uses the GenuineIntel and AMD flags to enable processor specific extensions? and then does a whole bunch of math with those extensions and never bothers to check the result?
This would indicate some really terrible code on FutureMarks part, and VIA should be flagging those op-codes as illegal op-codes, but it might be possible that something like this could happen. It is even possible that the CPUID checks are duplicated in some library somewhere that actually gets the correct code sequence right, and the main FutureMark code disables the advanced functions of the library whenever the GenuineIntel and AMD flags are missing. Thus FutureMark may feature both code sequences that work and those that don't, and the resulting incompatibilities are what causes the issues.
Why would you even consider running a benchmark program you don't have source code for and cannot compile yourself? (If you are worried about random compiler differences messing up the results, you can check an MD5 sum of the final binary against the published one, but it is important that you can reproduce the binary from source and you can read the source to find out what it does.)
If compilers like ICC cripple their code depending on CPUID, that will just lead all manufacturers to set CPUID to GenuineIntel, just as moronic websites (with help from Microsoft) ensured that all browsers call themselves 'Mozilla'.
-- Ed Avis ed@membled.com
Well, PC Mark 2005 is no longer good for testing processors against processors of another maker, i.e. only good for intra-AMD, etc.
Colin Dean Go a year without DRM
It sounds to me like this could possibly be explained by some kind of conditional optimization that the compiler puts in for various chips, to take advantage of differences in their designs that can improve performance.
People are trusting closed-source benchmarks? Well, golly gee, who'd'a thunk there'd be errors, oversights, or shenanigans?
If this was used for anything more than entertainment value, any methodical person would have at least compared multiple closed-source benchmarks. If that proved to be inappropriately favoring a vendor, then, OK, start calling 'conspiracy', but this just sounds like an error in a tool that was never validated.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
It's a 3+ year old benchmark being let loose on 2008 vintage CPU's and making mistakes on it's optimisations. I wouldn't expect anything else. It's going to have a 3 year old view on the kind of things these CPUs can do and will act accordingly.
I want a list of atrocities done in your name - Recoil
If I were an evil fraudster at PCMark, paid for Intel to deliver worse scores to rivals, I would make sure that these rivals had no easy way of uncovering the fraud. Testing for an ID looks much more like bad code paths than like "sneaky fraud".
There is no shortage of alternative quirks that can be used to see whether a given processor belongs to one family or another. Should enough of these quirks be combined, it would be *very* hard to discover an evil-related cause.
Of course, choosing the 'bad' path given an ID may just be blatant enough to provide plausible deniability for the developers that "messed up". However, being a firm proponent of Hanlon's Razor, I would rather call it a bug than a "sponsored feature".
On the other hand, kudos to the guys at Ars who thought of changing the ID and, when the numbers did not add up, make further tests to nail down the argument. Instead of just forgetting about the problem and performing a "review as usual", which would have doubtlessly required less effort. Yay for inquisitive hacker - reviewers.
That's a pretty good analogy.
If Futuremark is indeed enabling CPU features based upon the CPUID, then this situation is a lot like the webpages that render incorrectly in Firefox unless the user agent is set to Internet Explorer.
Does it really matter whether the cause was "incredibly sloppy coding" or "Intel bribed them?" Either way, their benchmark cannot be trusted, and trustworthiness is ESSENTIAL for a benchmark. If anyone pays serious attention to this (which, having read TFA, it seems to merit), then FutureMark is toast.
"My strength is as the strength of ten men, for I am wired to the eyeballs on espresso."
Because the faster the machine the more efficiently it does the task, allowing you to do even more concurrently and do more things in the future?
There was a time when my amd k6 350mhz could do anything i ever wanted, and even do it with passive cooling if i underclocked it to 333mhz.
Then I wanted to do more things.
The same exact way you know if the test is fair if the source is open. The vast majority of us are trusting someone at some point along the line. News flash: 90% of the computer users in the world aren't programmers! They don't look at open source code to make sure they can trust it, they ask someone they consider to be a trusted source, who has earned that status by being reliable in the past. It doesn't matter if that trusted person is someone you know personally, some random dude on the internet, or a vendor.
Contrary to the claims of OSS proponents, the code isn't really more trustworthy if it's open, because not all of us are programmers. If we were (hell, even if most of us were), that'd be true. As things are, though, closed source is only slightly less trustworthy than open source.
"16MB (fuck off, MiB fascists)" - The Mighty Buzzard
>>> Contrary to the claims of OSS proponents, the code isn't really more trustworthy if it's open, because not all of us are programmers. If we were (hell, even if most of us were), that'd be true. As things are, though, closed source is only slightly less trustworthy than open source.
I disagree. At this point there is controversy. It will be explained by the vendor and people will have to either accept the explanation or not.
If it were open source, the facts of how the code behaves could be determined by third parties and publicized. We wouldn't have to take anyone's word for it.
If 'the people' in Amendment 2 are 'the state' then Amendments 1, 2, 4, 9, and 10 benefit the state, not you.
$randomInternetDude
If the source is open, you have multiple samples of $randomInternetDude to choose from. And it's not really random either. More like $internetDudeWithUnhealthyInterestInGameEngineProgramming, who I would expect to know a thing or two.
And you can always learn enough to verify it for yourself, if you have the source.
Better than trusting $corporatePrMan, anyway.
Random in the sense of not knowing the person and how much you can trust them. So, to rephrase myself, $unknownInternetDude. He probably knows a thing or two, but then, so do the people who wrote this software, so that isn't really a factor. And I absolutely am not willing to trust $unknownInternetDude without a good reason. For all I know, that person is also $trojanAuthorOfDoom. It's just as unwise to trust him as it is to trust $corporatePrMan.
"16MB (fuck off, MiB fascists)" - The Mighty Buzzard
The problem with this argument is that with open source software, you don't just have to trust a single random guy for your information. When the source is open, it is often the case that MANY people in the online community will examine the code, and through discussion there emerges a consensus which is far more reliable than the opinion of just one random guy. That isn't to say that the community as a whole is never wrong, but it's vastly more trustworthy and reliable than just some $randomInternetDude.
Shawn Asmussen
I'll give you credit for coming with a scenario that replaces malice with a heaping dose of incompetence. If what you say is true, then that's not a benchmark at all. After all, you're not comparing the same things; for all you know, you're comparing the skill of the programmer at writing for the VIA processor with the skill of the programmer at writing for the AMD processor.
You might as well write a benchmark to see how long it takes for various processors to divide 4195835.0 by 3145727.0 and come up with 1.333739068902037589! (Note: The correct answer is 1.333820449136241002.)
404555974007725459910684486621289147856453481154 in hex is "You sank my Battleship?"
[GPG key in journal]
You're missing the point.
With proprietary software, you only get one entity to assure you it's legit, and that's the vendor. If the vendor is a trojan author of doom, you're screwed.
With open-source software, you get many people looking to see if there's anything sneaky going on. Since you have multiple samples, your result is more likely to be accurate. If one or more of them are trojan authors of doom, then it doesn't really matter, because the honest ones can spot and point out the malicious code.
Yes, and the whole point of this argument that you are stubbornly failing to see is that with open source code, that evidence is easy to find and easy to produce.
Closed source code:
Open source code:
Because software isn't religion. There's a right answer and a wrong answer. You prove things.
Even if you can't look at a three-line code sample and follow the logic (which I doubt - if you tried) people could write a demonstration of the flaw in, for example, Ruby, which you could cut and paste into another browser window and run on someone else's computer so you didn't need to worry about trojans.
If this was legit the code would look like this
CPUID = get_cpu_id
[...]
case CPUID
when 'Intel' ; enable_SSE2
when 'AMD' ; enable_SSE
else ; enable_nothing
end
Seriously, that's how complex it should look.
With some searching even a non-programmer could find that simply by searching for strings like SSE and the logic should be fairly clear.
Wow. Just wow. "I don't agree with you, so you must be trolling," is really rude, even for the internet. Consider not posting any more if you can't handle people who disagree with you.
It's not the fact that I disagree with you, it's the fact that you are wrong. It's not an opinion, it's a fact. Therefore, you are trolling or are mentally handicapped, because you are no longer ignorant, since you've been informed you are wrong by a number of different people.
I noticed you completely skipped over the part about how science and statistics are gathered. I put that there for a reason. It's to enlighten you to the fact that there IS A REASON wide swaths of random people are polled, and not just one or two people. It's because IT IS MORE ACCURATE.
Furthermore, if all it takes for something to be trustworthy is for a lot of people to endorse it, then I'd believe a hell of a lot of things, many of them conflicting. Christianity, atheism, evolution, creationism, old music is better, new music is better... the list could extend for a very long time. Trustworthiness is based on past results. Nothing more, nothing less. One company can be just as trustworthy as the entire Internet, and the entire Internet can be just as untrustworthy as one company.
It doesn't take a lot of people, it takes a lot of people who are experts in the field AND have no vested interest in the outcome. Everything you cite has lots of people who either not and expert, have a vested interest in the outcome, or BOTH.
Trustworthiness is not based solely on past results. Trustworthiness is a product of verification and honesty. In the context we are talking about, it's also based on interests. The company in question has a vested interest in certain results, therefore their "conclusions" for those results should be automatically suspect if they confirm their claims. People skew reported data all the time, sometimes on purpose, sometimes not... but it happens, and it happens a lot. The same thing happens with companies/corporations (though usually it's on purpose).
you automatically have a less accurate assessment
Bull. You may still have a very accurate assessment, that's why you get someone who you trust to check it over for you. It may happen that you trust the company making the product, it may happen that you trust your brother who works on the Linux kernel in his spare time. The important thing is that you get the information verified by a trustworthy source, not whether or not it comes from the vendor or someone independent.
How? How do you get someone you trust to check it over for you? I, you, your LInux kernel buddy doesn't have access to the code. How does he check it for you?
It's kinda funny, since you claim to want someone to check it for you that is expressly NOT the company involved. This is why I know you're trolling, now. You agree, you just want to get a rise out of people by being an idiot.
Good luck with that.
It's not a call, it's an instruction. Are you talking about intercepting it with virtualization? Or are you talking about modifying the benchmark code?
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
That's ALL you ever have, from ANYONE! Hell, if that's your reason for not trusting, I damn well hope you don't trust anyone at all. Anyone you know can only give you their own word that they will continue to be trustworthy in the future. That's what trust is!!
No, you're wrong. That's not all you ever have. You completely missed the most important part: "All you have is their own word." See that? That means there is no else to vouch for them. That's what closed source is. When it's open source, you have a whole fucking lot more than just their own word. You also have the word of every other person who has the capability to read and understand the code. If one of them is lying, you can bet another of them will raise a big stink about it. And that's totally ignoring the fact that a closed-source software vendor always has incentive to present their software more favorably than they should. It's their own product, only they know the details, a they're always going to be favorably biased towards it. It should be an understood fact that a closed source vendor will always lie about their software as much as they can get away with. And they can get away with quite a bit. You can't get away with any lying at all with open source.
There is no -1 Disagree mod. Slashdot.org/faq defines mod options. USE IT.