nVidia's response to Valve

nelg said:
Walt it's beginning to look like nVidia employees are the only potential nVidia customers left. After all I sure they a good employee discount. ;)

I all seriousness I look forward to hearing Gabe's response to this. IMHO nVidia picked the wrong guy to have a pissing match with.

Heh...I guess nVidia hires with a reverse Intelligence-Quotient discrimination policy...;)

Guys, I forgot to mention it but I noticed the gamersdepot article is "signed" by Derek Perez but the reprint of it on [H] is "signed" by Brian Burke--but the two statements are identical. Is everybody satisfied that this is a genuine nVidia PR statement? The content seems rather childish (the "beta driver" and "we're confused" ploy wearing a bit thin), but the multiple signatures seem to raise an additional doubt. Think it's a real statement?
 
nelg said:
Walt it's beginning to look like nVidia employees are the only potential nVidia customers left. After all I sure they a good employee discount. ;)

I all seriousness I look forward to hearing Gabe's response to this. IMHO nVidia picked the wrong guy to have a pissing match with.
I think Gabe is me new hero. 8)
 
WaltC said:
nelg said:
Walt it's beginning to look like nVidia employees are the only potential nVidia customers left. After all I sure they a good employee discount. ;)

I all seriousness I look forward to hearing Gabe's response to this. IMHO nVidia picked the wrong guy to have a pissing match with.

Heh...I guess nVidia hires with a reverse Intelligence-Quotient discrimination policy...;)

Guys, I forgot to mention it but I noticed the gamersdepot article is "signed" by Derek Perez but the reprint of it on [H] is "signed" by Brian Burke--but the two statements are identical. Is everybody satisfied that this is a genuine nVidia PR statement? The content seems rather childish (the "beta driver" and "we're confused" ploy wearing a bit thin), but the multiple signatures seem to raise an additional doubt. Think it's a real statement?
I think someone from nVidia would have noticed it by now and issued a correction, or some website is in contact with nVidia. (Didn't a few sites they were in communication with nVidia and received it? )
 
digitalwanderer said:
I think someone from nVidia would have noticed it by now and issued a correction, or some website is in contact with nVidia. (Didn't a few sites they were in communication with nVidia and received it? )

Yes, I agree it is probably valid--just seems so darn unprofessional--even down to different people apparently emailing out the same statement with each of them signing it...Ah, well...I guess I should be jaded by now as to what comes out of nVidia...the "100 million customer" line is just sad, though. The good thing is that the web sites did include some attribution to the statements even if it's totally unclear on who in nVidia actually wrote it...It just didn't sound like something an adult would write...but maybe that's just me...
 
It's really unbelievable watching Nvidia go from dumb to dumberer :oops: How far will this company go to save face/cheat/ make a buck? I would feel pretty low right now if I was employed @ Nvidia. ATI on the other hand is reaping the whirlwind. Looks like I won't be going back to an Nvidia card (if their still around) anytime soon...
 
WaltC said:
Heh...I guess nVidia hires with a reverse Intelligence-Quotient discrimination policy...;)

Guys, I forgot to mention it but I noticed the gamersdepot article is "signed" by Derek Perez but the reprint of it on [H] is "signed" by Brian Burke--but the two statements are identical. Is everybody satisfied that this is a genuine nVidia PR statement? The content seems rather childish (the "beta driver" and "we're confused" ploy wearing a bit thin), but the multiple signatures seem to raise an additional doubt. Think it's a real statement?

I like mine better...even has bad grammar.

"Since NVIDIA cards were not used to develop Half-Life 2(a game that pales to Doom 3 anyways) we do not get a chance to work with Valve on writing the shaders we like. We don't know what they did but it looks like they have intentionally tried to create a scenario that makes our products look bad. This is obvious since our relative performance on games like Unreal Tournament 2003 and Doom3 shows that The GeForce FX 5900 is by far the fastest graphics on the market today."
 
Uttar, how many other e-mails have you seen leaked from Nvidia? Funny how fast it leaked, eh?

I think that Valve tried the Det. 50 drivers and saw that they were altering code behind the applications back and producing better quality screen shots for screen captures.

After the stunt Nvidia pulled with Doom3 on ATI they now getting sweet justice.

While I think it was great to see an Official Nvidia response for once, I have lost my faith in Nvidia's "optimizations".

Edit: Looks like ATI will have to sell 100+ Million Video cards to the people who want to play half-life2.
 
This is the line that should bug developers:

"...The optimal code path for ATI and NVIDIA GPUs is different - so trying to test them with the same code path will always disadvantage one or the other. The default settings for each game have been chosen by both the developers and NVIDIA in order to produce the best results for our consumers. ..."

The reason we have DirectX and OpenGL is to isolate the developers from the internals of the hardware. It is mainly up to the hardware to make the code work well, since the graphics apis do not expose the specifics of the internals of the architectures of the graphics cards (at least not much, yeah there are a few caps flags exposed).

Example: I, as a developer, want a specific effect that one of my shaders produces. From my perspective, the card that gives the fastest output for my shader, with the best quality, wins. I don't want to spend a lot of time ($$) hacking around my working shaders, because some hardware can't handle it.

I can handle spending a "little" time trying to make it work better for a specific card, but at some point, I just have to say "screw it" and move on because of $$ (time).

I think the time factor (5x) spent to optimize is what is pissing Valve off, as it should, because a lot of times there is only a limited number of ways to make a shader produce a specific effect, thus leaving little room for software optimization in the first place.
 
WaltC said:
Joe DeFuria said:
(ripped from http://www.nvnews.net/)

And this from Uttar:

http://www.notforidiots.com/GPURW.php

nVidia has released the response as seen in the link. Particularly interesting, however, is this part of the e-mail sent to certain nVidia employees ( this was not posted at the given link ):

We have been working very closely with Valve on the development of Half Life 2 and tuning for NVIDIA GPU's. And until a week ago had been in close contact with their technical team. It appears that, in preparation for ATI's Shader Days conference, they have misinterpreted bugs associated with a beta version of our release 50 driver.

You also may have heard that Valve has closed a multi-million dollar marketing deal with ATI. Valve invited us to bid on an exclusive marketing arrangement but we felt the price tag was far too high. We elected not to participate. We have no evidence or reason to believe that Valve's presentation yesterday was influenced by their marketing relationship with ATI.

You know, if this is something nVidia's been sending its employees--my gosh--somebody at nVidia has gone bonkers and thinks that nVidia employees, potential nVidia 3d-card customers, and the online community are pure-T idiots....

Of course, that's why nVidia loves non-officially released betas--so that whenever they get caught cheating they can deny it as a "bug"--because what else can you expect from a beta...? OTOH, nVidia maintains that this buggy beta is good enough to declare their current officially released DX9 drivers "invalid" for HL2. Also, according to Newell's presentation as I read it, he directly stated that the reason ATi got the deal was because of its superior DX9 technology--not because nVidia did not "bid." (Shades of xBox2.) What Newell said as I gathered it is that nVidia wasn't asked to "participate" which ostensibly is why nVidia "elected" not to. I got the distinct impression from Newell that if the positions of the IHVs had been reversed from the hardware standpoint nVidia would have gotten the deal--because Valve based it on the best hardware for their software. And he amply demonstrated which hardware was best, I thought.

I wonder how many nVidia employees would actually believe this kind of an email (assuming it was actually sent out)...? But who knows...maybe in addition to providing a coat room for its employees nVidia also asks them to check their minds at the door each morning, as well...

1. nVidia seems to consider their employees as "pure-T idiots" indeed. You'd be frightened to say that they're giving this type of BS to their employees nearly non-stop...

As my source says though: The thinking ones don't even believe it for a second.

Their explanation of the 3DMarks03 cheats to employees was also a remarkable e-mail: Rare was so much BS put in so few lines.

2. Well, I don't about about that. I don't find it impossible that considering the situation, Valve would have offered the deal to $3M to nVidia or $1M to ATI or whatever - that because ATI, considering their hardware position, would have made the deal a lot easier to manage.
Although I'm really not sure what's the truth here - heck, if what they said in relation to 3DMarks03 cheats to their employees was the truth, then we're all complete morons :LOL:

3. The worse is that with all this crap, it seems to me management is actualy believing these e-mails. And that quite simply because, well, they still got to trust their employees... And it's higher-end employees sending e-mails to all employees...
So, what do we have here?
A mess, a complete mess for multiple things, that management is barely aware of.

And no, comparing this to 3DFX ain't original :p


Uttar
 
WaltC said:
How convenient, though, for nVidia to tell everyone that the 50's, which are not publicly available for anyone, are the "solution" whereas the current driver set (which is the one officially available) are "invalid" for HL2.
Not to defend nV or anything ;), but you may have noticed HL2 isn't "publicly available for anyone," either. :)
 
Not until September 30.

I would like to see Nvidia explain why ATI works find on the default code path and the FX does not.
 
DemoCoder said:
But my point is, I've looked at the output from Cg's compiler vs MS's, and it stinks.

Interesting - and if nVidia's Cg compiler its still that bad, I can't see how their brand new Det FX50 should things improve much (because the driver is more general in its approach, right?)

DemoCoder said:
I derive from this, that NVidia's drivers aren't really doing that good a job of dealing with shaders. If Valve can get a near 2x performance boost from "mixed mode" (which presumably means using DX9 partial precision hints), but using mixed mode required 5x the labor, I suspect Valve was hand-tweaking shaders, instead of letting NVidia's driver deal with the partial precision hints.

Hmmm, I thought that PP hints was only one part of what you have 'fix' in order for NV3x to work at its best. nVidia has confirmed that you really should try to use max four registers (in line with investigations done by somebody here). Oh, and another thing to note: their driver already tries to keep the registers count low (could be a bit of a nightmare, me thinks).
 
DemoCoder,

My understanding is that "mixed mode" is not comprised simply of lowering precision of the same shaders, but of a combination of the listed factors of: reducing precision for the DX 9 shaders, writing custom shaders for the NV3x that include re-balancing shaders to use texture lookups in place of some computations (I'd also be interested in how the NV3x friendly HLSL profile fits into this), and using shaders geared towards resembling DX 8/8.1 shaders (short, limited registers).

I don't think the performance benefit gain is mysterious, or has to do with the nVidia driver compiler/reordering capabilities failing to succeed as you refer to: the shaders responsible for the performance gains aren't output identical, or even necessarily output "almost identical". IOW, the performance gains are the result of things that a re-scheduler/optimizer can't do.

If you choose to trust the article at Anand at all, I believe it very specifically confirms this, even mentioning an increase in DX 8/8.1 level shaders in place of DX 9 for the NV3x path as part of the optimization, IIRC. I can understand why you might not, though, due to some technical slopiness in evidence there, so I'll refer to a slide from Valve which at least partially confirms my observation about the work not necessarily being the domain of the re-scheduler:

[url=http://www.tech-report.com/etc/2003q3/valve/index.x?pg=2 said:
A slide at Tech-Report, middle of page[/url]]
Special Mixed Mode for NV3X
  • Uses partial-precision registers where appropriate
  • Trades off texture fteches for pixel shader instruction count
  • Case-by-case shader code restructuring

I think the last point is a relatively "politically neutral" way of covering that other reductions to shader output quality besides that from fp16 usage. The NV3x could still use shaders that are effectively DX 8/8.1, but handle more of them than "DX 8 level" cards could.

...

That said, I do think that nVidia could certainly get an improved scheduling implementation in the "Det 50" drivers. I just don't think it would be associated with the performance gains I understand you to propose based on what was exhibited by the "DX 9" compared to "NV3x" HL2 performance results.

We should still, IMO, definitely investigate the shader behavior in any case (BTW, I largely agree with Rev's comments elsewhere about testing the Det 50's...I don't think politics should preclude technical analysis), but I don't blame, and am not surprised at, anyone for treating nVidia's assertions about this with complete distrust In my view, distrust is part of the nature of investigation, but must not be a replacement for it. No need to let a disgust with PR and management get in the way of looking into things like this, and reacting positively to...positive things IHvs are doing.

Actually, I'm curious about ATI's efforts in this regard as well, with the general optimizer that is being referred to all over the place (*wave* to OpenGL guy and Dio). Perhaps even in one article, which I think would be an extremely interesting opportunity for contrast, and at a critical juncture in the evolution of the 3D industry.

The cheating issues proposed for the Det 50 drivers can be investigated separately (though it definitely needs to be investigated and exposed accurately, I strongly feel, especially in contrast to valid work IHV(s) are doing).
 
DemoCoder said:
I still expect an assembly language programmer to beat a C compiler, but if the ratio were 2:1, I'd have serious questions about the C compiler's quality.

Optimisations are target based. For example if you choose a P4 target for compilation, you could get much faster code in some cases than if you choose a Pentium (original) target. HLSL doesn't choose targets, AFAIK, which means that the architecture that matches its standard optimisations has a lot to gain. I believe that's ATI's hardware. NVIDIA hardware needs completely different optimisations, that the HLSL compiler doesn't supply, which means that they have to do them at the assembly level, which is why drivers could have a big effects on the results.

Also the HLSL compiler is far from optimal in some cases, as I've learned coding for the shader contest. Naively coding for it could in some cases produce code that is not twice as slow but five times as slow as optimised code. Even for ATI hardware, I believe that it's easy to produce code that isn't optimal, if the vector, scalar and texture units aren't made to work concurrently in the best way possible.

That's also true for normal C coding, BTW. If you don't build your program knowing what it compiles to, you can stand to lose a lot of performance. I remember an old article in Dr. Dobbs that showed how rearranging a C math routine can result in huge speed improvements.

Optimisations in general are very hardware dependent. Even without shaders, a programmer should know that writing in multiples of 32 bytes to AGP is optimal on a P3 but for the P4 you should use multiples of 64; taking advantage of a vertex cache can speed vertex processing threefold -- D3DX does consider the cache size when optimising. So suggesting that optimisations shouldn't produce a great speedup is naive.
 
I already mentioned using texture lookup replacement. The most obvious example is normalization, or attentuation/pow() replacements.

But what do you mean by shader code restructuring? If by that, you mean reducing register count, moving code blocks around, substituting more optimal subexpressions, all of this can be done by compiler technology.

The only "tricks" I could see related to "code restructuring" which are not generally available to compilers is replacing expressions with approximations, e.g. numerical integration subsitutes, Newton-Rhaphson, etc since that would require the compiler to "recognize" fuzzy mathematical concepts which might not be detectable at compiler time and replace them with approximations. Another example is flat out disabling parts of the lighting equation: e.g. turn off per-pixel specular, switch to per-vertex calculations, leave off fresnel term for water, etc.





Like I said, I'd wait till I see Valve's actual shaders. But I can tell you that Cg's NV3x code generator is a waste-o-rama when it comes to registers or even generating peephole optimizations to reduce instruction count, that's why I have my doubts as to the quality of the translation between PS2.0 bytecode into NV3x internal assembly in NVidia's drivers. NVidia has a non-trivial job, because of their over complicated architecture and performance "gotchas" with respect to resource usage, whereas ATI's "DX9-like" architecture and single precision through the pipeline with no bottlenecks in register usage makes the optimization issue much easier.
 
DemoCoder said:
But I can tell you that Cg's NV3x code generator is a waste-o-rama when it comes to registers or even generating peephole optimizations to reduce instruction count, that's why I have my doubts as to the quality of the translation between PS2.0 bytecode into NV3x internal assembly in NVidia's drivers.

Indeed. If they have trouble doing it 'right' with a specific Cg NV3x_profile as compiler target, it just doesn't stand to much reason that their driver should/could improve that situation. Unless, of course, that their driver folks are superior to - and largely decoupled from - the Cg compiler folks. Which would be odd.
 
ET said:
Even for ATI hardware, I believe that it's easy to produce code that isn't optimal, if the vector, scalar and texture units aren't made to work concurrently in the best way possible.
While the (in-driver) compiler is getting a lot smarter, as with C, getting the high-level algorithm efficient is always going to be the programmer's job.

As ATI have said at many a developer presentation, get your algorithm right, don't do anything you don't need to do (writing destination alpha, calculating unused components of texture coordiantes, using interpolators where constants will do, calculating things in the PS that could be done in the VS, etc.), and let the driver worry about the rest.

As you can see, there's still MORE than enough for you to think about.
 
DemoCoder said:
But what do you mean by shader code restructuring? If by that, you mean reducing register count, moving code blocks around, substituting more optimal subexpressions, all of this can be done by compiler technology.
True, but you can't do that without the compiler having specific optimisations for specific hardware. That was my point. If you don't know the target hardware, you can't code optimally for it. That's not just a C vs. assembly issue. Even if you program in shader assembly, you still won't be optimal (possibly by a large factor) if you don't take into account the hardware architecture.

Dio said:
As ATI have said at many a developer presentation, get your algorithm right, don't do anything you don't need to do (writing destination alpha, calculating unused components of texture coordiantes, using interpolators where constants will do, calculating things in the PS that could be done in the VS, etc.), and let the driver worry about the rest.
If you want an example of HLSL compiler inefficiency, a condition of the form "if (a >= 0 && b >= 0)" would be converted by the compiler to tests that assign values to "boolean" registers (selecting between 0 and 1) and then doing arithmetic between them (add, multiply), and selecting on the result. That's A LOT of instructions for something that's equivalent to "if (min(a,b) >= 0)". Even that won't always create optimal code, because the compiler often uses "add,cmp" instead of "min", even though "min" is part of PS2.0.
 
That's an interesting point. It should be the compiler's job to spot that kind of thing though - not yours!
 
Joe DeFuria said:
(ripped from http://www.nvnews.net/)

Over the last 24 hours, there has been quite a bit of controversy over comments made by Gabe Newell of Valve at ATIs Shader Day.

Translation: It's a driver bug. No honestly, our new upcoming drivers will fix everything. Valve just hate us and are trying to make us look bad, but we don't think it's because ATI payed them a million bucks, no we don't and we don't want our customers to think that either. It's not our fault, please take pity on us!


nVidia has released the response as seen in the link. Particularly interesting, however, is this part of the e-mail sent to certain nVidia employees ( this was not posted at the given link ):


This reminds me of that email they sent out to all their employees (which also got leaked) catagorically denying that the NV30 was going to be cancelled. I do belive it was sent out just before Nvidia cancelled the NV30. :rolleyes:


Just when you think Nvidia can't go any lower, they manage to dig the whole they're standing in another six feet lower. Now they just look comically sad.
 
Back
Top