Appendix V. SLI and MultiGPU FrameRendering
Prev | Part III. Appendices | Next

## Appendix V. SLI and MultiGPU FrameRendering

This driver contains support for NVIDIA SLI FrameRendering and NVIDIA MultiGPU FrameRendering. Both of these technologies allow an OpenGL application to take advantage of multiple GPUs to improve visual performance.

The distinction between SLI and MultiGPU is straightforward. SLI is used to leverage the processing power of GPUs across two or more graphics cards, while MultiGPU is used to leverage the processing power of two GPUs colocated on the same graphics card. If you want to link together separate graphics cards, you should use the "SLI" X config option. Likewise, if you want to link together GPUs on the same graphics card, you should use the "MultiGPU" X config option. If you have two cards, each with two GPUs, and you wish to link them all together, you should use the "SLI" option.

In FreeBSD, with two GPUs SLI and MultiGPU can both operate in one of three modes: Alternate Frame Rendering (AFR), Split Frame Rendering (SFR), and Antialiasing (AA). When AFR mode is active, one GPU draws the next frame while the other one works on the frame after that. In SFR mode, each frame is split horizontally into two pieces, with one GPU rendering each piece. The split line is adjusted to balance the load between the two GPUs. AA mode splits antialiasing work between the two GPUs. Both GPUs work on the same scene and the result is blended together to produce the final frame. This mode is useful for applications that spend most of their time processing with the CPU and cannot benefit from AFR.

With four GPUs, the same options are applicable. AFR mode cycles through all four GPUs, each GPU rendering a frame in turn. SFR mode splits the frame horizontally into four pieces. AA mode splits the work between the four GPUs, allowing antialiasing up to 64x. With four GPUs SLI can also operate in an additional mode, Alternate Frame Rendering of Antialiasing. (AFR of AA). With AFR of AA, pairs of GPUs render alternate frames, each GPU in a pair doing half of the antialiasing work. Note that these scenarios apply whether you have four separate cards or you have two cards, each with two GPUs.

MultiGPU is enabled by setting the "MultiGPU" option in the X configuration file; see Appendix D, X Config Options for more details about the MultiGPU option.

The nvidia-xconfig utility can be used to set the MultiGPU option, rather than modifying the X configuration file by hand. For example:

        % nvidia-xconfig --multigpu=on

SLI is enabled by setting the "SLI" option in the X configuration file; see Appendix D, X Config Options for more details about the SLI option.

The nvidia-xconfig utility can be used to set the SLI option, rather than modifying the X configuration file by hand. For example:

        % nvidia-xconfig --sli=on

SLI requires identical PCI-Express graphics cards, a supported motherboard chipset, and in most cases a "video bridge" connecting the graphics cards. Note that no mobile GPUs are supported, and SLI on Quadro always requires a video bridge.

For the latest in supported SLI and MultiGPU configurations, including SLI- and Multi-GPU capable GPUs and SLI-capable motherboards, please see http://www.slizone.com.

Only one display can be used when SLI or MultiGPU is enabled. If X is configured to use multiple screens and screen 0 has SLI or MultiGPU enabled, the other screens will be disabled. TwinView is also not supported with SLI or MultiGPU. Please note that if SLI or MultiGPU is enabled, the GPUs used by that configuration are unavailable for single GPU rendering.

### V.1. Frequently Asked SLI and MultiGPU Questions

| Why is glxgears slower when SLI or MultiGPU is enabled?
| When SLI or MultiGPU is enabled, the NVIDIA driver must coordinate the operations of all GPUs when each new frame is swapped (made visible). For most applications, this GPU synchronization overhead is negligible. However, because glxgears renders so many frames per second, the GPU synchronization overhead consumes a significant portion of the total time, and the framerate is reduced.
| Why is Doom 3 slower when SLI or MultiGPU is enabled?

The NVIDIA Accelerated FreeBSD Driver Set does not automatically detect the optimal SLI or MultiGPU settings for games such as Doom 3 and Quake 4. To work around this issue, the environment variable __GL_DOOM3 can be set to tell OpenGL that Doom 3's optimal settings should be used. In Bash, this can be done in the same command that launches Doom 3 so the environment variable does not remain set for other OpenGL applications started in the same session:

        % __GL_DOOM3=1 doom3

Doom 3's startup script can also be modified to set this environment variable:

        #!/bin/sh
        # Needed to make symlinks/shortcuts work.
        # the binaries must run with correct working directory
        cd "/usr/local/games/doom3/"
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
        export __GL_DOOM3=1
        exec ./doom.x86 "$@"

This environment variable is temporary and will be removed in the future.

Prev | Up | Next
Appendix U. The XRandR Extension | Home | Appendix W. Frame Lock and Genlock