Creating SLI Profiles
As was mention earlier in this article, for nVidia SLI to work, the drivers have to have a profile pre-written before it can recognize an application and then use one of the SLI methods. So for new games to be recognized, the drivers need to be updated before obtaining any SLI benefits. Here is the list of games that nVidia currently has multi-GPU modes enabled in the drivers for (taken when article was written, full list here, list excludes compatibility mode):
Aquamark3 |
Halo |
Battlefield 1942 Desert Combat Mod |
Painkiller |
Battlefield Vietnam |
Sims 2 |
City of Heroes |
Star Wars: Knights of the Old Republic |
Code Creatures Pro |
Tomb Raider: Angel of Darkness |
Colin McRae Rally 4 Demo |
Tron 2.0 |
Command & Conquer Generals |
Unreal Engine 3 |
Doom3 |
Warhammer Dawn of War |
Far Cry |
3DMark 2003 Gold |
Ground Control 2 |
3DMark 2005 Gold |
Half Life 2 |
|
You don't need a masters degree to notice that's a short list. On the date this article was written it only contains 16 games, 4 benchmarks, and 1 game engine that doesn’t have any marketed games yet. nVidia has stated however that they “…will update the list frequently as new games are released and as we complete more testing and tuning on currently released games.” Now since this hardware was received for review, there hasn’t been any additional games added, or new drivers released. Not a very good sign for a hardware that needs software support to be effective. In response to this, nVidia has released details on how to edit and add new profiles to your existing drivers, allowing you to add SLI support for applications not in the drivers, and new applications that come out. You can find nVidia’s details on how to edit profiles here, and our quick walkthrough below.
1. The first step is to find the file that contains all of the profiles. The file is called nvapps.xml and in Windows XP is located in the X:\WINDOWS\System32 folder. You can open the file up in WordPad or any other application that opens XML files.
Inside you will find a list of profile information labeled using a tag system similar to HTML. A profile starts with a label tag that looks like : <PROFILE Label =”Game”> and ends with a </PROFILE> tag. Inside the profile label are the game executable identifier tags and settings for the multi-chip rendering mode.
2. To create a profile, copy and paste the following after any other profile in the nvapps.xml file:
<PROFILE Label="Profile_name">
<APPLICATION Label="Game_exectutable.exe"/>
<PROPERTY Label="multichip_rendering_mode" Value="Mode" Itemtype="predefined"/>
</PROFILE>
3. Replace the following values:
Profile_name – Whatever you want to call the profile.
Game_executable – The filename of the games .exe files
Mode – “1” for AFR, “2” for SFR and “4” for Compatibility Mode.
4. Save the file and reboot (in most cases, the profile would not apply if you do not reboot).
5. Test the application; use GPU Load Balancing in the display drivers to check the SLI mode.
As an example I used the game Nexus – The Jupiter Incident, a brand new game with some killer graphics that can have some low frame rates especially on large resolutions. For this game I inserted the following profile for Split Frame Rendering mode:
<PROFILE Label="Nexus">
<APPLICATION Label="nexus_DX8.exe"/>
<APPLICATION Label="nexus_DX9.exe"/>
<APPLICATION Label="nexus.exe"/>
<PROPERTY Label="multichip_rendering_mode" Value="2" Itemtype="predefined"/>
</PROFILE>
|
After rebooting I tested a generic flyby sequence of about 60 seconds of game play, recording the average FPS. Overall using SFR mode there was a gain of about 10 FPS. Not too shabby.
So overall it sounds pretty easy, so copy and paste, that’s all it takes to add a new application to the driver profiles, right? It’s too bad however that it didn't turn out so simple.
Not So Cut/Paste
Anyone who has read through the nVidia guide to SLI profiles, and tried it for themselves knows that there is a lot more information regarding SLI profiles that nVidia is not telling us.
For one, the Nexus – The Jupiter Incident example used above, when using AFR mode, there was no change in average FPS over using a single card. Now AFR supposedly is most efficient mode that should logically produce the highest frame rates.
To give you another example, my curiosity hit the roof when looking at the list of nVidia Approved SLI applications. Seeing 3DMark03 and 3DMark05 on the list, where was the still popular 3DMark2001SE? I opened up the nvapps.xml file, and actually found a profile for it. However it wasn’t using any of the prescribed mode annotation in the nVidia Applications Profile Guide (1 – AFR, 2 – SFR, 4 – Compatibility mode). It had instead “C00001”, a 6 character string which resembles Hex values. To my surprise there were many other games using similar character strings to denote the rendering mode. After testing 3DMark01SE with GPU Load Balancing on, it seems that the value “C00001” denotes a compatibility mode, as no load balancing lines were present at all. The following is a list of possible SLI modes if you go off of what is contained in the profiles of the nvapps.xml file (game listed if used to identify rendering mode):
SLI Mode |
Profile Designations |
AFR |
1, 2400401 (3DMark05), 3C00401 (Half Life 2), 400001 (3DMark03, UT2004) |
SFR |
2, 4C00002 (Far Cry) |
Compatability |
4, C00001 (3DMark2001SE) |
Unknown |
00020201, 00400001, 2431001, 2C10401 |
So now that I know that nVidia isn’t telling me the whole story on how to select rendering modes, I decided to trudge forward and alter the profile for 3DMark2001SE. I used the standard Compatibility Mode (“4”), AFR (“1”), and SFR (“2”) rand the benchmark and compared the scores.
As you can see, using AFR increased scores rather well, while SFR they dropped dramatically, almost 29%! More importantly, the image quality suffered greatly on both SLI rendering modes. Even though AFR produced higher scores, there were light artifacts in several game tests. Then when using SFR mode during one point in the Lobby - High Detail scene, I was shocked to see what looked like only one video card working during several scenes. The GPU load balancing lines were present during these scenes but anything below the Split Frame line was black. It was definitely a very odd situation to witness.
Yet Another Oddity
Recently I had a chance to beta test ArenaNet’s Guild Wars, a brand new game that should be launching in several months. I had been doing some profile testing on other games and had left the GPU Load Balancing setting on by accident. When I loaded up Guild Wars, to my surprise the green bar was twitching away in Split Frame Rendering mode. I quickly opened up the nvapps.xml file and found no profile for Guild Wars.
How could this be? According to nVidia, it couldn’t. So somehow Guild Wars was defaulting to SFR mode without the use of profiles within the drivers. Curious I decided to make a profile and try out several different mode settings.
At default with no profile the game would average around 30-35 FPS at 1600x1200 with all detail and 4xAA. After the profile was added and set to SFR mode, average FPS was the same. Using AFR the average FPS rose to 55-70, although the game would lockup randomly during game play. Next, the hex strings for AFR used for 3DMark03 (400001) produced frame rates of 60-80 (lockups after several minutes), and the hex string for 3DMark05 (2400401) produced frame rates of 65-140 (quick lockups). The 3DMark05 settings also produced much more GPU activity than any of the other settings. So why are the results so different if they are all supposedly using AFR? I believe the answer is locked inside of the short hex strings for those games nVidia has tested.Continued...
|